SROA: preserve alignment tags on loads and stores.

When splitting up an alloca's uses we were dropping any explicit
alignment tags, which means they default to the ABI-required default
alignment and this can cause miscompiles if the real value was smaller.

Also refactor the TBAA metadata into a parent class since it's shared by
both children anyway.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@349465 91177308-0d34-0410-b5e6-96231b3b80d8
2 files changed