recursive.ll 862 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. ; RUN: opt -inline -S < %s | FileCheck %s
  2. target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
  3. target triple = "i386-apple-darwin10.0"
  4. ; rdar://10853263
  5. ; Make sure that the callee is still here.
  6. ; CHECK-LABEL: define i32 @callee(
  7. define i32 @callee(i32 %param) {
  8. %yyy = alloca [100000 x i8]
  9. %r = bitcast [100000 x i8]* %yyy to i8*
  10. call void @foo2(i8* %r)
  11. ret i32 4
  12. }
  13. ; CHECK-LABEL: define i32 @caller(
  14. ; CHECK-NEXT: entry:
  15. ; CHECK-NOT: alloca
  16. ; CHECK: ret
  17. define i32 @caller(i32 %param) {
  18. entry:
  19. %t = call i32 @foo(i32 %param)
  20. %cmp = icmp eq i32 %t, -1
  21. br i1 %cmp, label %exit, label %cont
  22. cont:
  23. %r = call i32 @caller(i32 %t)
  24. %f = call i32 @callee(i32 %r)
  25. br label %cont
  26. exit:
  27. ret i32 4
  28. }
  29. declare void @foo2(i8* %in)
  30. declare i32 @foo(i32 %param)