From fee1a4aa594b92a5abfa30f3cd12461aaa5539c3 Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Tue, 27 Sep 2022 23:13:43 -0700 Subject: [PATCH] [test][StackLifetime] Add new test created debugging an issue The issue is not confirmened, but tests can stay. --- llvm/test/Analysis/StackSafetyAnalysis/lifetime.ll | 102 +++++++++++++++++++++ 1 file changed, 102 insertions(+) diff --git a/llvm/test/Analysis/StackSafetyAnalysis/lifetime.ll b/llvm/test/Analysis/StackSafetyAnalysis/lifetime.ll index f88e38c..43cd85b 100644 --- a/llvm/test/Analysis/StackSafetyAnalysis/lifetime.ll +++ b/llvm/test/Analysis/StackSafetyAnalysis/lifetime.ll @@ -949,6 +949,108 @@ entry: ret void } +define void @if_must1(i1 %a) { +; CHECK-LABEL: define void @if_must1 +entry: +; CHECK: entry: +; CHECK-NEXT: Alive: <> + %x = alloca i8, align 4 + %y = alloca i8, align 4 + + br i1 %a, label %if.then, label %if.else +; CHECK: br i1 %a, label %if.then, label %if.else +; CHECK-NEXT: Alive: <> + +if.then: +; CHECK: if.then: +; MAY-NEXT: Alive: +; MUST-NEXT: Alive: <> + call void @llvm.lifetime.end.p0i8(i64 1, i8* %y) +; CHECK: call void @llvm.lifetime.end.p0i8(i64 1, i8* %y) +; MAY-NEXT: Alive: +; MUST-NEXT: Alive: <> + + br label %if.end +; CHECK: br label %if.end +; MAY-NEXT: Alive: +; MUST-NEXT: Alive: <> + +if.else: +; CHECK: if.else: +; CHECK-NEXT: Alive: <> + call void @llvm.lifetime.start.p0i8(i64 1, i8* %y) +; CHECK: call void @llvm.lifetime.start.p0i8(i64 1, i8* %y) +; CHECK-NEXT: Alive: + + call void @llvm.lifetime.start.p0i8(i64 1, i8* %x) +; CHECK: call void @llvm.lifetime.start.p0i8(i64 1, i8* %x) +; CHECK-NEXT: Alive: + + br label %if.then +; CHECK: br label %if.then +; CHECK-NEXT: Alive: + +if.end: +; CHECK: if.end: +; MAY-NEXT: Alive: +; MUST-NEXT: Alive: <> + + ret void +} + +define void @if_must2(i1 %a) { +; CHECK-LABEL: define void @if_must2 +entry: +; CHECK: entry: +; CHECK-NEXT: Alive: <> + %x = alloca i8, align 4 + %y = alloca i8, align 4 + + call void @llvm.lifetime.start.p0i8(i64 1, i8* %x) +; CHECK: call void @llvm.lifetime.start.p0i8(i64 1, i8* %x) +; CHECK-NEXT: Alive: + + br i1 %a, label %if.then, label %if.else +; CHECK: br i1 %a, label %if.then, label %if.else +; CHECK-NEXT: Alive: + +if.then: +; CHECK: if.then: +; MAY-NEXT: Alive: +; MUST-NEXT: Alive: <> + call void @llvm.lifetime.start.p0i8(i64 1, i8* %y) +; CHECK: call void @llvm.lifetime.start.p0i8(i64 1, i8* %y) +; MAY-NEXT: Alive: +; MUST-NEXT: Alive: + + br label %if.end +; CHECK: br label %if.end +; MAY-NEXT: Alive: +; MUST-NEXT: Alive: + +if.else: +; CHECK: if.else: +; CHECK-NEXT: Alive: + call void @llvm.lifetime.end.p0i8(i64 1, i8* %y) +; CHECK: call void @llvm.lifetime.end.p0i8(i64 1, i8* %y) +; CHECK-NEXT: Alive: + + call void @llvm.lifetime.end.p0i8(i64 1, i8* %x) +; CHECK: call void @llvm.lifetime.end.p0i8(i64 1, i8* %x) +; CHECK-NEXT: Alive: <> + + br label %if.then +; CHECK: br label %if.then +; CHECK-NEXT: Alive: <> + +if.end: +; CHECK: if.end: +; MAY-NEXT: Alive: +; MUST-NEXT: Alive: + + ret void +} + declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) declare void @llvm.lifetime.start.p0i32(i64, i32* nocapture) -- 2.7.4