Please use GitHub pull requests for new patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/CodeGen/AArch64/stack-tagging-split-lifetime.ll
Show All 28 Lines | ; CHECK: call void @llvm.aarch64.settag | ||||
br label %exit1 | br label %exit1 | ||||
exit1: | exit1: | ||||
; CHECK-LABEL: exit1: | ; CHECK-LABEL: exit1: | ||||
; CHECK-NOT: call void @llvm.aarch64.settag | ; CHECK-NOT: call void @llvm.aarch64.settag | ||||
ret void | ret void | ||||
} | } | ||||
define void @diamond(i1 %cond) local_unnamed_addr sanitize_memtag { | |||||
start: | |||||
; CHECK-LABEL: start: | |||||
%a = alloca i8, i32 48, align 8 | |||||
call void @llvm.lifetime.start.p0i8(i64 48, i8* nonnull %a) | |||||
; CHECK: call void @llvm.aarch64.settag(i8* %a.tag, i64 48) | |||||
br i1 %cond, label %next0, label %next1 | |||||
next0: | |||||
; CHECK-LABEL: next0: | |||||
; CHECK: call void @llvm.aarch64.settag | |||||
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %a) | |||||
br label %exit1 | |||||
next1: | |||||
; CHECK-LABEL: next1: | |||||
; CHECK: call void @llvm.aarch64.settag | |||||
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %a) | |||||
br label %exit1 | |||||
exit1: | |||||
; CHECK-LABEL: exit1: | |||||
; CHECK-NOT: call void @llvm.aarch64.settag | |||||
ret void | |||||
} | |||||
define void @diamond_nocover(i1 %cond) local_unnamed_addr sanitize_memtag { | |||||
start: | |||||
; CHECK-LABEL: start: | |||||
%a = alloca i8, i32 48, align 8 | |||||
call void @llvm.lifetime.start.p0i8(i64 48, i8* nonnull %a) | |||||
; CHECK: call void @llvm.aarch64.settag(i8* %a.tag, i64 48) | |||||
br i1 %cond, label %next0, label %next1 | |||||
next0: | |||||
; CHECK-LABEL: next0: | |||||
; CHECK-NOT: llvm.lifetime.end | |||||
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %a) | |||||
br label %exit1 | |||||
next1: | |||||
; CHECK-LABEL: next1: | |||||
; CHECK-NOT: llvm.lifetime.end | |||||
br label %exit1 | |||||
exit1: | |||||
; CHECK-LABEL: exit1: | |||||
; CHECK: call void @llvm.aarch64.settag | |||||
ret void | |||||
} | |||||
define void @diamond3(i1 %cond, i1 %cond1) local_unnamed_addr sanitize_memtag { | |||||
start: | |||||
; CHECK-LABEL: start: | |||||
%a = alloca i8, i32 48, align 8 | |||||
call void @llvm.lifetime.start.p0i8(i64 48, i8* nonnull %a) | |||||
; CHECK: call void @llvm.aarch64.settag(i8* %a.tag, i64 48) | |||||
br i1 %cond, label %next0, label %start1 | |||||
start1: | |||||
br i1 %cond1, label %next1, label %next2 | |||||
next0: | |||||
; CHECK-LABEL: next0: | |||||
; CHECK: call void @llvm.aarch64.settag | |||||
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %a) | |||||
br label %exit1 | |||||
next1: | |||||
; CHECK-LABEL: next1: | |||||
; CHECK: call void @llvm.aarch64.settag | |||||
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %a) | |||||
br label %exit1 | |||||
next2: | |||||
; CHECK-LABEL: next2: | |||||
; CHECK: call void @llvm.aarch64.settag | |||||
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %a) | |||||
br label %exit1 | |||||
exit1: | |||||
; CHECK-LABEL: exit1: | |||||
; CHECK-NOT: call void @llvm.aarch64.settag | |||||
ret void | |||||
} | |||||
define void @diamond3_nocover(i1 %cond, i1 %cond1) local_unnamed_addr sanitize_memtag { | |||||
start: | |||||
; CHECK-LABEL: start: | |||||
%a = alloca i8, i32 48, align 8 | |||||
call void @llvm.lifetime.start.p0i8(i64 48, i8* nonnull %a) | |||||
; CHECK: call void @llvm.aarch64.settag(i8* %a.tag, i64 48) | |||||
br i1 %cond, label %next0, label %start1 | |||||
start1: | |||||
br i1 %cond1, label %next1, label %next2 | |||||
next0: | |||||
; CHECK-LABEL: next0: | |||||
; CHECK-NOT: call void @llvm.aarch64.settag | |||||
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %a) | |||||
br label %exit1 | |||||
next1: | |||||
; CHECK-LABEL: next1: | |||||
; CHECK-NOT: call void @llvm.aarch64.settag | |||||
call void @llvm.lifetime.end.p0i8(i64 40, i8* nonnull %a) | |||||
br label %exit1 | |||||
next2: | |||||
; CHECK-LABEL: next2: | |||||
; CHECK-NOT: call void @llvm.aarch64.settag | |||||
br label %exit1 | |||||
exit1: | |||||
; CHECK-LABEL: exit1: | |||||
; CHECK: call void @llvm.aarch64.settag | |||||
ret void | |||||
} | |||||
declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) | declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) | ||||
declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) | declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) |