diff options
Diffstat (limited to 'test/Transforms/SafeStack')
-rw-r--r-- | test/Transforms/SafeStack/AArch64/abi_ssp.ll | 7 | ||||
-rw-r--r-- | test/Transforms/SafeStack/X86/abi_ssp.ll | 21 | ||||
-rw-r--r-- | test/Transforms/SafeStack/X86/call.ll | 8 | ||||
-rw-r--r-- | test/Transforms/SafeStack/X86/coloring-ssp.ll | 12 | ||||
-rw-r--r-- | test/Transforms/SafeStack/X86/coloring.ll | 16 | ||||
-rw-r--r-- | test/Transforms/SafeStack/X86/coloring2.ll | 162 | ||||
-rw-r--r-- | test/Transforms/SafeStack/X86/debug-loc2.ll | 4 | ||||
-rw-r--r-- | test/Transforms/SafeStack/X86/layout-frag.ll | 16 |
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*) |