aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2007-12-28 06:24:31 +0000
committerChris Lattner <sabre@nondot.org>2007-12-28 06:24:31 +0000
commitc48b138869fdf0aac87c924366a455aacf6cde0f (patch)
tree33a5d05940fed654fb17e5644840f0013944cc33
parent166a268656c6e0e2f32c92f7bc021286ad669c9a (diff)
downloadexternal_llvm-c48b138869fdf0aac87c924366a455aacf6cde0f.zip
external_llvm-c48b138869fdf0aac87c924366a455aacf6cde0f.tar.gz
external_llvm-c48b138869fdf0aac87c924366a455aacf6cde0f.tar.bz2
disable this instcombine xform, it miscompiles:
define i32 @main() { entry: %z = alloca i32 ; <i32*> [#uses=2] store i32 0, i32* %z %tmp = load i32* %z ; <i32> [#uses=1] %sub = sub i32 %tmp, 1 ; <i32> [#uses=1] %cmp = icmp ult i32 %sub, 0 ; <i1> [#uses=1] %retval = select i1 %cmp, i32 1, i32 0 ; <i32> [#uses=1] ret i32 %retval } into ret 1, instead of ret 0. Christopher, please investigate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45383 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Transforms/Scalar/InstructionCombining.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/Transforms/Scalar/InstructionCombining.cpp b/lib/Transforms/Scalar/InstructionCombining.cpp
index d4278e3..fc1443a 100644
--- a/lib/Transforms/Scalar/InstructionCombining.cpp
+++ b/lib/Transforms/Scalar/InstructionCombining.cpp
@@ -4835,9 +4835,11 @@ Instruction *InstCombiner::visitICmpInst(ICmpInst &I) {
if (ConstantInt *CI = dyn_cast<ConstantInt>(Op1)) {
Value *A, *B;
+#if 0
// (icmp cond (sub A B) 0) -> (icmp cond A B)
if (CI->isNullValue() && match(Op0, m_Sub(m_Value(A), m_Value(B))))
return new ICmpInst(I.getPredicate(), A, B);
+#endif
switch (I.getPredicate()) {
default: break;