xref: /llvm-project/llvm/test/Transforms/Inline/ML/Inputs/test-module.ll (revision 151602c7a9935558ca671b35359989b261045db0)
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