dynamic-alloca.ll 670 B

123456789101112131415161718192021
  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. @.str = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1
  4. ; Variable sized alloca
  5. ; safestack attribute
  6. ; Requires protector.
  7. define void @foo(i32 %n) nounwind uwtable safestack {
  8. entry:
  9. ; CHECK: __safestack_unsafe_stack_ptr
  10. %n.addr = alloca i32, align 4
  11. %a = alloca i32*, align 8
  12. store i32 %n, i32* %n.addr, align 4
  13. %0 = load i32, i32* %n.addr, align 4
  14. %conv = sext i32 %0 to i64
  15. %1 = alloca i8, i64 %conv
  16. %2 = bitcast i8* %1 to i32*
  17. store i32* %2, i32** %a, align 8
  18. ret void
  19. }