[PATCH] D30429: [JumpThread] Simplify CmpInst-as-Condition branch-folding a bit.
Xin Tong via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 27 14:08:01 PST 2017
trentxintong created this revision.
Simplify CmpInst-as-Condition branch-folding a bit.
https://reviews.llvm.org/D30429
Files:
lib/Transforms/Scalar/JumpThreading.cpp
Index: lib/Transforms/Scalar/JumpThreading.cpp
===================================================================
--- lib/Transforms/Scalar/JumpThreading.cpp
+++ lib/Transforms/Scalar/JumpThreading.cpp
@@ -809,7 +809,12 @@
// TODO: This should be extended to handle switches as well.
BranchInst *CondBr = dyn_cast<BranchInst>(BB->getTerminator());
Constant *CondConst = dyn_cast<Constant>(CondCmp->getOperand(1));
- if (CondBr && CondConst && CondBr->isConditional()) {
+ if (CondBr && CondConst) {
+ // We should have returned as soon as we turn a conditional branch to
+ // unconditional. Because its no longer interesting as far as jump
+ // threading is concerned.
+ assert(CondBr->isConditional() && "Threading on unconditional terminator");
+
LazyValueInfo::Tristate Ret =
LVI->getPredicateAt(CondCmp->getPredicate(), CondCmp->getOperand(0),
CondConst, CondBr);
@@ -832,10 +837,12 @@
}
return true;
}
- }
- if (CondBr && CondConst && TryToUnfoldSelect(CondCmp, BB))
- return true;
+ // We did not manage to simplify this branch, try to see whether
+ // CondCmp depends on a known phi-select pattern.
+ if (TryToUnfoldSelect(CondCmp, BB))
+ return true;
+ }
}
// Check for some cases that are worth simplifying. Right now we want to look
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D30429.89934.patch
Type: text/x-patch
Size: 1402 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170227/0cfc8b4d/attachment.bin>
More information about the llvm-commits
mailing list