xref: /llvm-project/llvm/test/Transforms/GlobalOpt/alias-weak.ll (revision c79690040acf5bb3d857558b0878db47f7f23dc3)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals all --include-generated-funcs --version 4
2; RUN: opt < %s -passes=globalopt -S | FileCheck %s
3
4@f1_alias = linkonce_odr hidden alias void (), ptr @f1
5@f2_alias = linkonce_odr hidden alias void (), ptr @f2
6
7define void @foo() {
8  call void @f1_alias()
9  ret void
10}
11
12define void @bar() {
13  call void @f1()
14  ret void
15}
16
17define void @baz() {
18  call void @f2_alias()
19  ret void
20}
21
22; We cannot use `f1_alias` to replace `f1` because they are both in use
23; and `f1_alias` could be replaced at link time.
24define internal void @f1() {
25  ret void
26}
27
28; FIXME: We can use `f2_alias` to replace `f2` because `b2` is not in use.
29define internal void @f2() {
30  ret void
31}
32;.
33; CHECK: @f1_alias = linkonce_odr hidden alias void (), ptr @f1
34; CHECK: @f2_alias = linkonce_odr hidden alias void (), ptr @f2
35;.
36; CHECK-LABEL: define void @foo() local_unnamed_addr {
37; CHECK-NEXT:    call void @f1_alias()
38; CHECK-NEXT:    ret void
39;
40;
41; CHECK-LABEL: define void @bar() local_unnamed_addr {
42; CHECK-NEXT:    call void @f1()
43; CHECK-NEXT:    ret void
44;
45;
46; CHECK-LABEL: define void @baz() local_unnamed_addr {
47; CHECK-NEXT:    call void @f2_alias()
48; CHECK-NEXT:    ret void
49;
50;
51; CHECK-LABEL: define internal void @f1() {
52; CHECK-NEXT:    ret void
53;
54;
55; CHECK-LABEL: define internal void @f2() {
56; CHECK-NEXT:    ret void
57;
58