OLD | NEW |
1 ; RUN: opt -flatten-globals %s -S | FileCheck %s | 1 ; RUN: opt -flatten-globals %s -S | FileCheck %s |
2 ; RUN: opt -flatten-globals %s -S | FileCheck %s -check-prefix=CLEANED | 2 ; RUN: opt -flatten-globals %s -S | FileCheck %s -check-prefix=CLEANED |
3 | 3 |
| 4 ; Check that the pass can handle its own output (idempotence). |
| 5 ; RUN: opt -flatten-globals -flatten-globals %s -S |
| 6 |
4 target datalayout = "p:32:32:32" | 7 target datalayout = "p:32:32:32" |
5 | 8 |
6 | 9 |
7 ; Check simple cases | 10 ; Check simple cases |
8 | 11 |
9 @var_i32 = global i32 258 | 12 @var_i32 = global i32 258 |
10 ; CHECK: @var_i32 = global [4 x i8] c"\02\01\00\00" | 13 ; CHECK: @var_i32 = global [4 x i8] c"\02\01\00\00" |
11 ; CLEANED-NOT: global i32 258 | 14 ; CLEANED-NOT: global i32 258 |
12 | 15 |
13 @external_var = external global i32 | 16 @external_var = external global i32 |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 i8* bitcast (void ()* @func_with_block to i8*), i32 123) | 183 i8* bitcast (void ()* @func_with_block to i8*), i32 123) |
181 ; CHECK: @func_addend = global i32 add (i32 ptrtoint (void ()* @func_with_block
to i32), i32 123) | 184 ; CHECK: @func_addend = global i32 add (i32 ptrtoint (void ()* @func_with_block
to i32), i32 123) |
182 | 185 |
183 ; Similarly, adding an offset to a label address isn't useful, but | 186 ; Similarly, adding an offset to a label address isn't useful, but |
184 ; check it anyway. | 187 ; check it anyway. |
185 @block_addend = global i8* getelementptr ( | 188 @block_addend = global i8* getelementptr ( |
186 i8, | 189 i8, |
187 i8* blockaddress(@func_with_block, %label), i32 100) | 190 i8* blockaddress(@func_with_block, %label), i32 100) |
188 ; CHECK: @block_addend = global i32 add (i32 ptrtoint (i8* blockaddress(@func_wi
th_block, %label) to i32), i32 100) | 191 ; CHECK: @block_addend = global i32 add (i32 ptrtoint (i8* blockaddress(@func_wi
th_block, %label) to i32), i32 100) |
189 | 192 |
| 193 @add_expr = global i32 add (i32 ptrtoint (%ptrs1* @ptrs1 to i32), i32 8) |
| 194 ; CHECK: @add_expr = global i32 add (i32 ptrtoint (<{ i32, [8 x i8] }>* @ptrs1 t
o i32), i32 8) |
| 195 |
190 | 196 |
191 ; Special cases | 197 ; Special cases |
192 | 198 |
193 ; Leave vars with "appending" linkage alone. | 199 ; Leave vars with "appending" linkage alone. |
194 @appending = appending global [1 x i32*] [i32* @var1] | 200 @appending = appending global [1 x i32*] [i32* @var1] |
195 ; CHECK: @appending = appending global [1 x i32*] [i32* bitcast ([4 x i8]* @var1
to i32*)] | 201 ; CHECK: @appending = appending global [1 x i32*] [i32* bitcast ([4 x i8]* @var1
to i32*)] |
196 | 202 |
197 | 203 |
198 define i32* @get_address() { | 204 define i32* @get_address() { |
199 ret i32* @var_i32 | 205 ret i32* @var_i32 |
200 } | 206 } |
201 ; CHECK: define i32* @get_address() { | 207 ; CHECK: define i32* @get_address() { |
202 ; CHECK-NEXT: ret i32* bitcast ([4 x i8]* @var_i32 to i32*) | 208 ; CHECK-NEXT: ret i32* bitcast ([4 x i8]* @var_i32 to i32*) |
203 | 209 |
204 | 210 |
205 define void @func_with_block() { | 211 define void @func_with_block() { |
206 br label %label | 212 br label %label |
207 label: | 213 label: |
208 ret void | 214 ret void |
209 } | 215 } |
OLD | NEW |