brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 1e737f1 Raw
62 lines · plain
1; RUN: opt -safe-stack -S -mtriple=i386-pc-linux-gnu < %s -o - | FileCheck %s2; RUN: opt -safe-stack -S -mtriple=x86_64-pc-linux-gnu < %s -o - | FileCheck %s3; RUN: opt -passes=safe-stack -S -mtriple=i386-pc-linux-gnu < %s -o - | FileCheck %s4; RUN: opt -passes=safe-stack -S -mtriple=x86_64-pc-linux-gnu < %s -o - | FileCheck %s5 6@.str = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 17 8define void @bad_store() nounwind uwtable safestack {9entry:10  ; CHECK-LABEL: @bad_store(11  ; CHECK: __safestack_unsafe_stack_ptr12  ; CHECK: ret void13  %a = alloca i32, align 414  %0 = ptrtoint ptr %a to i6415  %1 = inttoptr i64 %0 to ptr16  store i64 zeroinitializer, ptr %117  ret void18}19 20define void @good_store() nounwind uwtable safestack {21entry:22  ; CHECK-LABEL: @good_store(23  ; CHECK-NOT: __safestack_unsafe_stack_ptr24  ; CHECK: ret void25  %a = alloca i32, align 426  store i8 zeroinitializer, ptr %a27  ret void28}29 30define void @overflow_gep_store() nounwind uwtable safestack {31entry:32  ; CHECK-LABEL: @overflow_gep_store(33  ; CHECK: __safestack_unsafe_stack_ptr34  ; CHECK: ret void35  %a = alloca i32, align 436  %0 = getelementptr i8, ptr %a, i32 437  store i8 zeroinitializer, ptr %038  ret void39}40 41define void @underflow_gep_store() nounwind uwtable safestack {42entry:43  ; CHECK-LABEL: @underflow_gep_store(44  ; CHECK: __safestack_unsafe_stack_ptr45  ; CHECK: ret void46  %a = alloca i32, align 447  %0 = getelementptr i8, ptr %a, i32 -148  store i8 zeroinitializer, ptr %049  ret void50}51 52define void @good_gep_store() nounwind uwtable safestack {53entry:54  ; CHECK-LABEL: @good_gep_store(55  ; CHECK-NOT: __safestack_unsafe_stack_ptr56  ; CHECK: ret void57  %a = alloca i32, align 458  %0 = getelementptr i8, ptr %a, i32 359  store i8 zeroinitializer, ptr %060  ret void61}62