[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / PowerPC / aix-alias.ll
blob189b95c1b81d0af2b96926bc656838e6fb9444ee
1 ; TODO: Add object generation test when visibility for object generation
2 ;       is implemented.
4 ; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \
5 ; RUN:     -mattr=-altivec -data-sections=false -xcoff-traceback-table=false < %s | \
6 ; RUN:   FileCheck --check-prefix=ASM %s
7 ; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 \
8 ; RUN:     -mattr=-altivec -data-sections=false -xcoff-traceback-table=false < %s | \
9 ; RUN:   FileCheck --check-prefix=ASM %s
11 @var = global i32 42
12 @var1 = alias i32, ptr @var
13 @var2 = alias i32, ptr @var1
14 @var_l = linkonce_odr alias i32, ptr @var
15 @var_i = internal alias i32, ptr @var
16 @var_h = hidden alias i32, ptr @var
17 @var_p = protected alias i32, ptr @var
19 @array = global [2 x i32] [i32 1, i32 2], align 4
20 @x = global ptr getelementptr (i8, ptr @array, i64 4), align 4
21 @bitcast_alias = alias ptr, ptr @x
23 define i32 @fun() {
24   ret i32 0
27 %FunTy = type i32()
28 @fun_weak = weak alias %FunTy, ptr @fun
29 @fun_hidden = hidden alias %FunTy, ptr @fun
30 @fun_ptr = global ptr @fun_weak
32 define i32 @test() {
33 entry:
34    %tmp = load i32, ptr @var1
35    %tmp1 = load i32, ptr @var2
36    %tmp0 = load i32, ptr @var_i
37    %tmp2 = call i32 @fun()
38    %tmp3 = add i32 %tmp, %tmp2
39    %tmp4 = call i32 @fun_weak()
40    %tmp5 = add i32 %tmp3, %tmp4
41    %tmp6 = add i32 %tmp1, %tmp5
42    %tmp7 = add i32 %tmp6, %tmp0
43    %fun_ptr1 = alloca ptr
44    store ptr @fun_weak, ptr %fun_ptr1
45    %tmp8 = call i32 %fun_ptr1()
46    %tmp9 = call i32 @fun_hidden()
47    %tmp10 = add i32 %tmp7, %tmp8
48    %tmp11 = add i32 %tmp10, %tmp9
49    ret i32 %tmp11
52 ; ASM:         .globl  fun[DS]
53 ; ASM-NEXT:    .globl  .fun
54 ; ASM-NEXT:    .align  4
55 ; ASM-NEXT:    .csect fun[DS]
56 ; ASM-NEXT:  fun_weak:                               # @fun
57 ; ASM-NEXT:  fun_hidden:
58 ; ASM:         .csect [PR],5
59 ; ASM-NEXT:  .fun:
60 ; ASM-NEXT:  .fun_weak:
61 ; ASM-NEXT:  .fun_hidden:
62 ; ASM-NEXT:  # %bb.0:
63 ; ASM-NEXT:    li 3, 0
64 ; ASM-NEXT:    blr
65 ; ASM-NEXT:                                          # -- End function
66 ; ASM:       .csect [PR],5
67 ; ASM-NEXT:  .test:
68 ; ASM-NEXT:  # %bb.0:                                # %entry
69 ; ASM:         bl .fun
70 ; ASM-NEXT:    nop
71 ; ASM:         bl .fun_weak
72 ; ASM-NEXT:    nop
73 ; ASM:         bl .fun_hidden
74 ; ASM:                                               # -- End function
75 ; ASM-NEXT:    .csect .data[RW]
76 ; ASM-NEXT:    .globl  var
77 ; ASM-NEXT:    .globl  var1
78 ; ASM-NEXT:    .globl  var2
79 ; ASM-NEXT:    .weak   var_l
80 ; ASM-NEXT:    .lglobl var_i
81 ; ASM-NEXT:    .globl  var_h,hidden
82 ; ASM-NEXT:    .globl  var_p,protected
83 ; ASM:       var:
84 ; ASM-NEXT:  var1:
85 ; ASM-NEXT:  var2:
86 ; ASM-NEXT:  var_l:
87 ; ASM-NEXT:  var_i:
88 ; ASM-NEXT:  var_h:
89 ; ASM-NEXT:  var_p:
90 ; ASM-NEXT:    .vbyte  4, 42
91 ; ASM-NEXT:    .globl array
92 ; ASM:       array:
93 ; ASM-NEXT:    .vbyte 4, 1 # 0x1
94 ; ASM-NEXT:    .vbyte 4, 2 # 0x2
95 ; ASM-NEXT:    .globl x
96 ; ASM-NEXT:    .globl  bitcast_alias
97 ; ASM:       x:
98 ; ASM-NEXT:  bitcast_alias:
99 ; ASM-NEXT:    .vbyte  {{[0-9]+}}, array+4
100 ; ASM-NEXT:    .globl  fun_ptr
101 ; ASM:       fun_ptr:
102 ; ASM-NEXT:    .vbyte  {{[0-9]+}}, fun_weak
103 ; ASM-NEXT:    .weak fun_weak
104 ; ASM-NEXT:    .weak .fun_weak
105 ; ASM-NEXT:    .globl  fun_hidden,hidden
106 ; ASM-NEXT:    .globl  .fun_hidden,hidden
107 ; ASM-NEXT:    .toc
108 ; ASM-NEXT:  L..C0:
109 ; ASM-NEXT:    .tc var1[TC],var1
110 ; ASM-NEXT:  L..C1:
111 ; ASM-NEXT:    .tc var2[TC],var2
112 ; ASM-NEXT:  L..C2:
113 ; ASM-NEXT:    .tc var_i[TC],var_i
114 ; ASM-NEXT:  L..C3:
115 ; ASM-NEXT:    .tc fun_weak[TC],fun_weak