Home | History | Annotate | Download | only in SafeStack
      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 
      4 @.str = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1
      5 
      6 ; PtrToInt/IntToPtr Cast
      7 
      8 define void @IntToPtr() nounwind uwtable safestack {
      9 entry:
     10   ; CHECK-LABEL: @IntToPtr(
     11   ; CHECK-NOT: __safestack_unsafe_stack_ptr
     12   ; CHECK: ret void
     13   %a = alloca i32, align 4
     14   %0 = ptrtoint i32* %a to i64
     15   %1 = inttoptr i64 %0 to i32*
     16   ret void
     17 }
     18 
     19 define i8 @BitCastNarrow() nounwind uwtable safestack {
     20 entry:
     21   ; CHECK-LABEL: @BitCastNarrow(
     22   ; CHECK-NOT: __safestack_unsafe_stack_ptr
     23   ; CHECK: ret i8
     24   %a = alloca i32, align 4
     25   %0 = bitcast i32* %a to i8*
     26   %1 = load i8, i8* %0, align 1
     27   ret i8 %1
     28 }
     29 
     30 define i64 @BitCastWide() nounwind uwtable safestack {
     31 entry:
     32   ; CHECK-LABEL: @BitCastWide(
     33   ; CHECK: __safestack_unsafe_stack_ptr
     34   ; CHECK: ret i64
     35   %a = alloca i32, align 4
     36   %0 = bitcast i32* %a to i64*
     37   %1 = load i64, i64* %0, align 1
     38   ret i64 %1
     39 }
     40