[PATCH] D33257: [JumpThreading] Dont RAUW condition if guards in block

Max Kazantsev via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed May 17 22:00:46 PDT 2017


mkazantsev added inline comments.


================
Comment at: lib/Transforms/Scalar/JumpThreading.cpp:270
+    // two levels of uses, just check for presence of guards within the basic block.
+    auto *BB = Cond->getParent();
+    for (auto &I: *BB)
----------------
anna wrote:
> mkazantsev wrote:
> > Should we check all dominating blocks as well?
> No, we don't need to check blocks dominating BB because the bug occurs when guard/assume *use* the `Cond`. Since defs dominate uses, we are fine.
> Also, we don't need to check for uses  in blocks dominated by `BB` because starting from the point of BB's terminator (i.e. the context instruction passed into LVI) and iterating forward, we can safely replace the uses of `Cond` with `Val` (returned by LVI). 
> 
> The issue is when we try to replaces uses within the block BB where `Cond` is defined.
Ok, thanks for explanation!


https://reviews.llvm.org/D33257





More information about the llvm-commits mailing list