aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Instrumentation/ControlHeightReduction.cpp
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2022-05-26 17:59:27 +0200
committerNikita Popov <nikita.ppv@gmail.com>2022-05-26 18:03:35 +0200
commitc8eb83f2d007dd3279a9ff459f3464a3cd9568b6 (patch)
treeb3438f08c16db5ab955ce1732fd631c4f3d2e612 /llvm/lib/Transforms/Instrumentation/ControlHeightReduction.cpp
parentafe49934a68afdf44dcd48489d9f5e820bc5424d (diff)
downloadllvm-c8eb83f2d007dd3279a9ff459f3464a3cd9568b6.zip
llvm-c8eb83f2d007dd3279a9ff459f3464a3cd9568b6.tar.gz
llvm-c8eb83f2d007dd3279a9ff459f3464a3cd9568b6.tar.bz2
[ControlHeightReduction] Use logical and
Use logical instead of bitwise and to combine conditions, to avoid propagating poison from a later condition if an earlier one is already false. This avoids introducing branch on poison. Differential Revision: https://reviews.llvm.org/D125898
Diffstat (limited to 'llvm/lib/Transforms/Instrumentation/ControlHeightReduction.cpp')
-rw-r--r--llvm/lib/Transforms/Instrumentation/ControlHeightReduction.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Instrumentation/ControlHeightReduction.cpp b/llvm/lib/Transforms/Instrumentation/ControlHeightReduction.cpp
index 2d1b762..9611342 100644
--- a/llvm/lib/Transforms/Instrumentation/ControlHeightReduction.cpp
+++ b/llvm/lib/Transforms/Instrumentation/ControlHeightReduction.cpp
@@ -1981,7 +1981,8 @@ void CHR::addToMergedCondition(bool IsTrueBiased, Value *Cond,
!isGuaranteedNotToBeUndefOrPoison(Cond))
Cond = IRB.CreateFreeze(Cond);
- MergedCondition = IRB.CreateAnd(MergedCondition, Cond);
+ // Use logical and to avoid propagating poison from later conditions.
+ MergedCondition = IRB.CreateLogicalAnd(MergedCondition, Cond);
}
void CHR::transformScopes(SmallVectorImpl<CHRScope *> &CHRScopes) {