diff options
author | Sanjay Patel <spatel@rotateright.com> | 2021-05-20 11:32:03 -0400 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2021-05-20 12:12:21 -0400 |
commit | f34311c4024d07246128352241ff360173c68f87 (patch) | |
tree | be1d61e5c9fac289613799fc1aaeffcd99b756a2 /llvm/lib/Bitcode/Reader/BitcodeReader.cpp | |
parent | ee4055cf23e7c7c5e2b91aefbbf10aa23754ade9 (diff) | |
download | llvm-f34311c4024d07246128352241ff360173c68f87.zip llvm-f34311c4024d07246128352241ff360173c68f87.tar.gz llvm-f34311c4024d07246128352241ff360173c68f87.tar.bz2 |
[GlobalOpt] recompute alignments for loads and stores of updated globals
GlobalOpt can slice structs/arrays and change GEPs in the process,
but it was not updating alignments for load/store users. This
eventually causes the crashing seen in:
https://llvm.org/PR49661
https://llvm.org/PR50253
On x86, this required SLP+codegen to create an aligned vector
store on an invalid address. The bugs would be easier to
demonstrate on a target with stricter alignment requirements.
I'm not sure if this is a complete solution. The alignment
updating code is adapted from InstCombine, so I assume that
part is tested and good.
Differential Revision: https://reviews.llvm.org/D102552
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
0 files changed, 0 insertions, 0 deletions