Add a corollary test for PR14572. We got this code path correct already.
authorChandler Carruth <chandlerc@gmail.com>
Sat, 15 Dec 2012 09:31:54 +0000 (09:31 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Sat, 15 Dec 2012 09:31:54 +0000 (09:31 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170271 91177308-0d34-0410-b5e6-96231b3b80d8

test/Transforms/SROA/basictest.ll

index ba93e04a51db017af25683449e591933095b55d8..7856a7e4396843ea21bb1e972b17be41a1052574 100644 (file)
@@ -1177,10 +1177,10 @@ entry:
   ret void
 }
 
-define <3 x i8> @PR14572(i32 %x) {
+define <3 x i8> @PR14572.1(i32 %x) {
 ; Ensure that a split integer store which is wider than the type size of the
 ; alloca (relying on the alloc size padding) doesn't trigger an assert.
-; CHECK: @PR14572
+; CHECK: @PR14572.1
 
 entry:
   %a = alloca <3 x i8>, align 4
@@ -1192,3 +1192,19 @@ entry:
   ret <3 x i8> %y
 ; CHECK: ret <3 x i8>
 }
+
+define i32 @PR14572.2(<3 x i8> %x) {
+; Ensure that a split integer load which is wider than the type size of the
+; alloca (relying on the alloc size padding) doesn't trigger an assert.
+; CHECK: @PR14572.2
+
+entry:
+  %a = alloca <3 x i8>, align 4
+; CHECK-NOT: alloca
+
+  store <3 x i8> %x, <3 x i8>* %a, align 1
+  %cast = bitcast <3 x i8>* %a to i32*
+  %y = load i32* %cast, align 4
+  ret i32 %y
+; CHECK: ret i32
+}