mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-17 21:29:20 +00:00
Implement PR1822
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44318 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d91cbf352a
commit
cfa597569d
@ -7326,6 +7326,13 @@ Instruction *InstCombiner::visitSelectInst(SelectInst &SI) {
|
||||
return BinaryOperator::createOr(NotCond, TrueVal);
|
||||
}
|
||||
}
|
||||
|
||||
// select a, b, a -> a&b
|
||||
// select a, a, b -> a|b
|
||||
if (CondVal == TrueVal)
|
||||
return BinaryOperator::createOr(CondVal, FalseVal);
|
||||
else if (CondVal == FalseVal)
|
||||
return BinaryOperator::createAnd(CondVal, TrueVal);
|
||||
}
|
||||
|
||||
// Selecting between two integer constants?
|
||||
|
@ -1,8 +1,7 @@
|
||||
; This test makes sure that these instructions are properly eliminated.
|
||||
; PR1822
|
||||
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | \
|
||||
; RUN: not grep select
|
||||
; END.
|
||||
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | not grep select
|
||||
|
||||
implementation
|
||||
|
||||
@ -180,3 +179,12 @@ short %test22(int %x) {
|
||||
ret short %retval
|
||||
}
|
||||
|
||||
bool %test23(bool %a, bool %b) {
|
||||
%c = select bool %a, bool %b, bool %a
|
||||
ret bool %c
|
||||
}
|
||||
|
||||
bool %test24(bool %a, bool %b) {
|
||||
%c = select bool %a, bool %a, bool %b
|
||||
ret bool %c
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user