Chris Lattner | eae2202 | 2010-04-20 00:46:50 +0000 | [diff] [blame] | 1 | ; rdar://7879828 |
| 2 | ; RUN: opt -inline -argpromotion %s |
| 3 | target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" |
| 4 | target triple = "x86_64-apple-darwin10.0.0" |
| 5 | |
| 6 | define void @foo() { |
| 7 | invoke void @foo2() |
| 8 | to label %if.end432 unwind label %for.end520 |
| 9 | |
| 10 | if.end432: |
| 11 | unreachable |
| 12 | |
| 13 | for.end520: |
| 14 | unreachable |
| 15 | } |
| 16 | |
| 17 | define internal void @foo2() ssp { |
| 18 | %call7 = call fastcc i8* @foo3(i1 (i8*)* @foo4) |
| 19 | %call58 = call fastcc i8* @foo3(i1 (i8*)* @foo5) |
| 20 | unreachable |
| 21 | } |
| 22 | |
| 23 | define internal fastcc i8* @foo3(i1 (i8*)* %Pred) { |
| 24 | entry: |
| 25 | unreachable |
| 26 | } |
| 27 | |
| 28 | define internal i1 @foo4(i8* %O) nounwind { |
| 29 | entry: |
| 30 | %call = call zeroext i1 @foo5(i8* %O) ; <i1> [#uses=0] |
| 31 | unreachable |
| 32 | } |
| 33 | |
| 34 | define internal i1 @foo5(i8* %O) nounwind { |
| 35 | entry: |
| 36 | ret i1 undef |
| 37 | } |
| 38 | |
Chris Lattner | 28252b6 | 2011-01-16 08:09:24 +0000 | [diff] [blame^] | 39 | |
| 40 | ; PR8932 - infinite promotion. |
| 41 | %0 = type { %0* } |
| 42 | |
| 43 | define i32 @test2(i32 %a) { |
| 44 | init: |
| 45 | %0 = alloca %0 |
| 46 | %1 = alloca %0 |
| 47 | %2 = call i32 @"clay_assign(Chain, Chain)"(%0* %0, %0* %1) |
| 48 | ret i32 0 |
| 49 | } |
| 50 | |
| 51 | define internal i32 @"clay_assign(Chain, Chain)"(%0* %c, %0* %d) { |
| 52 | init: |
| 53 | %0 = getelementptr %0* %d, i32 0, i32 0 |
| 54 | %1 = load %0** %0 |
| 55 | %2 = getelementptr %0* %c, i32 0, i32 0 |
| 56 | %3 = load %0** %2 |
| 57 | %4 = call i32 @"clay_assign(Chain, Chain)"(%0* %3, %0* %1) |
| 58 | ret i32 0 |
| 59 | } |