aboutsummaryrefslogtreecommitdiffstats
path: root/test/Analysis
diff options
context:
space:
mode:
authorWojciech Matyjewicz <wmatyjewicz@fastmail.fm>2008-06-02 17:26:12 +0000
committerWojciech Matyjewicz <wmatyjewicz@fastmail.fm>2008-06-02 17:26:12 +0000
commite170945325df517fe72c73da2797f962ef7bb144 (patch)
tree9c370b392634c81157b1ea1af941e872f60b3c49 /test/Analysis
parent70b378aaa30ab99163d6de67b09b2730e07beb04 (diff)
downloadexternal_llvm-e170945325df517fe72c73da2797f962ef7bb144.zip
external_llvm-e170945325df517fe72c73da2797f962ef7bb144.tar.gz
external_llvm-e170945325df517fe72c73da2797f962ef7bb144.tar.bz2
Fixes PR2395. Looking for a constant in a GEP tail (when the first GEP
is longer than the second one) should stop after finding one. Added break instruction guarantees it. It also changes difference between offsets to absolute value of this difference in the condition. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51875 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Analysis')
-rw-r--r--test/Analysis/BasicAA/2008-06-02-GEPTailCrash.ll15
1 files changed, 15 insertions, 0 deletions
diff --git a/test/Analysis/BasicAA/2008-06-02-GEPTailCrash.ll b/test/Analysis/BasicAA/2008-06-02-GEPTailCrash.ll
new file mode 100644
index 0000000..40d1e32
--- /dev/null
+++ b/test/Analysis/BasicAA/2008-06-02-GEPTailCrash.ll
@@ -0,0 +1,15 @@
+; RUN: llvm-as < %s | opt -gvn -disable-output
+; PR2395
+
+target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32"
+target triple = "i686-pc-linux-gnu"
+ %struct.S291 = type <{ %union.anon, i32 }>
+ %union.anon = type { }
+@a291 = external global [5 x %struct.S291] ; <[5 x %struct.S291]*> [#uses=2]
+
+define void @test291() nounwind {
+entry:
+ store i32 1138410269, i32* getelementptr ([5 x %struct.S291]* @a291, i32 0, i32 2, i32 1)
+ %tmp54 = load i32* bitcast (%struct.S291* getelementptr ([5 x %struct.S291]* @a291, i32 0, i32 2) to i32*), align 4 ; <i32> [#uses=0]
+ unreachable
+}