1bdceefe9SMircea Trofintarget datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 2bdceefe9SMircea Trofintarget triple = "x86_64-grtev4-linux-gnu" 3bdceefe9SMircea Trofin 4bdceefe9SMircea Trofindeclare void @external_fct(i32) 5bdceefe9SMircea Trofin 6bdceefe9SMircea Trofindefine dso_local i32 @top() { 7bdceefe9SMircea Trofin %a = call i32 @multiplier(i32 5) 8bdceefe9SMircea Trofin %b = call i32 @adder(i32 10) 9bdceefe9SMircea Trofin %ret = add nsw i32 %a, %b 10bdceefe9SMircea Trofin call void @external_fct(i32 %ret) 11bdceefe9SMircea Trofin ret i32 %ret 12bdceefe9SMircea Trofin} 13bdceefe9SMircea Trofin 14bdceefe9SMircea Trofindefine internal dso_local i32 @adder(i32) { 15bdceefe9SMircea Trofin %2 = alloca i32, align 4 16*151602c7SNikita Popov store i32 %0, ptr %2, align 4 17*151602c7SNikita Popov %3 = load i32, ptr %2, align 4 18bdceefe9SMircea Trofin %4 = call i32 @multiplier(i32 %3) 19*151602c7SNikita Popov %5 = load i32, ptr %2, align 4 20bdceefe9SMircea Trofin %6 = call i32 @switcher(i32 1) 21bdceefe9SMircea Trofin %7 = add nsw i32 %4, %6 22bdceefe9SMircea Trofin ret i32 %7 23bdceefe9SMircea Trofin} 24bdceefe9SMircea Trofin 25bdceefe9SMircea Trofindefine internal i32 @multiplier(i32) { 26bdceefe9SMircea Trofin %2 = alloca i32, align 4 27*151602c7SNikita Popov store i32 %0, ptr %2, align 4 28*151602c7SNikita Popov %3 = load i32, ptr %2, align 4 29*151602c7SNikita Popov %4 = load i32, ptr %2, align 4 30bdceefe9SMircea Trofin %5 = mul nsw i32 %3, %4 31bdceefe9SMircea Trofin ret i32 %5 32bdceefe9SMircea Trofin} 33bdceefe9SMircea Trofin 34bdceefe9SMircea Trofindefine i32 @switcher(i32) { 35bdceefe9SMircea Trofin %2 = alloca i32, align 4 36bdceefe9SMircea Trofin %3 = alloca i32, align 4 37*151602c7SNikita Popov store i32 %0, ptr %3, align 4 38*151602c7SNikita Popov %4 = load i32, ptr %3, align 4 39bdceefe9SMircea Trofin switch i32 %4, label %11 [ 40bdceefe9SMircea Trofin i32 1, label %5 41bdceefe9SMircea Trofin i32 2, label %6 42bdceefe9SMircea Trofin ] 43bdceefe9SMircea Trofin 44bdceefe9SMircea Trofin; <label>:5: ; preds = %1 45*151602c7SNikita Popov store i32 2, ptr %2, align 4 46bdceefe9SMircea Trofin br label %12 47bdceefe9SMircea Trofin 48bdceefe9SMircea Trofin; <label>:6: ; preds = %1 49*151602c7SNikita Popov %7 = load i32, ptr %3, align 4 50*151602c7SNikita Popov %8 = load i32, ptr %3, align 4 51bdceefe9SMircea Trofin %9 = call i32 @multiplier(i32 %8) 52bdceefe9SMircea Trofin %10 = add nsw i32 %7, %9 53*151602c7SNikita Popov store i32 %10, ptr %2, align 4 54bdceefe9SMircea Trofin br label %12 55bdceefe9SMircea Trofin 56bdceefe9SMircea Trofin; <label>:11: ; preds = %1 57bdceefe9SMircea Trofin %adder.result = call i32 @adder(i32 2) 58*151602c7SNikita Popov store i32 %adder.result, ptr %2, align 4 59bdceefe9SMircea Trofin br label %12 60bdceefe9SMircea Trofin 61bdceefe9SMircea Trofin; <label>:12: ; preds = %11, %6, %5 62*151602c7SNikita Popov %13 = load i32, ptr %2, align 4 63bdceefe9SMircea Trofin ret i32 %13 64bdceefe9SMircea Trofin} 6573f02a61SMircea Trofin 6673f02a61SMircea Trofin; CHECK-NOT: @adder 6773f02a61SMircea Trofin; DEFAULT-LABEL: @adder 6873f02a61SMircea Trofin; DEFAULT-NEXT: %2 = mul