[LoopUnroll] Add store to unreachable latch test (NFC)
authorNikita Popov <nikita.ppv@gmail.com>
Fri, 28 May 2021 20:48:23 +0000 (22:48 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Fri, 28 May 2021 20:49:23 +0000 (22:49 +0200)
This is to show that we currently only convert the terminator to
unreachable, but don't clean up instructions before it (unless
trivial DCE removes them).

Also clean up excessive whitespace in this test.

llvm/test/Transforms/LoopUnroll/unroll-unconditional-latch.ll

index 4970a90..7d56166 100644 (file)
@@ -3,7 +3,7 @@
 
 %struct.spam = type { double, double, double, double, double, double, double }
 
-define void @test2(i32* %arg)  {
+define void @test2(i32* %arg, i64* %out)  {
 ; CHECK-LABEL: @test2(
 ; CHECK-NEXT:  entry:
 ; CHECK-NEXT:    br label [[FOR_HEADER:%.*]]
@@ -11,29 +11,27 @@ define void @test2(i32* %arg)  {
 ; CHECK-NEXT:    store i32 0, i32* [[ARG:%.*]], align 4
 ; CHECK-NEXT:    br label [[FOR_LATCH:%.*]]
 ; CHECK:       for.latch:
+; CHECK-NEXT:    store volatile i64 0, i64* [[OUT:%.*]], align 4
 ; CHECK-NEXT:    [[PTR_1:%.*]] = getelementptr inbounds i32, i32* [[ARG]], i64 1
 ; CHECK-NEXT:    store i32 0, i32* [[PTR_1]], align 4
 ; CHECK-NEXT:    br label [[FOR_LATCH_1:%.*]]
 ; CHECK:       if.end.loopexit:
 ; CHECK-NEXT:    ret void
 ; CHECK:       for.latch.1:
+; CHECK-NEXT:    store volatile i64 1, i64* [[OUT]], align 4
 ; CHECK-NEXT:    [[PTR_2:%.*]] = getelementptr inbounds i32, i32* [[ARG]], i64 2
 ; CHECK-NEXT:    store i32 0, i32* [[PTR_2]], align 4
 ; CHECK-NEXT:    br label [[FOR_LATCH_2:%.*]]
 ; CHECK:       for.latch.2:
+; CHECK-NEXT:    store volatile i64 2, i64* [[OUT]], align 4
 ; CHECK-NEXT:    [[PTR_3:%.*]] = getelementptr inbounds i32, i32* [[ARG]], i64 3
 ; CHECK-NEXT:    store i32 0, i32* [[PTR_3]], align 4
 ; CHECK-NEXT:    br i1 true, label [[IF_END_LOOPEXIT:%.*]], label [[FOR_LATCH_3:%.*]]
 ; CHECK:       for.latch.3:
+; CHECK-NEXT:    store volatile i64 3, i64* [[OUT]], align 4
 ; CHECK-NEXT:    unreachable
 ;
 
-
-
-
-
-
-
 entry:
   br label %for.header
 
@@ -46,6 +44,7 @@ for.header:                              ; preds = %for.latch, %entry
   br i1 %exitcond802, label %if.end.loopexit, label %for.latch
 
 for.latch: ; preds = %for.header
+  store volatile i64 %indvars.iv800, i64* %out
   br label %for.header
 
 if.end.loopexit:                                  ; preds = %for.header
@@ -71,10 +70,6 @@ define double @test_with_lcssa(double %arg1, double* %arg2) {
 ; CHECK-NEXT:    unreachable
 ;
 
-
-
-
-
 entry:
   br label %loop.header
 
@@ -143,16 +138,6 @@ define void @test_with_nested_loop(i32* %arg)  {
 ; CHECK-NEXT:    unreachable
 ;
 
-
-
-
-
-
-
-
-
-
-
 entry:
   br label %outer.header
 
@@ -201,9 +186,6 @@ define void @test_with_nested_loop_unroll_inner(i32* %arg)  {
 ; CHECK-NEXT:    ret void
 ;
 
-
-
-
 entry:
   br label %outer.header
 
@@ -252,10 +234,6 @@ define void @test_switchinst_in_header() {
 ; CHECK-NEXT:    ret void
 ;
 
-
-
-
-
 entry:
   br label %while.header