aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib
diff options
context:
space:
mode:
authorchenglin.bi <chenglin.bi@linaro.org>2022-11-30 10:10:45 +0800
committerchenglin.bi <chenglin.bi@linaro.org>2022-11-30 10:14:17 +0800
commitf2973327496fc966c4e895973400c99d6bd63aa2 (patch)
tree48e8f8b0b4a85035c42c9adaf99464e5f42a8b9c /llvm/lib
parent9e0f9f113248093e737c4cf5450f0a3c2bcd90ba (diff)
downloadllvm-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.cpp4
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()))