%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:%.*]]
; 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
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
; CHECK-NEXT: unreachable
;
-
-
-
-
entry:
br label %loop.header
; CHECK-NEXT: unreachable
;
-
-
-
-
-
-
-
-
-
-
entry:
br label %outer.header
; CHECK-NEXT: ret void
;
-
-
-
entry:
br label %outer.header
; CHECK-NEXT: ret void
;
-
-
-
-
entry:
br label %while.header