Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(317)

Side by Side Diff: test/Transforms/NaCl/flatten-globals.ll

Issue 1151093004: Changes from 3.7 merge to files not in upstream (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-llvm.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 target datalayout = "p:32:32:32" 4 target datalayout = "p:32:32:32"
5 5
6 6
7 ; Check simple cases 7 ; Check simple cases
8 8
9 @var_i32 = global i32 258 9 @var_i32 = global i32 258
10 ; CHECK: @var_i32 = global [4 x i8] c"\02\01\00\00" 10 ; CHECK: @var_i32 = global [4 x i8] c"\02\01\00\00"
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 143
144 @block_addr = global i8* blockaddress(@func_with_block, %label) 144 @block_addr = global i8* blockaddress(@func_with_block, %label)
145 ; CHECK: @block_addr = global i32 ptrtoint (i8* blockaddress(@func_with_block, % label) to i32) 145 ; CHECK: @block_addr = global i32 ptrtoint (i8* blockaddress(@func_with_block, % label) to i32)
146 146
147 @vector_reloc = global <2 x i32*> <i32* @var1, i32* @var1> 147 @vector_reloc = global <2 x i32*> <i32* @var1, i32* @var1>
148 ; CHECK: global <{ i32, i32 }> <{ i32 ptrtoint ([4 x i8]* @var1 to i32), i32 ptr toint ([4 x i8]* @var1 to i32) }> 148 ; CHECK: global <{ i32, i32 }> <{ i32 ptrtoint ([4 x i8]* @var1 to i32), i32 ptr toint ([4 x i8]* @var1 to i32) }>
149 149
150 150
151 ; Global references with addends 151 ; Global references with addends
152 152
153 @reloc_addend = global i32* getelementptr (%ptrs1* @ptrs1, i32 0, i32 2) 153 @reloc_addend = global i32* getelementptr (%ptrs1, %ptrs1* @ptrs1, i32 0, i32 2)
154 ; CHECK: @reloc_addend = global i32 add (i32 ptrtoint (<{ i32, [8 x i8] }>* @ptr s1 to i32), i32 8) 154 ; CHECK: @reloc_addend = global i32 add (i32 ptrtoint (<{ i32, [8 x i8] }>* @ptr s1 to i32), i32 8)
155 155
156 @negative_addend = global %ptrs1* getelementptr (%ptrs1* @ptrs1, i32 -1) 156 @negative_addend = global %ptrs1* getelementptr (%ptrs1, %ptrs1* @ptrs1, i32 -1)
157 ; CHECK: @negative_addend = global i32 add (i32 ptrtoint (<{ i32, [8 x i8] }>* @ ptrs1 to i32), i32 -12) 157 ; CHECK: @negative_addend = global i32 add (i32 ptrtoint (<{ i32, [8 x i8] }>* @ ptrs1 to i32), i32 -12)
158 158
159 @const_ptr = global i32* getelementptr (%ptrs1* null, i32 0, i32 2) 159 @const_ptr = global i32* getelementptr (%ptrs1, %ptrs1* null, i32 0, i32 2)
160 ; CHECK: @const_ptr = global [4 x i8] c"\08\00\00\00" 160 ; CHECK: @const_ptr = global [4 x i8] c"\08\00\00\00"
161 161
162 @int_to_ptr = global i32* inttoptr (i16 260 to i32*) 162 @int_to_ptr = global i32* inttoptr (i16 260 to i32*)
163 ; CHECK: @int_to_ptr = global [4 x i8] c"\04\01\00\00" 163 ; CHECK: @int_to_ptr = global [4 x i8] c"\04\01\00\00"
164 164
165 ; Clang allows "(uintptr_t) &var" as a global initializer, so we 165 ; Clang allows "(uintptr_t) &var" as a global initializer, so we
166 ; handle this case. 166 ; handle this case.
167 @ptr_to_int = global i32 ptrtoint (i8* @var2 to i32) 167 @ptr_to_int = global i32 ptrtoint (i8* @var2 to i32)
168 ; CHECK: @ptr_to_int = global i32 ptrtoint ([1 x i8]* @var2 to i32) 168 ; CHECK: @ptr_to_int = global i32 ptrtoint ([1 x i8]* @var2 to i32)
169 169
170 ; This is handled via Constant folding. The getelementptr is 170 ; This is handled via Constant folding. The getelementptr is
171 ; converted to an undef when it is created, so the pass does not see a 171 ; converted to an undef when it is created, so the pass does not see a
172 ; getelementptr here. 172 ; getelementptr here.
173 @undef_gep = global i32* getelementptr (%ptrs1* undef, i32 0, i32 2) 173 @undef_gep = global i32* getelementptr (%ptrs1, %ptrs1* undef, i32 0, i32 2)
174 ; CHECK: @undef_gep = global [4 x i8] zeroinitializer 174 ; CHECK: @undef_gep = global [4 x i8] zeroinitializer
175 175
176 ; Adding an offset to a function address isn't useful, but check that 176 ; Adding an offset to a function address isn't useful, but check that
177 ; the pass handles it anyway. 177 ; the pass handles it anyway.
178 @func_addend = global i8* getelementptr ( 178 @func_addend = global i8* getelementptr (
179 i8,
179 i8* bitcast (void ()* @func_with_block to i8*), i32 123) 180 i8* bitcast (void ()* @func_with_block to i8*), i32 123)
180 ; CHECK: @func_addend = global i32 add (i32 ptrtoint (void ()* @func_with_block to i32), i32 123) 181 ; CHECK: @func_addend = global i32 add (i32 ptrtoint (void ()* @func_with_block to i32), i32 123)
181 182
182 ; Similarly, adding an offset to a label address isn't useful, but 183 ; Similarly, adding an offset to a label address isn't useful, but
183 ; check it anyway. 184 ; check it anyway.
184 @block_addend = global i8* getelementptr ( 185 @block_addend = global i8* getelementptr (
186 i8,
185 i8* blockaddress(@func_with_block, %label), i32 100) 187 i8* blockaddress(@func_with_block, %label), i32 100)
186 ; CHECK: @block_addend = global i32 add (i32 ptrtoint (i8* blockaddress(@func_wi th_block, %label) to i32), i32 100) 188 ; CHECK: @block_addend = global i32 add (i32 ptrtoint (i8* blockaddress(@func_wi th_block, %label) to i32), i32 100)
187 189
188 190
189 ; Special cases 191 ; Special cases
190 192
191 ; Leave vars with "appending" linkage alone. 193 ; Leave vars with "appending" linkage alone.
192 @appending = appending global [1 x i32*] [i32* @var1] 194 @appending = appending global [1 x i32*] [i32* @var1]
193 ; CHECK: @appending = appending global [1 x i32*] [i32* bitcast ([4 x i8]* @var1 to i32*)] 195 ; CHECK: @appending = appending global [1 x i32*] [i32* bitcast ([4 x i8]* @var1 to i32*)]
194 196
195 197
196 define i32* @get_address() { 198 define i32* @get_address() {
197 ret i32* @var_i32 199 ret i32* @var_i32
198 } 200 }
199 ; CHECK: define i32* @get_address() { 201 ; CHECK: define i32* @get_address() {
200 ; CHECK-NEXT: ret i32* bitcast ([4 x i8]* @var_i32 to i32*) 202 ; CHECK-NEXT: ret i32* bitcast ([4 x i8]* @var_i32 to i32*)
201 203
202 204
203 define void @func_with_block() { 205 define void @func_with_block() {
204 br label %label 206 br label %label
205 label: 207 label:
206 ret void 208 ret void
207 } 209 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698