diff options
author | Dan Gohman <gohman@apple.com> | 2009-01-06 22:53:52 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2009-01-06 22:53:52 +0000 |
commit | 2c91d102ec29bc766b7172a3062d399dc12640fe (patch) | |
tree | b98481838c8f6a38f1ac8ba0227b2965333a8281 /test/CodeGen | |
parent | 5d315989542ffe720d9a835010bd7be957e6a830 (diff) |
Fix a bug in ComputeLinearIndex computation handling multi-level
aggregate types. Don't increment the current index after reaching
the end of a struct, as it will already be pointing at
one-past-the end. This fixes PR3288.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61828 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen')
-rw-r--r-- | test/CodeGen/Generic/pr3288.ll | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/test/CodeGen/Generic/pr3288.ll b/test/CodeGen/Generic/pr3288.ll new file mode 100644 index 0000000000..ff0384db6d --- /dev/null +++ b/test/CodeGen/Generic/pr3288.ll @@ -0,0 +1,67 @@ +; RUN: llvm-as < %s | llc +; PR3288 + +define void @a() { + %i = insertvalue [2 x [2 x i32]] undef, [2 x i32] undef, 1 + ret void +} +define void @b() { + %i = insertvalue {{i32,float},{i16,double}} undef, {i16,double} undef, 1 + ret void +} +define void @c() { + %i = insertvalue [2 x [2 x i32]] zeroinitializer, [2 x i32] zeroinitializer, 1 + ret void +} +define void @d() { + %i = insertvalue {{i32,float},{i16,double}} zeroinitializer, {i16,double} zeroinitializer, 1 + ret void +} +define void @e() { + %i = insertvalue [2 x [2 x i32]] undef, [2 x i32] undef, 0 + ret void +} +define void @f() { + %i = insertvalue {{i32,float},{i16,double}} undef, {i32,float} undef, 0 + ret void +} +define void @g() { + %i = insertvalue [2 x [2 x i32]] zeroinitializer, [2 x i32] zeroinitializer, 0 + ret void +} +define void @h() { + %i = insertvalue {{i32,float},{i16,double}} zeroinitializer, {i32,float} zeroinitializer, 0 + ret void +} +define void @ax() { + %i = insertvalue [2 x [2 x i32]] undef, i32 undef, 1, 1 + ret void +} +define void @bx() { + %i = insertvalue {{i32,float},{i16,double}} undef, double undef, 1, 1 + ret void +} +define void @cx() { + %i = insertvalue [2 x [2 x i32]] zeroinitializer, i32 zeroinitializer, 1, 1 + ret void +} +define void @dx() { + %i = insertvalue {{i32,float},{i16,double}} zeroinitializer, double zeroinitializer, 1, 1 + ret void +} +define void @ex() { + %i = insertvalue [2 x [2 x i32]] undef, i32 undef, 0, 1 + ret void +} +define void @fx() { + %i = insertvalue {{i32,float},{i16,double}} undef, float undef, 0, 1 + ret void +} +define void @gx() { + %i = insertvalue [2 x [2 x i32]] zeroinitializer, i32 zeroinitializer, 0, 1 + ret void +} +define void @hx() { + %i = insertvalue {{i32,float},{i16,double}} zeroinitializer, float zeroinitializer, 0, 1 + ret void +} |