1*9880d681SAndroid Build Coastguard Worker; RUN: llvm-as < %s | llvm-dis | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdeclare void @callee0() 4*9880d681SAndroid Build Coastguard Workerdeclare void @callee1(i32,i32) 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Workerdefine void @f0(i32* %ptr) { 7*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @f0( 8*9880d681SAndroid Build Coastguard Worker entry: 9*9880d681SAndroid Build Coastguard Worker %l = load i32, i32* %ptr 10*9880d681SAndroid Build Coastguard Worker %x = add i32 42, 1 11*9880d681SAndroid Build Coastguard Worker call void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "bar"(float 0.000000e+00, i64 100, i32 %l) ] 12*9880d681SAndroid Build Coastguard Worker; CHECK: call void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "bar"(float 0.000000e+00, i64 100, i32 %l) ] 13*9880d681SAndroid Build Coastguard Worker ret void 14*9880d681SAndroid Build Coastguard Worker} 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Workerdefine void @f1(i32* %ptr) { 17*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @f1( 18*9880d681SAndroid Build Coastguard Worker entry: 19*9880d681SAndroid Build Coastguard Worker %l = load i32, i32* %ptr 20*9880d681SAndroid Build Coastguard Worker %x = add i32 42, 1 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Worker call void @callee0() 23*9880d681SAndroid Build Coastguard Worker call void @callee0() [ "foo"() ] 24*9880d681SAndroid Build Coastguard Worker call void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "bar"(float 0.000000e+00, i64 100, i32 %l) ] 25*9880d681SAndroid Build Coastguard Worker; CHECK: @callee0(){{$}} 26*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: call void @callee0() [ "foo"() ] 27*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: call void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "bar"(float 0.000000e+00, i64 100, i32 %l) ] 28*9880d681SAndroid Build Coastguard Worker ret void 29*9880d681SAndroid Build Coastguard Worker} 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Workerdefine void @f2(i32* %ptr) { 32*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @f2( 33*9880d681SAndroid Build Coastguard Worker entry: 34*9880d681SAndroid Build Coastguard Worker call void @callee0() [ "foo"() ] 35*9880d681SAndroid Build Coastguard Worker; CHECK: call void @callee0() [ "foo"() ] 36*9880d681SAndroid Build Coastguard Worker ret void 37*9880d681SAndroid Build Coastguard Worker} 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Workerdefine void @f3(i32* %ptr) { 40*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @f3( 41*9880d681SAndroid Build Coastguard Worker entry: 42*9880d681SAndroid Build Coastguard Worker %l = load i32, i32* %ptr 43*9880d681SAndroid Build Coastguard Worker %x = add i32 42, 1 44*9880d681SAndroid Build Coastguard Worker call void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float 0.000000e+00, i32 %l) ] 45*9880d681SAndroid Build Coastguard Worker; CHECK: call void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float 0.000000e+00, i32 %l) ] 46*9880d681SAndroid Build Coastguard Worker ret void 47*9880d681SAndroid Build Coastguard Worker} 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Workerdefine void @f4(i32* %ptr) { 50*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @f4( 51*9880d681SAndroid Build Coastguard Worker entry: 52*9880d681SAndroid Build Coastguard Worker %l = load i32, i32* %ptr 53*9880d681SAndroid Build Coastguard Worker %x = add i32 42, 1 54*9880d681SAndroid Build Coastguard Worker call void @callee1(i32 10, i32 %x) [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float 0.000000e+00, i32 %l) ] 55*9880d681SAndroid Build Coastguard Worker; CHECK: call void @callee1(i32 10, i32 %x) [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float 0.000000e+00, i32 %l) ] 56*9880d681SAndroid Build Coastguard Worker ret void 57*9880d681SAndroid Build Coastguard Worker} 58*9880d681SAndroid Build Coastguard Worker 59*9880d681SAndroid Build Coastguard Worker; Invoke versions of the above tests: 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Worker 62*9880d681SAndroid Build Coastguard Workerdefine void @g0(i32* %ptr) personality i8 3 { 63*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @g0( 64*9880d681SAndroid Build Coastguard Worker entry: 65*9880d681SAndroid Build Coastguard Worker %l = load i32, i32* %ptr 66*9880d681SAndroid Build Coastguard Worker %x = add i32 42, 1 67*9880d681SAndroid Build Coastguard Worker invoke void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "bar"(float 0.000000e+00, i64 100, i32 %l) ] to label %normal unwind label %exception 68*9880d681SAndroid Build Coastguard Worker; CHECK: invoke void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "bar"(float 0.000000e+00, i64 100, i32 %l) ] 69*9880d681SAndroid Build Coastguard Worker 70*9880d681SAndroid Build Coastguard Workerexception: 71*9880d681SAndroid Build Coastguard Worker %cleanup = landingpad i8 cleanup 72*9880d681SAndroid Build Coastguard Worker br label %normal 73*9880d681SAndroid Build Coastguard Workernormal: 74*9880d681SAndroid Build Coastguard Worker ret void 75*9880d681SAndroid Build Coastguard Worker} 76*9880d681SAndroid Build Coastguard Worker 77*9880d681SAndroid Build Coastguard Workerdefine void @g1(i32* %ptr) personality i8 3 { 78*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @g1( 79*9880d681SAndroid Build Coastguard Worker entry: 80*9880d681SAndroid Build Coastguard Worker %l = load i32, i32* %ptr 81*9880d681SAndroid Build Coastguard Worker %x = add i32 42, 1 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard Worker invoke void @callee0() to label %normal unwind label %exception 84*9880d681SAndroid Build Coastguard Worker; CHECK: invoke void @callee0(){{$}} 85*9880d681SAndroid Build Coastguard Worker 86*9880d681SAndroid Build Coastguard Workerexception: 87*9880d681SAndroid Build Coastguard Worker %cleanup = landingpad i8 cleanup 88*9880d681SAndroid Build Coastguard Worker br label %normal 89*9880d681SAndroid Build Coastguard Worker 90*9880d681SAndroid Build Coastguard Workernormal: 91*9880d681SAndroid Build Coastguard Worker invoke void @callee0() [ "foo"() ] to label %normal1 unwind label %exception1 92*9880d681SAndroid Build Coastguard Worker; CHECK: invoke void @callee0() [ "foo"() ] 93*9880d681SAndroid Build Coastguard Worker 94*9880d681SAndroid Build Coastguard Workerexception1: 95*9880d681SAndroid Build Coastguard Worker %cleanup1 = landingpad i8 cleanup 96*9880d681SAndroid Build Coastguard Worker br label %normal1 97*9880d681SAndroid Build Coastguard Worker 98*9880d681SAndroid Build Coastguard Workernormal1: 99*9880d681SAndroid Build Coastguard Worker invoke void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float 0.000000e+00, i32 %l) ] to label %normal2 unwind label %exception2 100*9880d681SAndroid Build Coastguard Worker; CHECK: invoke void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float 0.000000e+00, i32 %l) ] 101*9880d681SAndroid Build Coastguard Worker 102*9880d681SAndroid Build Coastguard Workerexception2: 103*9880d681SAndroid Build Coastguard Worker %cleanup2 = landingpad i8 cleanup 104*9880d681SAndroid Build Coastguard Worker br label %normal2 105*9880d681SAndroid Build Coastguard Worker 106*9880d681SAndroid Build Coastguard Workernormal2: 107*9880d681SAndroid Build Coastguard Worker ret void 108*9880d681SAndroid Build Coastguard Worker} 109*9880d681SAndroid Build Coastguard Worker 110*9880d681SAndroid Build Coastguard Workerdefine void @g2(i32* %ptr) personality i8 3 { 111*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @g2( 112*9880d681SAndroid Build Coastguard Worker entry: 113*9880d681SAndroid Build Coastguard Worker invoke void @callee0() [ "foo"() ] to label %normal unwind label %exception 114*9880d681SAndroid Build Coastguard Worker; CHECK: invoke void @callee0() [ "foo"() ] 115*9880d681SAndroid Build Coastguard Worker 116*9880d681SAndroid Build Coastguard Workerexception: 117*9880d681SAndroid Build Coastguard Worker %cleanup = landingpad i8 cleanup 118*9880d681SAndroid Build Coastguard Worker br label %normal 119*9880d681SAndroid Build Coastguard Workernormal: 120*9880d681SAndroid Build Coastguard Worker ret void 121*9880d681SAndroid Build Coastguard Worker} 122*9880d681SAndroid Build Coastguard Worker 123*9880d681SAndroid Build Coastguard Workerdefine void @g3(i32* %ptr) personality i8 3 { 124*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @g3( 125*9880d681SAndroid Build Coastguard Worker entry: 126*9880d681SAndroid Build Coastguard Worker %l = load i32, i32* %ptr 127*9880d681SAndroid Build Coastguard Worker %x = add i32 42, 1 128*9880d681SAndroid Build Coastguard Worker invoke void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float 0.000000e+00, i32 %l) ] to label %normal unwind label %exception 129*9880d681SAndroid Build Coastguard Worker; CHECK: invoke void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float 0.000000e+00, i32 %l) ] 130*9880d681SAndroid Build Coastguard Worker 131*9880d681SAndroid Build Coastguard Workerexception: 132*9880d681SAndroid Build Coastguard Worker %cleanup = landingpad i8 cleanup 133*9880d681SAndroid Build Coastguard Worker br label %normal 134*9880d681SAndroid Build Coastguard Workernormal: 135*9880d681SAndroid Build Coastguard Worker ret void 136*9880d681SAndroid Build Coastguard Worker} 137*9880d681SAndroid Build Coastguard Worker 138*9880d681SAndroid Build Coastguard Workerdefine void @g4(i32* %ptr) personality i8 3 { 139*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @g4( 140*9880d681SAndroid Build Coastguard Worker entry: 141*9880d681SAndroid Build Coastguard Worker %l = load i32, i32* %ptr 142*9880d681SAndroid Build Coastguard Worker %x = add i32 42, 1 143*9880d681SAndroid Build Coastguard Worker invoke void @callee1(i32 10, i32 %x) [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float 0.000000e+00, i32 %l) ] 144*9880d681SAndroid Build Coastguard Worker to label %normal unwind label %exception 145*9880d681SAndroid Build Coastguard Worker; CHECK: invoke void @callee1(i32 10, i32 %x) [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float 0.000000e+00, i32 %l) ] 146*9880d681SAndroid Build Coastguard Worker 147*9880d681SAndroid Build Coastguard Workerexception: 148*9880d681SAndroid Build Coastguard Worker %cleanup = landingpad i8 cleanup 149*9880d681SAndroid Build Coastguard Worker br label %normal 150*9880d681SAndroid Build Coastguard Workernormal: 151*9880d681SAndroid Build Coastguard Worker ret void 152*9880d681SAndroid Build Coastguard Worker} 153