1; RUN: opt -safe-stack -S -mtriple=i386-pc-linux-gnu < %s -o - | FileCheck %s 2; RUN: opt -safe-stack -S -mtriple=x86_64-pc-linux-gnu < %s -o - | FileCheck %s 3; RUN: opt -passes=safe-stack -S -mtriple=i386-pc-linux-gnu < %s -o - | FileCheck %s 4; RUN: opt -passes=safe-stack -S -mtriple=x86_64-pc-linux-gnu < %s -o - | FileCheck %s 5 6@.str = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 7 8; Addr-of a casted pointer 9; safestack attribute 10; Requires protector. 11define void @foo() nounwind uwtable safestack { 12entry: 13 ; CHECK: __safestack_unsafe_stack_ptr 14 %a = alloca ptr, align 8 15 %b = alloca ptr, align 8 16 %call = call ptr @getp() 17 store ptr %call, ptr %a, align 8 18 store ptr %a, ptr %b, align 8 19 %0 = load ptr, ptr %b, align 8 20 call void @funfloat2(ptr %0) 21 ret void 22} 23 24declare void @funfloat2(ptr) 25declare ptr @getp() 26