; CHECK-NEXT: Alive: <>
ret void
-; CHECK: ret void
-; CHECK-NEXT: Alive: <>
}
define void @no_markers() {
call void @capture32(i32* %y)
ret void
-; CHECK: ret void
-; CHECK-NEXT: Alive: <y>
}
define void @g() {
; CHECK-NEXT: Alive: <>
ret void
-; CHECK: ret void
-; CHECK-NEXT: Alive: <>
}
define void @h() {
; CHECK-NEXT: Alive: <>
ret void
-; CHECK: ret void
-; CHECK-NEXT: Alive: <>
}
define void @i(i1 zeroext %a, i1 zeroext %b) {
call void @capture64(i64* nonnull %x1)
call void @capture64(i64* nonnull %x2)
br i1 %a, label %if.then, label %if.else4
-; CHECK: br i1 %a, label %if.then, label %if.else4
-; CHECK-NEXT: Alive: <x1 x2>
if.then: ; preds = %entry
; CHECK: if.then:
call void @capture64(i64* nonnull %y)
br i1 %b, label %if.then3, label %if.else
-; CHECK: br i1 %b, label %if.then3, label %if.else
-; CHECK-NEXT: Alive: <x1 x2 y>
if.then3: ; preds = %if.then
; CHECK: if.then3:
; CHECK-NEXT: Alive: <x1 x2 y>
br label %if.end
-; CHECK: br label %if.end
-; CHECK-NEXT: Alive: <x1 x2 y>
if.else: ; preds = %if.then
; CHECK: if.else:
; CHECK-NEXT: Alive: <x1 x2 y>
br label %if.end
-; CHECK: br label %if.end
-; CHECK-NEXT: Alive: <x1 x2 y>
if.end: ; preds = %if.else, %if.then3
; CHECK: if.end:
; CHECK-NEXT: Alive: <x1 x2>
br label %if.end9
-; CHECK: br label %if.end9
-; CHECK-NEXT: Alive: <x1 x2>
if.else4: ; preds = %entry
; CHECK: if.else4:
call void @capture64(i64* nonnull %z)
br i1 %b, label %if.then6, label %if.else7
-; CHECK: br i1 %b, label %if.then6, label %if.else7
-; CHECK-NEXT: Alive: <x1 x2 z>
if.then6: ; preds = %if.else4
; CHECK: if.then6:
; CHECK-NEXT: Alive: <x1 x2 z>
br label %if.end8
-; CHECK: br label %if.end8
-; CHECK-NEXT: Alive: <x1 x2 z>
if.else7: ; preds = %if.else4
; CHECK: if.else7:
; CHECK-NEXT: Alive: <x1 x2 z>
br label %if.end8
-; CHECK: br label %if.end8
-; CHECK-NEXT: Alive: <x1 x2 z>
if.end8: ; preds = %if.else7, %if.then6
; CHECK: if.end8:
; CHECK-NEXT: Alive: <x1 x2>
br label %if.end9
-; CHECK: br label %if.end9
-; CHECK-NEXT: Alive: <x1 x2>
if.end9: ; preds = %if.end8, %if.end
; CHECK: if.end9:
; CHECK-NEXT: Alive: <>
ret void
-; CHECK: ret void
-; CHECK-NEXT: Alive: <>
}
define void @no_merge1(i1 %d) {
call void @capture32(i32* %x)
br i1 %d, label %bb2, label %bb3
-; CHECK: br i1 %d, label %bb2, label %bb3
-; CHECK-NEXT: Alive: <x>
bb2: ; preds = %entry
; CHECK: bb2:
; CHECK-NEXT: Alive: <>
ret void
-; CHECK: ret void
-; CHECK-NEXT: Alive: <>
bb3: ; preds = %entry
; CHECK: bb3:
; CHECK-NEXT: Alive: <>
ret void
-; CHECK: ret void
-; CHECK-NEXT: Alive: <>
}
define void @merge1(i1 %d) {
; CHECK-NEXT: Alive: <>
br i1 %d, label %bb2, label %bb3
-; CHECK: br i1 %d, label %bb2, label %bb3
-; CHECK-NEXT: Alive: <>
bb2: ; preds = %entry
; CHECK: bb2:
; CHECK-NEXT: Alive: <>
ret void
-; CHECK: ret void
-; CHECK-NEXT: Alive: <>
bb3: ; preds = %entry
; CHECK: bb3:
; CHECK-NEXT: Alive: <>
ret void
-; CHECK: ret void
-; CHECK-NEXT: Alive: <>
}
define void @merge2_noend(i1 %d) {
; CHECK-NEXT: Alive: <>
br i1 %d, label %bb2, label %bb3
-; CHECK: br i1 %d, label %bb2, label %bb3
-; CHECK-NEXT: Alive: <>
bb2: ; preds = %entry
; CHECK: bb2:
call void @capture32(i32* %y)
ret void
-; CHECK: ret void
-; CHECK-NEXT: Alive: <y>
bb3: ; preds = %entry
; CHECK: bb3:
; CHECK-NEXT: Alive: <>
ret void
-; CHECK: ret void
-; CHECK-NEXT: Alive: <>
}
define void @merge3_noend(i1 %d) {
call void @capture32(i32* %x)
br i1 %d, label %bb2, label %bb3
-; CHECK: br i1 %d, label %bb2, label %bb3
-; CHECK-NEXT: Alive: <x>
bb2: ; preds = %entry
; CHECK: bb2:
call void @capture32(i32* %y)
ret void
-; CHECK: ret void
-; CHECK-NEXT: Alive: <y>
bb3: ; preds = %entry
; CHECK: bb3:
; CHECK-NEXT: Alive: <x>
ret void
-; CHECK: ret void
-; CHECK-NEXT: Alive: <x>
}
define void @nomerge4_nostart(i1 %d) {
; CHECK-NEXT: Alive: <x>
br i1 %d, label %bb2, label %bb3
-; CHECK: br i1 %d, label %bb2, label %bb3
-; CHECK-NEXT: Alive: <x>
bb2: ; preds = %entry
; CHECK: bb2:
call void @capture32(i32* %y)
ret void
-; CHECK: ret void
-; CHECK-NEXT: Alive: <x y>
bb3: ; preds = %entry
; CHECK: bb3:
; CHECK-NEXT: Alive: <x>
ret void
-; CHECK: ret void
-; CHECK-NEXT: Alive: <x>
}
define void @array_merge() {
; CHECK-NEXT: Alive: <>
ret void
-; CHECK: ret void
-; CHECK-NEXT: Alive: <>
}
define void @myCall_pr15707() {
call void @capture8(i8* %buf1)
call void @capture8(i8* %buf2)
ret void
-; CHECK: ret void
-; CHECK-NEXT: Alive: <buf1 buf2>
}
define void @bad_range() {
; CHECK-NEXT: Alive: <A.i1 B.i2>
br label %block2
-; CHECK: br label %block2
-; CHECK-NEXT: Alive: <A.i1 B.i2>
block2: ; preds = %entry
; CHECK: block2:
call void @capture100x32([100 x i32]* %A.i)
call void @capture100x32([100 x i32]* %B.i)
ret void
-; CHECK: ret void
-; CHECK-NEXT: Alive: <A.i1 B.i2>
}
%struct.Klass = type { i32, i32 }
; CHECK-NEXT: Alive: <>
ret i32 %z3
-; CHECK: ret i32 %z3
-; CHECK-NEXT: Alive: <>
}
define void @end_loop() {
; CHECK-NEXT: Alive: <x>
br label %l2
-; CHECK: br label %l2
-; CHECK-NEXT: Alive: <x>
l2: ; preds = %l2, %entry
; CHECK: l2:
; CHECK-NEXT: Alive: <>
br label %l2
-; CHECK: br label %l2
-; CHECK-NEXT: Alive: <>
}
define void @start_loop() {
; CHECK-NEXT: Alive: <x>
br label %l2
-; CHECK: br label %l2
-; CHECK-NEXT: Alive: <x>
l2: ; preds = %l2, %entry
; CHECK: l2:
call void @capture8(i8* %x)
br label %l2
-; CHECK: br label %l2
-; CHECK-NEXT: Alive: <x>
}
define void @if_must(i1 %a) {
%y = alloca i8, align 4
br i1 %a, label %if.then, label %if.else
-; CHECK: br i1 %a
-; CHECK-NEXT: Alive: <>
if.then:
; CHECK: if.then:
; CHECK-NEXT: Alive: <y>
br label %if.end
-; CHECK: br label %if.end
-; CHECK-NEXT: Alive: <y>
if.else:
; CHECK: if.else:
; CHECK-NEXT: Alive: <x y>
br label %if.end
-; CHECK: br label %if.end
-; CHECK-NEXT: Alive: <x y>
if.end:
; CHECK: if.end:
; MUST-NEXT: Alive: <y>
ret void
-; CHECK: ret void
-; MAY-NEXT: Alive: <x y>
-; MUST-NEXT: Alive: <y>
}
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)