177 lines · plain
1; RUN: llvm-as < %s | llvm-dis | FileCheck %s2 3declare void @callee0()4declare void @callee1(i32,i32)5 6define void @f0(i32* %ptr) {7; CHECK-LABEL: @f0(8 entry:9 %l = load i32, i32* %ptr10 %x = add i32 42, 111 call void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "bar"(float 0.000000e+00, i64 100, i32 %l) ]12; CHECK: call void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "bar"(float 0.000000e+00, i64 100, i32 %l) ]13 ret void14}15 16define void @f1(i32* %ptr) {17; CHECK-LABEL: @f1(18 entry:19 %l = load i32, i32* %ptr20 %x = add i32 42, 121 22 call void @callee0()23 call void @callee0() [ "foo"() ]24 call void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "bar"(float 0.000000e+00, i64 100, i32 %l) ]25; CHECK: @callee0(){{$}}26; CHECK-NEXT: call void @callee0() [ "foo"() ]27; CHECK-NEXT: call void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "bar"(float 0.000000e+00, i64 100, i32 %l) ]28 ret void29}30 31define void @f2(i32* %ptr) {32; CHECK-LABEL: @f2(33 entry:34 call void @callee0() [ "foo"() ]35; CHECK: call void @callee0() [ "foo"() ]36 ret void37}38 39define void @f3(i32* %ptr) {40; CHECK-LABEL: @f3(41 entry:42 %l = load i32, i32* %ptr43 %x = add i32 42, 144 call void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float 0.000000e+00, i32 %l) ]45; CHECK: call void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float 0.000000e+00, i32 %l) ]46 ret void47}48 49define void @f4(i32* %ptr) {50; CHECK-LABEL: @f4(51 entry:52 %l = load i32, i32* %ptr53 %x = add i32 42, 154 call void @callee1(i32 10, i32 %x) [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float 0.000000e+00, i32 %l) ]55; 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 ret void57}58 59define void @f5(i32 %x) {60entry:61 call void @callee1(i32 10, i32 %x) [ "foo"(i32 42, metadata !"abc"), "bar"(metadata !"abcde", metadata !"qwerty") ]62; CHECK: call void @callee1(i32 10, i32 %x) [ "foo"(i32 42, metadata !"abc"), "bar"(metadata !"abcde", metadata !"qwerty") ]63 ret void64}65 66; Invoke versions of the above tests:67 68 69define void @g0(i32* %ptr) personality i8 3 {70; CHECK-LABEL: @g0(71 entry:72 %l = load i32, i32* %ptr73 %x = add i32 42, 174 invoke void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "bar"(float 0.000000e+00, i64 100, i32 %l) ] to label %normal unwind label %exception75; CHECK: invoke void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "bar"(float 0.000000e+00, i64 100, i32 %l) ]76 77exception:78 %cleanup = landingpad i8 cleanup79 br label %normal80normal:81 ret void82}83 84define void @g1(i32* %ptr) personality i8 3 {85; CHECK-LABEL: @g1(86 entry:87 %l = load i32, i32* %ptr88 %x = add i32 42, 189 90 invoke void @callee0() to label %normal unwind label %exception91; CHECK: invoke void @callee0(){{$}}92 93exception:94 %cleanup = landingpad i8 cleanup95 br label %normal96 97normal:98 invoke void @callee0() [ "foo"() ] to label %normal1 unwind label %exception199; CHECK: invoke void @callee0() [ "foo"() ]100 101exception1:102 %cleanup1 = landingpad i8 cleanup103 br label %normal1104 105normal1:106 invoke void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float 0.000000e+00, i32 %l) ] to label %normal2 unwind label %exception2107; CHECK: invoke void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float 0.000000e+00, i32 %l) ]108 109exception2:110 %cleanup2 = landingpad i8 cleanup111 br label %normal2112 113normal2:114 ret void115}116 117define void @g2(i32* %ptr) personality i8 3 {118; CHECK-LABEL: @g2(119 entry:120 invoke void @callee0() [ "foo"() ] to label %normal unwind label %exception121; CHECK: invoke void @callee0() [ "foo"() ]122 123exception:124 %cleanup = landingpad i8 cleanup125 br label %normal126normal:127 ret void128}129 130define void @g3(i32* %ptr) personality i8 3 {131; CHECK-LABEL: @g3(132 entry:133 %l = load i32, i32* %ptr134 %x = add i32 42, 1135 invoke void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float 0.000000e+00, i32 %l) ] to label %normal unwind label %exception136; CHECK: invoke void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float 0.000000e+00, i32 %l) ]137 138exception:139 %cleanup = landingpad i8 cleanup140 br label %normal141normal:142 ret void143}144 145define void @g4(i32* %ptr) personality i8 3 {146; CHECK-LABEL: @g4(147 entry:148 %l = load i32, i32* %ptr149 %x = add i32 42, 1150 invoke void @callee1(i32 10, i32 %x) [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float 0.000000e+00, i32 %l) ]151 to label %normal unwind label %exception152; CHECK: invoke void @callee1(i32 10, i32 %x) [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float 0.000000e+00, i32 %l) ]153 154exception:155 %cleanup = landingpad i8 cleanup156 br label %normal157normal:158 ret void159}160 161define void @g5(ptr %ptr) personality i8 3 {162entry:163 %l = load i32, ptr %ptr, align 4164 %x = add i32 42, 1165 invoke void @callee1(i32 10, i32 %x) [ "foo"(i32 42, metadata !"abc"), "bar"(metadata !"abcde", metadata !"qwerty") ]166 to label %normal unwind label %exception167; CHECK: invoke void @callee1(i32 10, i32 %x) [ "foo"(i32 42, metadata !"abc"), "bar"(metadata !"abcde", metadata !"qwerty") ]168 169exception: ; preds = %entry170 %cleanup = landingpad i8171 cleanup172 br label %normal173 174normal: ; preds = %exception, %entry175 ret void176}177