Dmitri Gribenko | d7beca8 | 2013-01-01 13:57:25 +0000 | [diff] [blame] | 1 | ; RUN: opt -inline -S < %s | FileCheck %s |
Nadav Rotem | 4eb3d4b | 2012-09-19 08:08:04 +0000 | [diff] [blame] | 2 | |
| 3 | 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" |
| 4 | target triple = "i386-apple-darwin10.0" |
| 5 | |
| 6 | ; rdar://10853263 |
| 7 | |
| 8 | ; Make sure that the callee is still here. |
Stephen Lin | a76289a | 2013-07-14 01:50:49 +0000 | [diff] [blame] | 9 | ; CHECK-LABEL: define i32 @callee( |
Nadav Rotem | 4eb3d4b | 2012-09-19 08:08:04 +0000 | [diff] [blame] | 10 | define i32 @callee(i32 %param) { |
| 11 | %yyy = alloca [100000 x i8] |
| 12 | %r = bitcast [100000 x i8]* %yyy to i8* |
| 13 | call void @foo2(i8* %r) |
| 14 | ret i32 4 |
| 15 | } |
| 16 | |
Stephen Lin | a76289a | 2013-07-14 01:50:49 +0000 | [diff] [blame] | 17 | ; CHECK-LABEL: define i32 @caller( |
Nadav Rotem | 4eb3d4b | 2012-09-19 08:08:04 +0000 | [diff] [blame] | 18 | ; CHECK-NEXT: entry: |
| 19 | ; CHECK-NOT: alloca |
| 20 | ; CHECK: ret |
| 21 | define i32 @caller(i32 %param) { |
| 22 | entry: |
| 23 | %t = call i32 @foo(i32 %param) |
| 24 | %cmp = icmp eq i32 %t, -1 |
| 25 | br i1 %cmp, label %exit, label %cont |
| 26 | |
| 27 | cont: |
| 28 | %r = call i32 @caller(i32 %t) |
| 29 | %f = call i32 @callee(i32 %r) |
| 30 | br label %cont |
| 31 | exit: |
| 32 | ret i32 4 |
| 33 | } |
| 34 | |
| 35 | declare void @foo2(i8* %in) |
| 36 | |
| 37 | declare i32 @foo(i32 %param) |
| 38 | |