|  | target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" | 
|  | target triple = "x86_64-grtev4-linux-gnu" | 
|  |  | 
|  | declare void @external_fct(i32) | 
|  |  | 
|  | define dso_local i32 @top() { | 
|  | %a = call i32 @multiplier(i32 5) | 
|  | %b = call i32 @adder(i32 10) | 
|  | %ret = add nsw i32 %a, %b | 
|  | call void @external_fct(i32 %ret) | 
|  | ret i32 %ret | 
|  | } | 
|  |  | 
|  | define internal dso_local i32 @adder(i32) { | 
|  | %2 = alloca i32, align 4 | 
|  | store i32 %0, ptr %2, align 4 | 
|  | %3 = load i32, ptr %2, align 4 | 
|  | %4 = call i32 @multiplier(i32 %3) | 
|  | %5 = load i32, ptr %2, align 4 | 
|  | %6 = call i32 @switcher(i32 1) | 
|  | %7 = add nsw i32 %4, %6 | 
|  | ret i32 %7 | 
|  | } | 
|  |  | 
|  | define internal i32 @multiplier(i32) { | 
|  | %2 = alloca i32, align 4 | 
|  | store i32 %0, ptr %2, align 4 | 
|  | %3 = load i32, ptr %2, align 4 | 
|  | %4 = load i32, ptr %2, align 4 | 
|  | %5 = mul nsw i32 %3, %4 | 
|  | ret i32 %5 | 
|  | } | 
|  |  | 
|  | define i32 @switcher(i32) { | 
|  | %2 = alloca i32, align 4 | 
|  | %3 = alloca i32, align 4 | 
|  | store i32 %0, ptr %3, align 4 | 
|  | %4 = load i32, ptr %3, align 4 | 
|  | switch i32 %4, label %11 [ | 
|  | i32 1, label %5 | 
|  | i32 2, label %6 | 
|  | ] | 
|  |  | 
|  | ; <label>:5:                                      ; preds = %1 | 
|  | store i32 2, ptr %2, align 4 | 
|  | br label %12 | 
|  |  | 
|  | ; <label>:6:                                      ; preds = %1 | 
|  | %7 = load i32, ptr %3, align 4 | 
|  | %8 = load i32, ptr %3, align 4 | 
|  | %9 = call i32 @multiplier(i32 %8) | 
|  | %10 = add nsw i32 %7, %9 | 
|  | store i32 %10, ptr %2, align 4 | 
|  | br label %12 | 
|  |  | 
|  | ; <label>:11:                                     ; preds = %1 | 
|  | %adder.result = call i32 @adder(i32 2) | 
|  | store i32 %adder.result, ptr %2, align 4 | 
|  | br label %12 | 
|  |  | 
|  | ; <label>:12:                                     ; preds = %11, %6, %5 | 
|  | %13 = load i32, ptr %2, align 4 | 
|  | ret i32 %13 | 
|  | } | 
|  |  | 
|  | ; CHECK-NOT: @adder | 
|  | ; DEFAULT-LABEL:        @adder | 
|  | ; DEFAULT-NEXT:         %2 = mul |