]> granicus.if.org Git - llvm/commitdiff
[Tests] Strengthen LICM test corpus to show alignment striping
authorPhilip Reames <listmail@philipreames.com>
Thu, 28 Feb 2019 18:08:04 +0000 (18:08 +0000)
committerPhilip Reames <listmail@philipreames.com>
Thu, 28 Feb 2019 18:08:04 +0000 (18:08 +0000)
Doing scalar promotion w/o being able to prove the alignment of the hoisted load or sunk store is a bug.  Update tests to actually show the alignment so that impact of the patch which fixes this can be seen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355110 91177308-0d34-0410-b5e6-96231b3b80d8

test/Transforms/LICM/promote-tls.ll
test/Transforms/LICM/scalar-promote-unwind.ll

index 076d05cf094a508b71a686eb44ca0efb2adbd56e..3fe46e81ed9778b51819d2d39303aa0e8d09f615 100644 (file)
@@ -21,6 +21,8 @@ entry:
   br label %for.body.lr.ph
 
 for.body.lr.ph:                                   ; preds = %entry
+; CHECK-LABEL: for.body.lr.ph:
+; CHECK-NEXT: %addr.promoted = load i32, i32* %addr, align 1
   br label %for.header
 
 for.header:
@@ -59,6 +61,8 @@ entry:
   br label %for.body.lr.ph
 
 for.body.lr.ph:                                   ; preds = %entry
+; CHECK-LABEL: for.body.lr.ph:
+; CHECK-NEXT: %addr.promoted = load i32, i32* %addr, align 1
   br label %for.header
 
 for.header:
index f1f52eed1d4c419d9d656a9926465b0325bd925f..bb90a4f821cbc1c78a1c0f8aba6ac08f36f73dcc 100644 (file)
@@ -67,6 +67,32 @@ for.cond.cleanup:
   ret void
 }
 
+define void @test3(i1 zeroext %y) uwtable {
+; CHECK-LABEL: @test3
+entry:
+; CHECK-LABEL: entry:
+; CHECK-NEXT:  %a = alloca i32
+; CHECK-NEXT:  %a.promoted = load i32, i32* %a, align 1
+  %a = alloca i32
+  br label %for.body
+
+for.body:
+  %i.03 = phi i32 [ 0, %entry ], [ %inc, %for.body ]
+  %0 = load i32, i32* %a, align 4
+  %add = add nsw i32 %0, 1
+  tail call void @f()
+  store i32 %add, i32* %a, align 4
+  %inc = add nuw nsw i32 %i.03, 1
+  %exitcond = icmp eq i32 %inc, 10000
+  br i1 %exitcond, label %for.cond.cleanup, label %for.body
+
+for.cond.cleanup:
+; CHECK-LABEL: for.cond.cleanup:
+; CHECK: store i32 %add.lcssa, i32* %a, align 1
+; CHECK-NEXT: ret void
+  ret void
+}
+
 @_ZTIi = external constant i8*
 
 ; In this test, the loop is within a try block. There is an explicit unwind edge out of the loop.