| ; RUN: opt -S -mergefunc < %s | FileCheck %s |
| ; We should normalize to test2 rather than test1, |
| ; because it allows us to drop test1 entirely |
| ; CHECK-NOT: define internal void @test1() unnamed_addr |
| ; CHECK: define void @test3() unnamed_addr |
| ; CHECK-NEXT: call void @test2() |
| ; CHECK-NEXT: call void @test2() |
| define internal void @test1() unnamed_addr { |
| define void @test2() unnamed_addr { |
| define void @test3() unnamed_addr { |
| ; We should normalize to the existing test6 rather than |
| ; to a new anonymous strong backing function |
| ; CHECK: define weak void @test5() |
| ; CHECK-NEXT: tail call void @test6() |
| ; CHECK: define weak void @test4() |
| ; CHECK-NEXT: tail call void @test6() |
| define weak void @test4() { |
| define weak void @test5() { |