If we don't know anything about the alignment of a pointer, Align(1) is still correct: all pointers are at least 1-byte aligned.
The changes to Loads.cpp are messy; I'm not sure what the original intent was. It looks like the logic in question originates from D9791.
As you noted, this seems wrong. I think this allows wrong results for llvm::isDereferenceableAndAlignedPointer queries. What happens if you remove this boosting?
From D9791:
I think this is OK for pointers accessed by loads without specified alignment but not for "pointers" in the general sense. If you look at the AttributorAttributes.cpp change, the function there does something similar to the getBaseAlign on the left but it only does so for pointers accessed without specified alignment. (= I think I came to this conclusion for the second time.)