aboutsummaryrefslogtreecommitdiff
path: root/test/Transforms/SafeStack
diff options
context:
space:
mode:
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.ll39
-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