diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2022-05-26 17:59:27 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2022-05-26 18:03:35 +0200 |
commit | c8eb83f2d007dd3279a9ff459f3464a3cd9568b6 (patch) | |
tree | b3438f08c16db5ab955ce1732fd631c4f3d2e612 /llvm/lib/Transforms/Instrumentation/ControlHeightReduction.cpp | |
parent | afe49934a68afdf44dcd48489d9f5e820bc5424d (diff) | |
download | llvm-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.cpp | 3 |
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) { |