diff options
author | chenglin.bi <chenglin.bi@linaro.org> | 2022-11-30 10:10:45 +0800 |
---|---|---|
committer | chenglin.bi <chenglin.bi@linaro.org> | 2022-11-30 10:14:17 +0800 |
commit | f2973327496fc966c4e895973400c99d6bd63aa2 (patch) | |
tree | 48e8f8b0b4a85035c42c9adaf99464e5f42a8b9c /llvm/lib | |
parent | 9e0f9f113248093e737c4cf5450f0a3c2bcd90ba (diff) | |
download | llvm-f2973327496fc966c4e895973400c99d6bd63aa2.zip llvm-f2973327496fc966c4e895973400c99d6bd63aa2.tar.gz llvm-f2973327496fc966c4e895973400c99d6bd63aa2.tar.bz2 |
[InstSimplify] Fold (X || Y) ? X : Y --> X
(X || Y) ? X : Y --> X
https://alive2.llvm.org/ce/z/oRQJee
Reviewed By: spatel
Differential Revision: https://reviews.llvm.org/D138815
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Analysis/InstructionSimplify.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/InstructionSimplify.cpp b/llvm/lib/Analysis/InstructionSimplify.cpp index 419a344..2190f20 100644 --- a/llvm/lib/Analysis/InstructionSimplify.cpp +++ b/llvm/lib/Analysis/InstructionSimplify.cpp @@ -4555,6 +4555,10 @@ static Value *simplifySelectInst(Value *Cond, Value *TrueVal, Value *FalseVal, if (match(TrueVal, m_One()) && match(FalseVal, m_ZeroInt())) return Cond; + // (X || Y) ? X : Y --> X (commuted 2 ways) + if (match(Cond, m_c_LogicalOr(m_Specific(TrueVal), m_Specific(FalseVal)))) + return TrueVal; + // (X || Y) ? false : X --> false (commuted 2 ways) if (match(Cond, m_c_LogicalOr(m_Specific(FalseVal), m_Value())) && match(TrueVal, m_ZeroInt())) |