[PATCH] D93998: [InstSimplify] Fold out-of-bounds shift to poison

Juneyoung Lee via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 4 18:10:45 PST 2021


aqjune added inline comments.


================
Comment at: llvm/test/Transforms/InstCombine/shift.ll:1724
+; CHECK-NEXT:    [[G18:%.*]] = getelementptr i177*, i177** [[A2:%.*]], i64 poison
+; CHECK-NEXT:    store i177** [[G18]], i177*** undef, align 8
 ; CHECK-NEXT:    ret i177 0
----------------
aqjune wrote:
> nikic wrote:
> > A peculiar regression. Not sure how this folded before, but we're clearly missing a fold here: https://llvm.godbolt.org/z/89bah8 Poison can fold to poison: https://alive2.llvm.org/ce/z/7Nwdri Undef can fold to base pointer: https://alive2.llvm.org/ce/z/y6NLvJ Undef can't fold to undef: https://alive2.llvm.org/ce/z/emLp_H
> The source program looks really interesting - it has gep with i1 index..!
> I guess %G18 should have been folded like this:
> gep %A2, i1 %C8 -> gep %A2, i1 undef -> gep %A2, i64 0 (by constfold sext undef) -> gep %A2
> With poison, constfold sext poison is poison, hence it resulted in here.
> I'll make a patch that makes gep poison -> poison.
It should work now: https://github.com/llvm/llvm-project/commit/f665a8c5b8b42d88f89e1a3594b7d410ef206c32


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D93998/new/

https://reviews.llvm.org/D93998



More information about the llvm-commits mailing list