[InstCombine] Signed saturation patterns
[llvm-core.git] / test / Transforms / MergeFunc / external-before-local.ll
blob7dcdb0153dfb89b995574b2d80965e961e95a95f
1 ; RUN: opt -S -mergefunc < %s | FileCheck %s
3 ; We should normalize to test2 rather than test1,
4 ; because it allows us to drop test1 entirely
6 ; CHECK-NOT: define internal void @test1() unnamed_addr
7 ; CHECK: define void @test3() unnamed_addr
8 ; CHECK-NEXT: call void @test2()
9 ; CHECK-NEXT: call void @test2()
10   
11 declare void @dummy()
13 define internal void @test1() unnamed_addr {
14     call void @dummy()
15     call void @dummy()
16     ret void
19 define void @test2() unnamed_addr {
20     call void @dummy()
21     call void @dummy()
22     ret void
25 define void @test3() unnamed_addr {
26     call void @test1()
27     call void @test2()
28     ret void
31 ; We should normalize to the existing test6 rather than
32 ; to a new anonymous strong backing function
34 ; CHECK: define weak void @test5()
35 ; CHECK-NEXT: tail call void @test6()
36 ; CHECK: define weak void @test4()
37 ; CHECK-NEXT: tail call void @test6()
39 declare void @dummy2()
40   
41 define weak void @test4() {
42     call void @dummy2()
43     call void @dummy2()
44     ret void
46 define weak void @test5() {
47     call void @dummy2()
48     call void @dummy2()
49     ret void
51 define void @test6() {
52     call void @dummy2()
53     call void @dummy2()
54     ret void