diff options
author | Wojciech Matyjewicz <wmatyjewicz@fastmail.fm> | 2008-06-02 17:26:12 +0000 |
---|---|---|
committer | Wojciech Matyjewicz <wmatyjewicz@fastmail.fm> | 2008-06-02 17:26:12 +0000 |
commit | 98e3a6829aaf070a8893a164d6dc8c75f9f9feaa (patch) | |
tree | 9c370b392634c81157b1ea1af941e872f60b3c49 /test/Analysis | |
parent | 370a25c16af4394c2e800d63f9c7c0350f868948 (diff) | |
download | external_llvm-98e3a6829aaf070a8893a164d6dc8c75f9f9feaa.zip external_llvm-98e3a6829aaf070a8893a164d6dc8c75f9f9feaa.tar.gz external_llvm-98e3a6829aaf070a8893a164d6dc8c75f9f9feaa.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.ll | 15 |
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 +} |