diff options
Diffstat (limited to 'test/Transforms/SafeStack')
| -rw-r--r-- | test/Transforms/SafeStack/X86/addr-taken.ll (renamed from test/Transforms/SafeStack/addr-taken.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/array-aligned.ll (renamed from test/Transforms/SafeStack/array-aligned.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/array.ll (renamed from test/Transforms/SafeStack/array.ll) | 3 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/byval.ll (renamed from test/Transforms/SafeStack/byval.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/call.ll (renamed from test/Transforms/SafeStack/call.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/cast.ll (renamed from test/Transforms/SafeStack/cast.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/coloring-ssp.ll (renamed from test/Transforms/SafeStack/coloring-ssp.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/coloring.ll (renamed from test/Transforms/SafeStack/coloring.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/coloring2.ll (renamed from test/Transforms/SafeStack/coloring2.ll) | 39 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/constant-gep-call.ll (renamed from test/Transforms/SafeStack/constant-gep-call.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/constant-gep.ll (renamed from test/Transforms/SafeStack/constant-gep.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/constant-geps.ll (renamed from test/Transforms/SafeStack/constant-geps.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/debug-loc-dynamic.ll (renamed from test/Transforms/SafeStack/debug-loc-dynamic.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/debug-loc.ll (renamed from test/Transforms/SafeStack/debug-loc.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/debug-loc2.ll (renamed from test/Transforms/SafeStack/debug-loc2.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/dynamic-alloca.ll (renamed from test/Transforms/SafeStack/dynamic-alloca.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/escape-addr-pointer.ll (renamed from test/Transforms/SafeStack/escape-addr-pointer.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/escape-bitcast-store.ll (renamed from test/Transforms/SafeStack/escape-bitcast-store.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/escape-bitcast-store2.ll (renamed from test/Transforms/SafeStack/escape-bitcast-store2.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/escape-call.ll (renamed from test/Transforms/SafeStack/escape-call.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/escape-casted-pointer.ll (renamed from test/Transforms/SafeStack/escape-casted-pointer.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/escape-gep-call.ll (renamed from test/Transforms/SafeStack/escape-gep-call.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/escape-gep-invoke.ll (renamed from test/Transforms/SafeStack/escape-gep-invoke.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/escape-gep-negative.ll (renamed from test/Transforms/SafeStack/escape-gep-negative.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/escape-gep-ptrtoint.ll (renamed from test/Transforms/SafeStack/escape-gep-ptrtoint.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/escape-gep-store.ll (renamed from test/Transforms/SafeStack/escape-gep-store.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/escape-phi-call.ll (renamed from test/Transforms/SafeStack/escape-phi-call.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/escape-select-call.ll (renamed from test/Transforms/SafeStack/escape-select-call.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/escape-vector.ll (renamed from test/Transforms/SafeStack/escape-vector.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/invoke.ll (renamed from test/Transforms/SafeStack/invoke.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/layout-frag.ll | 39 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/layout-region-split.ll (renamed from test/Transforms/SafeStack/layout-region-split.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/no-attr.ll (renamed from test/Transforms/SafeStack/no-attr.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/phi-cycle.ll (renamed from test/Transforms/SafeStack/phi-cycle.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/phi.ll (renamed from test/Transforms/SafeStack/phi.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/ret.ll (renamed from test/Transforms/SafeStack/ret.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/setjmp.ll (renamed from test/Transforms/SafeStack/setjmp.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/setjmp2.ll (renamed from test/Transforms/SafeStack/setjmp2.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/sink-to-use.ll (renamed from test/Transforms/SafeStack/sink-to-use.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/store.ll (renamed from test/Transforms/SafeStack/store.ll) | 0 | ||||
| -rw-r--r-- | test/Transforms/SafeStack/X86/struct.ll (renamed from test/Transforms/SafeStack/struct.ll) | 0 |
41 files changed, 79 insertions, 2 deletions
diff --git a/test/Transforms/SafeStack/addr-taken.ll b/test/Transforms/SafeStack/X86/addr-taken.ll index 0780a01fa896..0780a01fa896 100644 --- a/test/Transforms/SafeStack/addr-taken.ll +++ b/test/Transforms/SafeStack/X86/addr-taken.ll diff --git a/test/Transforms/SafeStack/array-aligned.ll b/test/Transforms/SafeStack/X86/array-aligned.ll index 26558e4fa812..26558e4fa812 100644 --- a/test/Transforms/SafeStack/array-aligned.ll +++ b/test/Transforms/SafeStack/X86/array-aligned.ll diff --git a/test/Transforms/SafeStack/array.ll b/test/Transforms/SafeStack/X86/array.ll index 7dcf7fa50d94..b69935232233 100644 --- a/test/Transforms/SafeStack/array.ll +++ b/test/Transforms/SafeStack/X86/array.ll @@ -1,7 +1,6 @@ ; RUN: opt -safe-stack -S -mtriple=i386-pc-linux-gnu < %s -o - | FileCheck %s -; RUN: opt -safe-stack -safe-stack-usp-storage=single-thread -S -mtriple=i386-pc-linux-gnu < %s -o - | FileCheck -check-prefix=SINGLE-THREAD %s +; RUN: opt -safe-stack -S -mtriple=i386-pc-contiki-unknown < %s -o - | FileCheck -check-prefix=SINGLE-THREAD %s ; RUN: opt -safe-stack -S -mtriple=x86_64-pc-linux-gnu < %s -o - | FileCheck %s -; RUN: opt -safe-stack -safe-stack-usp-storage=single-thread -S -mtriple=x86_64-pc-linux-gnu < %s -o - | FileCheck -check-prefix=SINGLE-THREAD %s ; array [4 x i8] ; Requires protector. diff --git a/test/Transforms/SafeStack/byval.ll b/test/Transforms/SafeStack/X86/byval.ll index f9a06e54d2df..f9a06e54d2df 100644 --- a/test/Transforms/SafeStack/byval.ll +++ b/test/Transforms/SafeStack/X86/byval.ll diff --git a/test/Transforms/SafeStack/call.ll b/test/Transforms/SafeStack/X86/call.ll index cbac4ce1bb0d..cbac4ce1bb0d 100644 --- a/test/Transforms/SafeStack/call.ll +++ b/test/Transforms/SafeStack/X86/call.ll diff --git a/test/Transforms/SafeStack/cast.ll b/test/Transforms/SafeStack/X86/cast.ll index 23f525d5e0b1..23f525d5e0b1 100644 --- a/test/Transforms/SafeStack/cast.ll +++ b/test/Transforms/SafeStack/X86/cast.ll diff --git a/test/Transforms/SafeStack/coloring-ssp.ll b/test/Transforms/SafeStack/X86/coloring-ssp.ll index d71babe200df..d71babe200df 100644 --- a/test/Transforms/SafeStack/coloring-ssp.ll +++ b/test/Transforms/SafeStack/X86/coloring-ssp.ll diff --git a/test/Transforms/SafeStack/coloring.ll b/test/Transforms/SafeStack/X86/coloring.ll index 3ed9ccb43f39..3ed9ccb43f39 100644 --- a/test/Transforms/SafeStack/coloring.ll +++ b/test/Transforms/SafeStack/X86/coloring.ll diff --git a/test/Transforms/SafeStack/coloring2.ll b/test/Transforms/SafeStack/X86/coloring2.ll index 54ed812cfe28..f3ac6d735c9d 100644 --- a/test/Transforms/SafeStack/coloring2.ll +++ b/test/Transforms/SafeStack/X86/coloring2.ll @@ -474,6 +474,45 @@ entry: ret i32 %z3 } +define void @end_loop() safestack { +; CHECK-LABEL: define void @end_loop() +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 + br label %l2 + +l2: + call void @capture8(i8* %x) + call void @llvm.lifetime.end(i64 4, i8* %x) nounwind + br label %l2 +} + +; Check that @x and @y get distinct stack slots => @x lifetime does not break +; when control re-enters l2. +define void @start_loop() safestack { +; CHECK-LABEL: define void @start_loop() +entry: +; CHECK: %[[USP:.*]] = load i8*, i8** @__safestack_unsafe_stack_ptr +; 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 + br label %l2 + +l2: +; CHECK: getelementptr i8, i8* %[[USP]], i32 -8 + call void @llvm.lifetime.start(i64 4, i8* %y) nounwind + call void @capture8(i8* %y) + call void @llvm.lifetime.end(i64 4, i8* %y) nounwind + +; CHECK: getelementptr i8, i8* %[[USP]], i32 -4 + call void @llvm.lifetime.start(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 @capture8(i8*) diff --git a/test/Transforms/SafeStack/constant-gep-call.ll b/test/Transforms/SafeStack/X86/constant-gep-call.ll index 456c1cb1596b..456c1cb1596b 100644 --- a/test/Transforms/SafeStack/constant-gep-call.ll +++ b/test/Transforms/SafeStack/X86/constant-gep-call.ll diff --git a/test/Transforms/SafeStack/constant-gep.ll b/test/Transforms/SafeStack/X86/constant-gep.ll index 6468a761dd57..6468a761dd57 100644 --- a/test/Transforms/SafeStack/constant-gep.ll +++ b/test/Transforms/SafeStack/X86/constant-gep.ll diff --git a/test/Transforms/SafeStack/constant-geps.ll b/test/Transforms/SafeStack/X86/constant-geps.ll index 8a6f7549bb4e..8a6f7549bb4e 100644 --- a/test/Transforms/SafeStack/constant-geps.ll +++ b/test/Transforms/SafeStack/X86/constant-geps.ll diff --git a/test/Transforms/SafeStack/debug-loc-dynamic.ll b/test/Transforms/SafeStack/X86/debug-loc-dynamic.ll index 280d010774e1..280d010774e1 100644 --- a/test/Transforms/SafeStack/debug-loc-dynamic.ll +++ b/test/Transforms/SafeStack/X86/debug-loc-dynamic.ll diff --git a/test/Transforms/SafeStack/debug-loc.ll b/test/Transforms/SafeStack/X86/debug-loc.ll index fc0b6f911f7e..fc0b6f911f7e 100644 --- a/test/Transforms/SafeStack/debug-loc.ll +++ b/test/Transforms/SafeStack/X86/debug-loc.ll diff --git a/test/Transforms/SafeStack/debug-loc2.ll b/test/Transforms/SafeStack/X86/debug-loc2.ll index 35e9b7711d2f..35e9b7711d2f 100644 --- a/test/Transforms/SafeStack/debug-loc2.ll +++ b/test/Transforms/SafeStack/X86/debug-loc2.ll diff --git a/test/Transforms/SafeStack/dynamic-alloca.ll b/test/Transforms/SafeStack/X86/dynamic-alloca.ll index b0571f72f1aa..b0571f72f1aa 100644 --- a/test/Transforms/SafeStack/dynamic-alloca.ll +++ b/test/Transforms/SafeStack/X86/dynamic-alloca.ll diff --git a/test/Transforms/SafeStack/escape-addr-pointer.ll b/test/Transforms/SafeStack/X86/escape-addr-pointer.ll index 615d711f62c2..615d711f62c2 100644 --- a/test/Transforms/SafeStack/escape-addr-pointer.ll +++ b/test/Transforms/SafeStack/X86/escape-addr-pointer.ll diff --git a/test/Transforms/SafeStack/escape-bitcast-store.ll b/test/Transforms/SafeStack/X86/escape-bitcast-store.ll index 9d556a6782a1..9d556a6782a1 100644 --- a/test/Transforms/SafeStack/escape-bitcast-store.ll +++ b/test/Transforms/SafeStack/X86/escape-bitcast-store.ll diff --git a/test/Transforms/SafeStack/escape-bitcast-store2.ll b/test/Transforms/SafeStack/X86/escape-bitcast-store2.ll index 5f1f873f4224..5f1f873f4224 100644 --- a/test/Transforms/SafeStack/escape-bitcast-store2.ll +++ b/test/Transforms/SafeStack/X86/escape-bitcast-store2.ll diff --git a/test/Transforms/SafeStack/escape-call.ll b/test/Transforms/SafeStack/X86/escape-call.ll index ce09780d2eaf..ce09780d2eaf 100644 --- a/test/Transforms/SafeStack/escape-call.ll +++ b/test/Transforms/SafeStack/X86/escape-call.ll diff --git a/test/Transforms/SafeStack/escape-casted-pointer.ll b/test/Transforms/SafeStack/X86/escape-casted-pointer.ll index bf6ce1d6b2a3..bf6ce1d6b2a3 100644 --- a/test/Transforms/SafeStack/escape-casted-pointer.ll +++ b/test/Transforms/SafeStack/X86/escape-casted-pointer.ll diff --git a/test/Transforms/SafeStack/escape-gep-call.ll b/test/Transforms/SafeStack/X86/escape-gep-call.ll index 42b5dd5c1e72..42b5dd5c1e72 100644 --- a/test/Transforms/SafeStack/escape-gep-call.ll +++ b/test/Transforms/SafeStack/X86/escape-gep-call.ll diff --git a/test/Transforms/SafeStack/escape-gep-invoke.ll b/test/Transforms/SafeStack/X86/escape-gep-invoke.ll index 8495ff985f66..8495ff985f66 100644 --- a/test/Transforms/SafeStack/escape-gep-invoke.ll +++ b/test/Transforms/SafeStack/X86/escape-gep-invoke.ll diff --git a/test/Transforms/SafeStack/escape-gep-negative.ll b/test/Transforms/SafeStack/X86/escape-gep-negative.ll index 80d405de36d6..80d405de36d6 100644 --- a/test/Transforms/SafeStack/escape-gep-negative.ll +++ b/test/Transforms/SafeStack/X86/escape-gep-negative.ll diff --git a/test/Transforms/SafeStack/escape-gep-ptrtoint.ll b/test/Transforms/SafeStack/X86/escape-gep-ptrtoint.ll index 73a8e58fb086..73a8e58fb086 100644 --- a/test/Transforms/SafeStack/escape-gep-ptrtoint.ll +++ b/test/Transforms/SafeStack/X86/escape-gep-ptrtoint.ll diff --git a/test/Transforms/SafeStack/escape-gep-store.ll b/test/Transforms/SafeStack/X86/escape-gep-store.ll index 7c6c0a318b17..7c6c0a318b17 100644 --- a/test/Transforms/SafeStack/escape-gep-store.ll +++ b/test/Transforms/SafeStack/X86/escape-gep-store.ll diff --git a/test/Transforms/SafeStack/escape-phi-call.ll b/test/Transforms/SafeStack/X86/escape-phi-call.ll index 10b6c1fdce45..10b6c1fdce45 100644 --- a/test/Transforms/SafeStack/escape-phi-call.ll +++ b/test/Transforms/SafeStack/X86/escape-phi-call.ll diff --git a/test/Transforms/SafeStack/escape-select-call.ll b/test/Transforms/SafeStack/X86/escape-select-call.ll index 9e54dd8e1401..9e54dd8e1401 100644 --- a/test/Transforms/SafeStack/escape-select-call.ll +++ b/test/Transforms/SafeStack/X86/escape-select-call.ll diff --git a/test/Transforms/SafeStack/escape-vector.ll b/test/Transforms/SafeStack/X86/escape-vector.ll index 76b01c7c430c..76b01c7c430c 100644 --- a/test/Transforms/SafeStack/escape-vector.ll +++ b/test/Transforms/SafeStack/X86/escape-vector.ll diff --git a/test/Transforms/SafeStack/invoke.ll b/test/Transforms/SafeStack/X86/invoke.ll index bfebc336cfd0..bfebc336cfd0 100644 --- a/test/Transforms/SafeStack/invoke.ll +++ b/test/Transforms/SafeStack/X86/invoke.ll diff --git a/test/Transforms/SafeStack/X86/layout-frag.ll b/test/Transforms/SafeStack/X86/layout-frag.ll new file mode 100644 index 000000000000..125eb0f8be9a --- /dev/null +++ b/test/Transforms/SafeStack/X86/layout-frag.ll @@ -0,0 +1,39 @@ +; Test that safestack layout reuses a region w/o fragmentation. +; RUN: opt -safe-stack -S -mtriple=x86_64-pc-linux-gnu < %s -o - | FileCheck %s + +define void @f() safestack { +; CHECK-LABEL: define void @f +entry: +; CHECK: %[[USP:.*]] = load i8*, i8** @__safestack_unsafe_stack_ptr +; CHECK: getelementptr i8, i8* %[[USP]], i32 -16 + + %x0 = alloca i64, align 8 + %x1 = alloca i8, align 1 + %x2 = alloca i64, align 8 + + %x0a = bitcast i64* %x0 to i8* + %x2a = bitcast i64* %x2 to i8* + + call void @llvm.lifetime.start(i64 4, i8* %x0a) + call void @capture64(i64* %x0) + call void @llvm.lifetime.end(i64 4, i8* %x0a) + + call void @llvm.lifetime.start(i64 4, i8* %x1) + call void @llvm.lifetime.start(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) + +; Test that i64 allocas share space. +; CHECK: getelementptr i8, i8* %unsafe_stack_ptr, i32 -8 +; CHECK: getelementptr i8, i8* %unsafe_stack_ptr, i32 -9 +; CHECK: getelementptr i8, i8* %unsafe_stack_ptr, i32 -8 + + ret void +} + +declare void @llvm.lifetime.start(i64, i8* nocapture) +declare void @llvm.lifetime.end(i64, i8* nocapture) +declare void @capture8(i8*) +declare void @capture64(i64*) diff --git a/test/Transforms/SafeStack/layout-region-split.ll b/test/Transforms/SafeStack/X86/layout-region-split.ll index ceb18bb70c20..ceb18bb70c20 100644 --- a/test/Transforms/SafeStack/layout-region-split.ll +++ b/test/Transforms/SafeStack/X86/layout-region-split.ll diff --git a/test/Transforms/SafeStack/no-attr.ll b/test/Transforms/SafeStack/X86/no-attr.ll index d9bcefd3c849..d9bcefd3c849 100644 --- a/test/Transforms/SafeStack/no-attr.ll +++ b/test/Transforms/SafeStack/X86/no-attr.ll diff --git a/test/Transforms/SafeStack/phi-cycle.ll b/test/Transforms/SafeStack/X86/phi-cycle.ll index 026e88785cb1..026e88785cb1 100644 --- a/test/Transforms/SafeStack/phi-cycle.ll +++ b/test/Transforms/SafeStack/X86/phi-cycle.ll diff --git a/test/Transforms/SafeStack/phi.ll b/test/Transforms/SafeStack/X86/phi.ll index 3ee56aa0f566..3ee56aa0f566 100644 --- a/test/Transforms/SafeStack/phi.ll +++ b/test/Transforms/SafeStack/X86/phi.ll diff --git a/test/Transforms/SafeStack/ret.ll b/test/Transforms/SafeStack/X86/ret.ll index b2b8e5665297..b2b8e5665297 100644 --- a/test/Transforms/SafeStack/ret.ll +++ b/test/Transforms/SafeStack/X86/ret.ll diff --git a/test/Transforms/SafeStack/setjmp.ll b/test/Transforms/SafeStack/X86/setjmp.ll index e38bff68e94c..e38bff68e94c 100644 --- a/test/Transforms/SafeStack/setjmp.ll +++ b/test/Transforms/SafeStack/X86/setjmp.ll diff --git a/test/Transforms/SafeStack/setjmp2.ll b/test/Transforms/SafeStack/X86/setjmp2.ll index dc83c4824207..dc83c4824207 100644 --- a/test/Transforms/SafeStack/setjmp2.ll +++ b/test/Transforms/SafeStack/X86/setjmp2.ll diff --git a/test/Transforms/SafeStack/sink-to-use.ll b/test/Transforms/SafeStack/X86/sink-to-use.ll index e208ce1da9d4..e208ce1da9d4 100644 --- a/test/Transforms/SafeStack/sink-to-use.ll +++ b/test/Transforms/SafeStack/X86/sink-to-use.ll diff --git a/test/Transforms/SafeStack/store.ll b/test/Transforms/SafeStack/X86/store.ll index f493dd038bb8..f493dd038bb8 100644 --- a/test/Transforms/SafeStack/store.ll +++ b/test/Transforms/SafeStack/X86/store.ll diff --git a/test/Transforms/SafeStack/struct.ll b/test/Transforms/SafeStack/X86/struct.ll index b64803d160c6..b64803d160c6 100644 --- a/test/Transforms/SafeStack/struct.ll +++ b/test/Transforms/SafeStack/X86/struct.ll |
