aboutsummaryrefslogtreecommitdiffstats
path: root/test/CodeGen/X86/xor-icmp.ll
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2010-02-22 23:34:00 +0000
committerEvan Cheng <evan.cheng@apple.com>2010-02-22 23:34:00 +0000
commit6e5dfd4bf5205d5f84d958c9636bc0f57c23b96a (patch)
tree45ab0572ebd24f87e676788c693c21f9db5638f6 /test/CodeGen/X86/xor-icmp.ll
parent20df2420f7997cdb69c21f6bff27559cb09f7be2 (diff)
downloadexternal_llvm-6e5dfd4bf5205d5f84d958c9636bc0f57c23b96a.zip
external_llvm-6e5dfd4bf5205d5f84d958c9636bc0f57c23b96a.tar.gz
external_llvm-6e5dfd4bf5205d5f84d958c9636bc0f57c23b96a.tar.bz2
Instcombine constant folding can normalize gep with negative index to index with large offset. When instcombine objsize checking transformation sees these geps where the offset seemingly point out of bound, it should just return "i don't know" rather than asserting.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96825 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86/xor-icmp.ll')
-rw-r--r--test/CodeGen/X86/xor-icmp.ll31
1 files changed, 31 insertions, 0 deletions
diff --git a/test/CodeGen/X86/xor-icmp.ll b/test/CodeGen/X86/xor-icmp.ll
index a6bdb13..2d75c5d 100644
--- a/test/CodeGen/X86/xor-icmp.ll
+++ b/test/CodeGen/X86/xor-icmp.ll
@@ -1,5 +1,6 @@
; RUN: llc < %s -march=x86 | FileCheck %s -check-prefix=X32
; RUN: llc < %s -march=x86-64 | FileCheck %s -check-prefix=X64
+; rdar://7367229
define i32 @t(i32 %a, i32 %b) nounwind ssp {
entry:
@@ -34,3 +35,33 @@ bb1: ; preds = %entry
declare i32 @foo(...)
declare i32 @bar(...)
+
+define i32 @t2(i32 %x, i32 %y) nounwind ssp {
+; X32: t2:
+; X32: cmpl
+; X32: sete
+; X32: cmpl
+; X32: sete
+; X32-NOT: xor
+; X32: je
+
+; X64: t2:
+; X64: testl
+; X64: sete
+; X64: testl
+; X64: sete
+; X64-NOT: xor
+; X64: je
+entry:
+ %0 = icmp eq i32 %x, 0 ; <i1> [#uses=1]
+ %1 = icmp eq i32 %y, 0 ; <i1> [#uses=1]
+ %2 = xor i1 %1, %0 ; <i1> [#uses=1]
+ br i1 %2, label %bb, label %return
+
+bb: ; preds = %entry
+ %3 = tail call i32 (...)* @foo() nounwind ; <i32> [#uses=0]
+ ret i32 undef
+
+return: ; preds = %entry
+ ret i32 undef
+}