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?
; 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
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
+}