[PATCH] D69442: [CVP] prevent propagating poison when substituting edge values into a phi (PR43802)

Nikita Popov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 25 14:02:52 PDT 2019


nikic added inline comments.


================
Comment at: llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp:201
+  if (auto *CommonInst = dyn_cast<Instruction>(CommonValue))
+    CommonInst->dropPoisonGeneratingFlags();
   P->replaceAllUsesWith(CommonValue);
----------------
nikic wrote:
> I don't think this is sufficient, as poison might come from an earlier instruction CommonValue depends on.
After looking at the getEdgeValueLocal() implementation, it looks like this should be sufficient after all. The reasoning along the lines of "What value does Y=f(X) given X==C" is only performed for direct users of X.


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

https://reviews.llvm.org/D69442





More information about the llvm-commits mailing list