blob: 9d2c5caa4e548b87ef4109c62b02f4dd53dc3a40 [file] [log] [blame]
Erik Eckstein0c48dd82016-05-31 17:20:23 +00001; RUN: opt -S -mergefunc < %s | FileCheck %s
2
3; CHECK-LABEL: define i32 @func1
4; CHECK: call i32 @func2
5; CHECK: ret
6
7; CHECK-LABEL: define i32 @func2
8; CHECK: call i32 @unknown
9; CHECK: ret
10
11; CHECK-LABEL: define i32 @func4
12; CHECK: call i32 @func2
13; CHECK: ret
14
15; CHECK-LABEL: define weak i32 @func3_weak
16; CHECK: call i32 @func1
17; CHECK: ret
18
19define i32 @func1(i32 %x, i32 %y) {
20 %sum = add i32 %x, %y
21 %sum2 = add i32 %sum, %y
22 %sum3 = call i32 @func4(i32 %sum, i32 %sum2)
23 ret i32 %sum3
24}
25
26define i32 @func4(i32 %x, i32 %y) {
27 %sum = add i32 %x, %y
28 %sum2 = add i32 %sum, %y
29 %sum3 = call i32 @unknown(i32 %sum, i32 %sum2)
30 ret i32 %sum3
31}
32
33define weak i32 @func3_weak(i32 %x, i32 %y) {
34 %sum = add i32 %x, %y
35 %sum2 = add i32 %sum, %y
36 %sum3 = call i32 @func2(i32 %sum, i32 %sum2)
37 ret i32 %sum3
38}
39
40define i32 @func2(i32 %x, i32 %y) {
41 %sum = add i32 %x, %y
42 %sum2 = add i32 %sum, %y
43 %sum3 = call i32 @unknown(i32 %sum, i32 %sum2)
44 ret i32 %sum3
45}
46
47declare i32 @unknown(i32 %x, i32 %y)