summaryrefslogtreecommitdiff
path: root/test/Transforms/SafeStack
diff options
context:
space:
mode:
Diffstat (limited to 'test/Transforms/SafeStack')
-rw-r--r--test/Transforms/SafeStack/AArch64/abi_ssp.ll7
-rw-r--r--test/Transforms/SafeStack/X86/abi_ssp.ll21
-rw-r--r--test/Transforms/SafeStack/X86/call.ll8
-rw-r--r--test/Transforms/SafeStack/X86/coloring-ssp.ll12
-rw-r--r--test/Transforms/SafeStack/X86/coloring.ll16
-rw-r--r--test/Transforms/SafeStack/X86/coloring2.ll162
-rw-r--r--test/Transforms/SafeStack/X86/debug-loc2.ll4
-rw-r--r--test/Transforms/SafeStack/X86/layout-frag.ll16
8 files changed, 127 insertions, 119 deletions
diff --git a/test/Transforms/SafeStack/AArch64/abi_ssp.ll b/test/Transforms/SafeStack/AArch64/abi_ssp.ll
index 5d584d0a76b9..c78b20aaa01a 100644
--- a/test/Transforms/SafeStack/AArch64/abi_ssp.ll
+++ b/test/Transforms/SafeStack/AArch64/abi_ssp.ll
@@ -1,5 +1,5 @@
-; RUN: opt -safe-stack -S -mtriple=aarch64-linux-android < %s -o - | FileCheck --check-prefix=TLS %s
-
+; RUN: opt -safe-stack -S -mtriple=aarch64-linux-android < %s -o - | FileCheck --check-prefixes=TLS,ANDROID %s
+; RUN: opt -safe-stack -S -mtriple=aarch64-unknown-fuchsia < %s -o - | FileCheck --check-prefixes=TLS,FUCHSIA %s
define void @foo() nounwind uwtable safestack sspreq {
entry:
@@ -7,7 +7,8 @@ entry:
; TLS: call i8* @llvm.thread.pointer()
; TLS: %[[TP2:.*]] = call i8* @llvm.thread.pointer()
-; TLS: %[[B:.*]] = getelementptr i8, i8* %[[TP2]], i32 40
+; ANDROID: %[[B:.*]] = getelementptr i8, i8* %[[TP2]], i32 40
+; FUCHSIA: %[[B:.*]] = getelementptr i8, i8* %[[TP2]], i32 -16
; TLS: %[[C:.*]] = bitcast i8* %[[B]] to i8**
; TLS: %[[StackGuard:.*]] = load i8*, i8** %[[C]]
; TLS: store i8* %[[StackGuard]], i8** %[[StackGuardSlot:.*]]
diff --git a/test/Transforms/SafeStack/X86/abi_ssp.ll b/test/Transforms/SafeStack/X86/abi_ssp.ll
index ba4ced5b8820..b489e07a8868 100644
--- a/test/Transforms/SafeStack/X86/abi_ssp.ll
+++ b/test/Transforms/SafeStack/X86/abi_ssp.ll
@@ -1,18 +1,25 @@
-; RUN: opt -safe-stack -S -mtriple=i686-pc-linux-gnu < %s -o - | FileCheck --check-prefix=TLS --check-prefix=TLS32 %s
-; RUN: opt -safe-stack -S -mtriple=x86_64-pc-linux-gnu < %s -o - | FileCheck --check-prefix=TLS --check-prefix=TLS64 %s
-; RUN: opt -safe-stack -S -mtriple=i686-linux-android < %s -o - | FileCheck --check-prefix=TLS --check-prefix=TLS32 %s
-; RUN: opt -safe-stack -S -mtriple=x86_64-linux-android < %s -o - | FileCheck --check-prefix=TLS --check-prefix=TLS64 %s
+; RUN: opt -safe-stack -S -mtriple=i686-pc-linux-gnu < %s -o - | FileCheck --check-prefixes=COMMON,TLS32 %s
+; RUN: opt -safe-stack -S -mtriple=x86_64-pc-linux-gnu < %s -o - | FileCheck --check-prefixes=COMMON,TLS64 %s
+
+; RUN: opt -safe-stack -S -mtriple=i686-linux-android < %s -o - | FileCheck --check-prefixes=COMMON,GLOBAL32 %s
+; RUN: opt -safe-stack -S -mtriple=i686-linux-android24 < %s -o - | FileCheck --check-prefixes=COMMON,TLS32 %s
+
+; RUN: opt -safe-stack -S -mtriple=x86_64-linux-android < %s -o - | FileCheck --check-prefixes=COMMON,TLS64 %s
+
+; RUN: opt -safe-stack -S -mtriple=x86_64-unknown-fuchsia < %s -o - | FileCheck --check-prefixes=COMMON,FUCHSIA64 %s
define void @foo() safestack sspreq {
entry:
; TLS32: %[[StackGuard:.*]] = load i8*, i8* addrspace(256)* inttoptr (i32 20 to i8* addrspace(256)*)
; TLS64: %[[StackGuard:.*]] = load i8*, i8* addrspace(257)* inttoptr (i32 40 to i8* addrspace(257)*)
-; TLS: store i8* %[[StackGuard]], i8** %[[StackGuardSlot:.*]]
+; FUCHSIA64: %[[StackGuard:.*]] = load i8*, i8* addrspace(257)* inttoptr (i32 16 to i8* addrspace(257)*)
+; GLOBAL32: %[[StackGuard:.*]] = load i8*, i8** @__stack_chk_guard
+; COMMON: store i8* %[[StackGuard]], i8** %[[StackGuardSlot:.*]]
%a = alloca i8, align 1
call void @Capture(i8* %a)
-; TLS: %[[A:.*]] = load i8*, i8** %[[StackGuardSlot]]
-; TLS: icmp ne i8* %[[StackGuard]], %[[A]]
+; COMMON: %[[A:.*]] = load i8*, i8** %[[StackGuardSlot]]
+; COMMON: icmp ne i8* %[[StackGuard]], %[[A]]
ret void
}
diff --git a/test/Transforms/SafeStack/X86/call.ll b/test/Transforms/SafeStack/X86/call.ll
index cbac4ce1bb0d..2d78bb1a6898 100644
--- a/test/Transforms/SafeStack/X86/call.ll
+++ b/test/Transforms/SafeStack/X86/call.ll
@@ -159,8 +159,8 @@ define void @call_lifetime(i32* %p) {
entry:
%q = alloca [100 x i8], align 16
%0 = bitcast [100 x i8]* %q to i8*
- call void @llvm.lifetime.start(i64 100, i8* %0)
- call void @llvm.lifetime.end(i64 100, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 100, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 100, i8* %0)
ret void
}
@@ -174,5 +174,5 @@ declare void @readnone0(i8* nocapture readnone, i8* nocapture)
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind argmemonly
-declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind argmemonly
-declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind argmemonly
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) nounwind argmemonly
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) nounwind argmemonly
diff --git a/test/Transforms/SafeStack/X86/coloring-ssp.ll b/test/Transforms/SafeStack/X86/coloring-ssp.ll
index d71babe200df..3b04fdf13fbc 100644
--- a/test/Transforms/SafeStack/X86/coloring-ssp.ll
+++ b/test/Transforms/SafeStack/X86/coloring-ssp.ll
@@ -16,19 +16,19 @@ entry:
%x0 = bitcast i64* %x to i8*
%y0 = bitcast i64* %y to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %x0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %x0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -16
call void @capture64(i64* %x)
- call void @llvm.lifetime.end(i64 -1, i8* %x0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %x0)
- call void @llvm.lifetime.start(i64 -1, i8* %y0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %y0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -16
call void @capture64(i64* %y)
- call void @llvm.lifetime.end(i64 -1, i8* %y0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %y0)
ret void
}
-declare void @llvm.lifetime.start(i64, i8* nocapture)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
declare void @capture64(i64*)
diff --git a/test/Transforms/SafeStack/X86/coloring.ll b/test/Transforms/SafeStack/X86/coloring.ll
index 3ed9ccb43f39..76bdf37dbf4e 100644
--- a/test/Transforms/SafeStack/X86/coloring.ll
+++ b/test/Transforms/SafeStack/X86/coloring.ll
@@ -10,35 +10,35 @@ entry:
%x1 = alloca i32, align 4
%x2 = alloca i32, align 4
%0 = bitcast i32* %x to i8*
- call void @llvm.lifetime.start(i64 4, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %0)
; CHECK: %[[A1:.*]] = getelementptr i8, i8* %[[USP]], i32 -4
; CHECK: %[[A2:.*]] = bitcast i8* %[[A1]] to i32*
; CHECK: call void @capture(i32* nonnull %[[A2]])
call void @capture(i32* nonnull %x)
- call void @llvm.lifetime.end(i64 4, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %0)
%1 = bitcast i32* %x1 to i8*
- call void @llvm.lifetime.start(i64 4, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %1)
; CHECK: %[[B1:.*]] = getelementptr i8, i8* %[[USP]], i32 -4
; CHECK: %[[B2:.*]] = bitcast i8* %[[B1]] to i32*
; CHECK: call void @capture(i32* nonnull %[[B2]])
call void @capture(i32* nonnull %x1)
- call void @llvm.lifetime.end(i64 4, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %1)
%2 = bitcast i32* %x2 to i8*
- call void @llvm.lifetime.start(i64 4, i8* %2)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %2)
; CHECK: %[[C1:.*]] = getelementptr i8, i8* %[[USP]], i32 -4
; CHECK: %[[C2:.*]] = bitcast i8* %[[C1]] to i32*
; CHECK: call void @capture(i32* nonnull %[[C2]])
call void @capture(i32* nonnull %x2)
- call void @llvm.lifetime.end(i64 4, i8* %2)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %2)
ret void
}
-declare void @llvm.lifetime.start(i64, i8* nocapture)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
declare void @capture(i32*)
diff --git a/test/Transforms/SafeStack/X86/coloring2.ll b/test/Transforms/SafeStack/X86/coloring2.ll
index f3ac6d735c9d..2a8f871945ff 100644
--- a/test/Transforms/SafeStack/X86/coloring2.ll
+++ b/test/Transforms/SafeStack/X86/coloring2.ll
@@ -15,21 +15,21 @@ entry:
%y0 = bitcast i32* %y to i8*
%z0 = bitcast i32* %z to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %z0)
- call void @llvm.lifetime.start(i64 -1, i8* %x0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %z0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %x0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
call void @capture32(i32* %x)
- call void @llvm.lifetime.end(i64 -1, i8* %x0)
- call void @llvm.lifetime.start(i64 -1, i8* %y0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %x0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %y0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
call void @capture32(i32* %y)
- call void @llvm.lifetime.end(i64 -1, i8* %y0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %y0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -8
call void @capture32(i32* %z)
- call void @llvm.lifetime.end(i64 -1, i8* %z0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %z0)
ret void
}
@@ -44,11 +44,11 @@ entry:
%y = alloca i32, align 4
%x0 = bitcast i32* %x to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %x0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %x0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
call void @capture32(i32* %x)
- call void @llvm.lifetime.end(i64 -1, i8* %x0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %x0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -8
call void @capture32(i32* %y)
@@ -70,21 +70,21 @@ entry:
%y0 = bitcast i32* %y to i8*
%z0 = bitcast i64* %z to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %x0)
- call void @llvm.lifetime.start(i64 -1, i8* %y0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %x0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %y0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
call void @capture32(i32* %x)
- call void @llvm.lifetime.end(i64 -1, i8* %x0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %x0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -8
call void @capture32(i32* %y)
- call void @llvm.lifetime.end(i64 -1, i8* %y0)
- call void @llvm.lifetime.start(i64 -1, i8* %z0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %y0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %z0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -8
call void @capture64(i64* %z)
- call void @llvm.lifetime.end(i64 -1, i8* %z0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %z0)
ret void
}
@@ -103,9 +103,9 @@ entry:
%y0 = bitcast i32* %y to i8*
%z0 = bitcast i64* %z to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %x0)
- call void @llvm.lifetime.start(i64 -1, i8* %y0)
- call void @llvm.lifetime.start(i64 -1, i8* %z0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %x0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %y0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %z0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -16
call void @capture32(i32* %x)
@@ -116,9 +116,9 @@ entry:
; CHECK: getelementptr i8, i8* %[[USP]], i32 -8
call void @capture64(i64* %z)
- call void @llvm.lifetime.end(i64 -1, i8* %x0)
- call void @llvm.lifetime.end(i64 -1, i8* %y0)
- call void @llvm.lifetime.end(i64 -1, i8* %z0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %x0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %y0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %z0)
ret void
}
@@ -156,9 +156,9 @@ entry:
%z1 = alloca i64, align 8
%z2 = alloca i64, align 8
%0 = bitcast i64* %x1 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %0)
%1 = bitcast i64* %x2 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %1)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -8
; CHECK: call void @capture64(
call void @capture64(i64* nonnull %x1)
@@ -169,7 +169,7 @@ entry:
if.then: ; preds = %entry
%2 = bitcast i64* %y to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %2)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %2)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -24
; CHECK: call void @capture64(
call void @capture64(i64* nonnull %y)
@@ -177,29 +177,29 @@ if.then: ; preds = %entry
if.then3: ; preds = %if.then
%3 = bitcast i64* %y1 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %3)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %3)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -32
; CHECK: call void @capture64(
call void @capture64(i64* nonnull %y1)
- call void @llvm.lifetime.end(i64 -1, i8* %3)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %3)
br label %if.end
if.else: ; preds = %if.then
%4 = bitcast i64* %y2 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %4)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %4)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -32
; CHECK: call void @capture64(
call void @capture64(i64* nonnull %y2)
- call void @llvm.lifetime.end(i64 -1, i8* %4)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %4)
br label %if.end
if.end: ; preds = %if.else, %if.then3
- call void @llvm.lifetime.end(i64 -1, i8* %2)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %2)
br label %if.end9
if.else4: ; preds = %entry
%5 = bitcast i64* %z to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %5)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %5)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -24
; CHECK: call void @capture64(
call void @capture64(i64* nonnull %z)
@@ -207,29 +207,29 @@ if.else4: ; preds = %entry
if.then6: ; preds = %if.else4
%6 = bitcast i64* %z1 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %6)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %6)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -32
; CHECK: call void @capture64(
call void @capture64(i64* nonnull %z1)
- call void @llvm.lifetime.end(i64 -1, i8* %6)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %6)
br label %if.end8
if.else7: ; preds = %if.else4
%7 = bitcast i64* %z2 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %7)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %7)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -32
; CHECK: call void @capture64(
call void @capture64(i64* nonnull %z2)
- call void @llvm.lifetime.end(i64 -1, i8* %7)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %7)
br label %if.end8
if.end8: ; preds = %if.else7, %if.then6
- call void @llvm.lifetime.end(i64 -1, i8* %5)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %5)
br label %if.end9
if.end9: ; preds = %if.end8, %if.end
- call void @llvm.lifetime.end(i64 -1, i8* %1)
- call void @llvm.lifetime.end(i64 -1, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %0)
ret void
}
@@ -243,21 +243,21 @@ entry:
%y = alloca i32, align 4
%x0 = bitcast i32* %x to i8*
%y0 = bitcast i32* %y to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %x0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %x0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
; CHECK: call void @capture32(
call void @capture32(i32* %x)
br i1 %d, label %bb2, label %bb3
bb2:
- call void @llvm.lifetime.start(i64 -1, i8* %y0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %y0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -8
; CHECK: call void @capture32(
call void @capture32(i32* %y)
- call void @llvm.lifetime.end(i64 -1, i8* %y0)
- call void @llvm.lifetime.end(i64 -1, i8* %x0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %y0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %x0)
ret void
bb3:
- call void @llvm.lifetime.end(i64 -1, i8* %x0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %x0)
ret void
}
@@ -270,18 +270,18 @@ entry:
%y = alloca i32, align 4
%x0 = bitcast i32* %x to i8*
%y0 = bitcast i32* %y to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %x0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %x0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
; CHECK: call void @capture32(
call void @capture32(i32* %x)
- call void @llvm.lifetime.end(i64 -1, i8* %x0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %x0)
br i1 %d, label %bb2, label %bb3
bb2:
- call void @llvm.lifetime.start(i64 -1, i8* %y0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %y0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
; CHECK: call void @capture32(
call void @capture32(i32* %y)
- call void @llvm.lifetime.end(i64 -1, i8* %y0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %y0)
ret void
bb3:
ret void
@@ -297,14 +297,14 @@ entry:
%y = alloca i32, align 4
%x0 = bitcast i32* %x to i8*
%y0 = bitcast i32* %y to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %x0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %x0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
; CHECK: call void @capture32(
call void @capture32(i32* %x)
- call void @llvm.lifetime.end(i64 -1, i8* %x0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %x0)
br i1 %d, label %bb2, label %bb3
bb2:
- call void @llvm.lifetime.start(i64 -1, i8* %y0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %y0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
; CHECK: call void @capture32(
call void @capture32(i32* %y)
@@ -323,14 +323,14 @@ entry:
%y = alloca i32, align 4
%x0 = bitcast i32* %x to i8*
%y0 = bitcast i32* %y to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %x0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %x0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
; CHECK: call void @capture32(
call void @capture32(i32* %x)
br i1 %d, label %bb2, label %bb3
bb2:
- call void @llvm.lifetime.end(i64 -1, i8* %x0)
- call void @llvm.lifetime.start(i64 -1, i8* %y0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %x0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %y0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
; CHECK: call void @capture32(
call void @capture32(i32* %y)
@@ -352,10 +352,10 @@ entry:
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
; CHECK: call void @capture32(
call void @capture32(i32* %x)
- call void @llvm.lifetime.end(i64 -1, i8* %x0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %x0)
br i1 %d, label %bb2, label %bb3
bb2:
- call void @llvm.lifetime.start(i64 -1, i8* %y0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %y0)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -8
; CHECK: call void @capture32(
call void @capture32(i32* %y)
@@ -374,29 +374,29 @@ entry:
%A.i = alloca [100 x i32], align 4
%B.i = alloca [100 x i32], align 4
%0 = bitcast [100 x i32]* %A.i to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %0)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %0)
%1 = bitcast [100 x i32]* %B.i to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %1)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %1)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -400
; CHECK: call void @capture100x32(
call void @capture100x32([100 x i32]* %A.i)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -800
; CHECK: call void @capture100x32(
call void @capture100x32([100 x i32]* %B.i)
- call void @llvm.lifetime.end(i64 -1, i8* %0)
- call void @llvm.lifetime.end(i64 -1, i8* %1)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %0)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %1)
%2 = bitcast [100 x i32]* %A.i1 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %2)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %2)
%3 = bitcast [100 x i32]* %B.i2 to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %3)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %3)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -400
; CHECK: call void @capture100x32(
call void @capture100x32([100 x i32]* %A.i1)
; CHECK: getelementptr i8, i8* %[[USP]], i32 -800
; CHECK: call void @capture100x32(
call void @capture100x32([100 x i32]* %B.i2)
- call void @llvm.lifetime.end(i64 -1, i8* %2)
- call void @llvm.lifetime.end(i64 -1, i8* %3)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %2)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %3)
ret void
}
@@ -408,11 +408,11 @@ entry:
%buf1 = alloca i8, i32 100000, align 16
%buf2 = alloca i8, i32 100000, align 16
- call void @llvm.lifetime.start(i64 -1, i8* %buf1)
- call void @llvm.lifetime.end(i64 -1, i8* %buf1)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %buf1)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %buf1)
- call void @llvm.lifetime.start(i64 -1, i8* %buf1)
- call void @llvm.lifetime.start(i64 -1, i8* %buf2)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %buf1)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %buf2)
call void @capture8(i8* %buf1)
call void @capture8(i8* %buf2)
ret void
@@ -435,13 +435,13 @@ entry:
%A.i = alloca [100 x i32], align 4
%B.i = alloca [100 x i32], align 4
%0 = bitcast [100 x i32]* %A.i to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %0) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %0) nounwind
%1 = bitcast [100 x i32]* %B.i to i8*
- call void @llvm.lifetime.start(i64 -1, i8* %1) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %1) nounwind
call void @capture100x32([100 x i32]* %A.i)
call void @capture100x32([100 x i32]* %B.i)
- call void @llvm.lifetime.end(i64 -1, i8* %0) nounwind
- call void @llvm.lifetime.end(i64 -1, i8* %1) nounwind
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %0) nounwind
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %1) nounwind
br label %block2
block2:
@@ -464,13 +464,13 @@ entry:
%b8 = bitcast [4 x %struct.Klass]* %b.i to i8*
; I am used outside the lifetime zone below:
%z2 = getelementptr inbounds [4 x %struct.Klass], [4 x %struct.Klass]* %a.i, i64 0, i64 0, i32 0
- call void @llvm.lifetime.start(i64 -1, i8* %a8)
- call void @llvm.lifetime.start(i64 -1, i8* %b8)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %a8)
+ call void @llvm.lifetime.start.p0i8(i64 -1, i8* %b8)
call void @capture8(i8* %a8)
call void @capture8(i8* %b8)
%z3 = load i32, i32* %z2, align 16
- call void @llvm.lifetime.end(i64 -1, i8* %a8)
- call void @llvm.lifetime.end(i64 -1, i8* %b8)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %a8)
+ call void @llvm.lifetime.end.p0i8(i64 -1, i8* %b8)
ret i32 %z3
}
@@ -480,12 +480,12 @@ entry:
; CHECK: %[[USP:.*]] = load i8*, i8** @__safestack_unsafe_stack_ptr
; CHECK-NEXT: getelementptr i8, i8* %[[USP]], i32 -16
%x = alloca i8, align 4
- call void @llvm.lifetime.start(i64 4, i8* %x) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %x) nounwind
br label %l2
l2:
call void @capture8(i8* %x)
- call void @llvm.lifetime.end(i64 4, i8* %x) nounwind
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %x) nounwind
br label %l2
}
@@ -498,23 +498,23 @@ entry:
; CHECK-NEXT: getelementptr i8, i8* %[[USP]], i32 -16
%x = alloca i8, align 4
%y = alloca i8, align 4
- call void @llvm.lifetime.start(i64 4, i8* %x) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %x) nounwind
br label %l2
l2:
; CHECK: getelementptr i8, i8* %[[USP]], i32 -8
- call void @llvm.lifetime.start(i64 4, i8* %y) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %y) nounwind
call void @capture8(i8* %y)
- call void @llvm.lifetime.end(i64 4, i8* %y) nounwind
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %y) nounwind
; CHECK: getelementptr i8, i8* %[[USP]], i32 -4
- call void @llvm.lifetime.start(i64 4, i8* %x) nounwind
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %x) nounwind
call void @capture8(i8* %x)
br label %l2
}
-declare void @llvm.lifetime.start(i64, i8* nocapture)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
declare void @capture8(i8*)
declare void @capture32(i32*)
declare void @capture64(i64*)
diff --git a/test/Transforms/SafeStack/X86/debug-loc2.ll b/test/Transforms/SafeStack/X86/debug-loc2.ll
index 35e9b7711d2f..8059a722fd45 100644
--- a/test/Transforms/SafeStack/X86/debug-loc2.ll
+++ b/test/Transforms/SafeStack/X86/debug-loc2.ll
@@ -40,12 +40,12 @@ entry:
}
; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.start(i64, i8* nocapture) #1
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #1
declare void @capture(i32*) #2
; Function Attrs: argmemonly nounwind
-declare void @llvm.lifetime.end(i64, i8* nocapture) #1
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #1
; Function Attrs: nounwind readnone
declare void @llvm.dbg.value(metadata, i64, metadata, metadata) #3
diff --git a/test/Transforms/SafeStack/X86/layout-frag.ll b/test/Transforms/SafeStack/X86/layout-frag.ll
index 125eb0f8be9a..b127defc2c5d 100644
--- a/test/Transforms/SafeStack/X86/layout-frag.ll
+++ b/test/Transforms/SafeStack/X86/layout-frag.ll
@@ -14,16 +14,16 @@ entry:
%x0a = bitcast i64* %x0 to i8*
%x2a = bitcast i64* %x2 to i8*
- call void @llvm.lifetime.start(i64 4, i8* %x0a)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %x0a)
call void @capture64(i64* %x0)
- call void @llvm.lifetime.end(i64 4, i8* %x0a)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %x0a)
- call void @llvm.lifetime.start(i64 4, i8* %x1)
- call void @llvm.lifetime.start(i64 4, i8* %x2a)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %x1)
+ call void @llvm.lifetime.start.p0i8(i64 4, i8* %x2a)
call void @capture8(i8* %x1)
call void @capture64(i64* %x2)
- call void @llvm.lifetime.end(i64 4, i8* %x1)
- call void @llvm.lifetime.end(i64 4, i8* %x2a)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %x1)
+ call void @llvm.lifetime.end.p0i8(i64 4, i8* %x2a)
; Test that i64 allocas share space.
; CHECK: getelementptr i8, i8* %unsafe_stack_ptr, i32 -8
@@ -33,7 +33,7 @@ entry:
ret void
}
-declare void @llvm.lifetime.start(i64, i8* nocapture)
-declare void @llvm.lifetime.end(i64, i8* nocapture)
+declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture)
+declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture)
declare void @capture8(i8*)
declare void @capture64(i64*)