68 lines · plain
1target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"2target triple = "x86_64-grtev4-linux-gnu"3 4declare void @external_fct(i32)5 6define dso_local i32 @top() {7 %a = call i32 @multiplier(i32 5)8 %b = call i32 @adder(i32 10)9 %ret = add nsw i32 %a, %b10 call void @external_fct(i32 %ret)11 ret i32 %ret12}13 14define internal dso_local i32 @adder(i32) {15 %2 = alloca i32, align 416 store i32 %0, ptr %2, align 417 %3 = load i32, ptr %2, align 418 %4 = call i32 @multiplier(i32 %3)19 %5 = load i32, ptr %2, align 420 %6 = call i32 @switcher(i32 1)21 %7 = add nsw i32 %4, %622 ret i32 %723}24 25define internal i32 @multiplier(i32) {26 %2 = alloca i32, align 427 store i32 %0, ptr %2, align 428 %3 = load i32, ptr %2, align 429 %4 = load i32, ptr %2, align 430 %5 = mul nsw i32 %3, %431 ret i32 %532}33 34define i32 @switcher(i32) {35 %2 = alloca i32, align 436 %3 = alloca i32, align 437 store i32 %0, ptr %3, align 438 %4 = load i32, ptr %3, align 439 switch i32 %4, label %11 [40 i32 1, label %541 i32 2, label %642 ]43 44; <label>:5: ; preds = %145 store i32 2, ptr %2, align 446 br label %1247 48; <label>:6: ; preds = %149 %7 = load i32, ptr %3, align 450 %8 = load i32, ptr %3, align 451 %9 = call i32 @multiplier(i32 %8)52 %10 = add nsw i32 %7, %953 store i32 %10, ptr %2, align 454 br label %1255 56; <label>:11: ; preds = %157 %adder.result = call i32 @adder(i32 2)58 store i32 %adder.result, ptr %2, align 459 br label %1260 61; <label>:12: ; preds = %11, %6, %562 %13 = load i32, ptr %2, align 463 ret i32 %1364}65 66; CHECK-NOT: @adder67; DEFAULT-LABEL: @adder68; DEFAULT-NEXT: %2 = mul