1 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
2 target triple = "x86_64-grtev4-linux-gnu"
4 declare void @external_fct(i32)
6 define dso_local i32 @top() {
7 %a = call i32 @multiplier(i32 5)
8 %b = call i32 @adder(i32 10)
9 %ret = add nsw i32 %a, %b
10 call void @external_fct(i32 %ret)
14 define internal dso_local i32 @adder(i32) {
15 %2 = alloca i32, align 4
16 store i32 %0, i32* %2, align 4
17 %3 = load i32, i32* %2, align 4
18 %4 = call i32 @multiplier(i32 %3)
19 %5 = load i32, i32* %2, align 4
20 %6 = call i32 @switcher(i32 1)
21 %7 = add nsw i32 %4, %6
25 define internal i32 @multiplier(i32) {
26 %2 = alloca i32, align 4
27 store i32 %0, i32* %2, align 4
28 %3 = load i32, i32* %2, align 4
29 %4 = load i32, i32* %2, align 4
30 %5 = mul nsw i32 %3, %4
34 define i32 @switcher(i32) {
35 %2 = alloca i32, align 4
36 %3 = alloca i32, align 4
37 store i32 %0, i32* %3, align 4
38 %4 = load i32, i32* %3, align 4
39 switch i32 %4, label %11 [
44 ; <label>:5: ; preds = %1
45 store i32 2, i32* %2, align 4
48 ; <label>:6: ; preds = %1
49 %7 = load i32, i32* %3, align 4
50 %8 = load i32, i32* %3, align 4
51 %9 = call i32 @multiplier(i32 %8)
52 %10 = add nsw i32 %7, %9
53 store i32 %10, i32* %2, align 4
56 ; <label>:11: ; preds = %1
57 %adder.result = call i32 @adder(i32 2)
58 store i32 %adder.result, i32* %2, align 4
61 ; <label>:12: ; preds = %11, %6, %5
62 %13 = load i32, i32* %2, align 4
67 ; DEFAULT-LABEL: @adder
68 ; DEFAULT-NEXT: %2 = mul