Since D9791 we take alignment into account to decide if it's safe to speculate load. Now pointer has to be both dereferenceable and properly aligned to be speculative loadable. It means that we want to support align attribute everywhere we support dereferenceable attribute.
Align attribute was supported for function arguments only. Support this attribute for return values as well.
The fact your changing the IR parser and not the IR writer, bitcode parser, or bitcode writer seems mildly suspect. Have you tested the ability to round trip through both IR and Bitcode?