brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 005731f Raw
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