diff options
author | Chris Lattner <sabre@nondot.org> | 2007-12-28 06:24:31 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-12-28 06:24:31 +0000 |
commit | c48b138869fdf0aac87c924366a455aacf6cde0f (patch) | |
tree | 33a5d05940fed654fb17e5644840f0013944cc33 /lib/Transforms/Scalar/InstructionCombining.cpp | |
parent | 166a268656c6e0e2f32c92f7bc021286ad669c9a (diff) |
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
Diffstat (limited to 'lib/Transforms/Scalar/InstructionCombining.cpp')
-rw-r--r-- | lib/Transforms/Scalar/InstructionCombining.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/Transforms/Scalar/InstructionCombining.cpp b/lib/Transforms/Scalar/InstructionCombining.cpp index d4278e3a7c..fc1443a9be 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; |