[PATCH] D36592: [BDCE] clear poison generators after turning a value into zero (PR33695, PR34037)

Hal Finkel via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 10 19:50:37 PDT 2017


hfinkel added inline comments.


================
Comment at: lib/Transforms/Scalar/BDCE.cpp:50
+  for (User *U : I->users()) {
+    if (auto *UserInst = dyn_cast<Instruction>(U)) {
+      // NSW/NUW and exact are based on operands that might have changed.
----------------
Just to make this a little better: if any of the users are a store, call, invoke, atomicrmw, atomiccmpxchg, or return - anything that will make the value externally observable, we can stop recursing to clear the flags.


================
Comment at: lib/Transforms/Scalar/BDCE.cpp:54
+
+      // FIXME: llvm.assume and metadata may also be invalid now.
+
----------------
I can't think of any current metadata that would be invalidated, but assumes might indeed be.


https://reviews.llvm.org/D36592





More information about the llvm-commits mailing list