Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
llvm/test/Transforms/GVN/no_speculative_loads_with_asan.ll | ||
---|---|---|
6 | Q: isn't %i8 based on gep ptr %i, 1 while %i3 is based on get ptr %i, 2? Aren't those different addresses? Or is it because it's a 16b load (so the two adjacent 8bits)? |
llvm/test/Transforms/NewGVN/no_speculative_loads_with_asan.ll | ||
---|---|---|
19–20 | I think these two instructions show that this whole test is kind of pointless IMO. It's a copy of llvm/test/Transforms/GVN/no_speculative_loads_with_asan.ll, but using newgvn rather than gvn (unless I messed something up by converting this from -O3. The @TestNoAsan case is the same as the @TestAsan case, so it just shows that NewGVN cannot elide redundant non-local loads. Am I understanding correctly? |
llvm/test/Transforms/GVN/no_speculative_loads_with_asan.ll | ||
---|---|---|
6 | %i8 is an out of bounds load which can be folded to poison (which then allows eliding the phi). | |
llvm/test/Transforms/NewGVN/no_speculative_loads_with_asan.ll | ||
19–20 | Yes, load folding in NewGVN is incomplete. Your new test it fine (the previous one was broken, because it did not actually test newgvn). |
Q: isn't %i8 based on gep ptr %i, 1 while %i3 is based on get ptr %i, 2? Aren't those different addresses? Or is it because it's a 16b load (so the two adjacent 8bits)?