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

Side by Side Diff: tests_lit/reader_tests/extern_globals.ll

Issue 667763002: Fix handling of relocation names, so that prefix mangling works. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Fix nits. Created 6 years, 2 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
« src/IceGlobalInits.h ('K') | « src/PNaClTranslator.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 ; Test whether we don't mangle external, undefined, global names. This
2 ; feature is needed for cross tests on global initializer relocations.
3 ;
4 ; Note: This code was generated by compiling subzero/crosstest/test_global.cpp
5
6 ; RUN: %lc2i -i %s --insts --args --allow-uninitialized-globals | FileCheck %s
jvoung (off chromium) 2014/10/20 18:10:05 Add a comment on why lc2i and not p2i?
Karl 2014/10/20 21:09:33 Done.
7 ; RUN: %lc2i -i %s --insts --args --allow-uninitialized-globals \
8 ; RUN: -prefix Subzero_ | FileCheck --check-prefix=CROSS %s
9
10 ; ModuleID = '/tmp/tmpmLtol6/test_global.ll'
jvoung (off chromium) 2014/10/20 18:10:04 Could probably remove the ModuleID? I guess it dep
Karl 2014/10/20 21:09:33 Done.
11 target datalayout = "e-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64 :64:64-p:32:32:32-v128:32:32"
12 target triple = "i686-pc-linux-gnu"
13
14 @ArrayInitPartial = internal global [40 x i8] c"<\00\00\00F\00\00\00P\00\00\00Z\ 00\00\00d\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 4
15
16 ; CHECK: @ArrayInitPartial = internal global [40 x i8] c"<\00\00\00F\00\00\00P\0 0\00\00Z\00\00\00d\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0 0\00\00", align 4
17 ; CROSS: @Subzero_ArrayInitPartial = internal global [40 x i8] c"<\00\00\00F\00\ 00\00P\00\00\00Z\00\00\00d\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00", align 4
18
19 @ArrayInitFull = internal global [20 x i8] c"\0A\00\00\00\14\00\00\00\1E\00\00\0 0(\00\00\002\00\00\00", align 4
20
21 ; CHECK: @ArrayInitFull = internal global [20 x i8] c"\0A\00\00\00\14\00\00\00\1 E\00\00\00(\00\00\002\00\00\00", align 4
22 ; CROSS: @Subzero_ArrayInitFull = internal global [20 x i8] c"\0A\00\00\00\14\00 \00\00\1E\00\00\00(\00\00\002\00\00\00", align 4
23
24 @NumArraysElements = internal global [4 x i8] c"\06\00\00\00", align 4
25
26 ; CHECK: @NumArraysElements = internal global [4 x i8] c"\06\00\00\00", align 4
27 ; CROSS: @Subzero_NumArraysElements = internal global [4 x i8] c"\06\00\00\00", align 4
28
29 @Arrays = internal constant <{ i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8] }> <{ i32 ptrtoint ([40 x i8]* @ArrayIni tPartial to i32), [4 x i8] c"(\00\00\00", i32 ptrtoint ([20 x i8]* @ArrayInitFul l to i32), [4 x i8] c"\14\00\00\00", i32 ptrtoint ([12 x i8]* @_ZL10ArrayConst t o i32), [4 x i8] c"\0C\00\00\00", i32 ptrtoint ([80 x i8]* @_ZL11ArrayDouble to i32), [4 x i8] c"P\00\00\00", i32 add (i32 ptrtoint ([40 x i8]* @ArrayInitPartia l to i32), i32 8), [4 x i8] c" \00\00\00", i32 ptrtoint ([80 x i8]* @_ZL8StructE x to i32), [4 x i8] c"P\00\00\00" }>, align 4
30
31 ; CHECK: @Arrays = internal constant <{ i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8] }> <{ i32 ptrtoint ([40 x i8]* @ArrayInitPartial to i32), [4 x i8] c"(\00\00\00", i32 ptrtoint ([20 x i8]* @Arr ayInitFull to i32), [4 x i8] c"\14\00\00\00", i32 ptrtoint ([12 x i8]* @_ZL10Arr ayConst to i32), [4 x i8] c"\0C\00\00\00", i32 ptrtoint ([80 x i8]* @_ZL11ArrayD ouble to i32), [4 x i8] c"P\00\00\00", i32 add (i32 ptrtoint ([40 x i8]* @ArrayI nitPartial to i32), i32 8), [4 x i8] c" \00\00\00", i32 ptrtoint ([80 x i8]* @_Z L8StructEx to i32), [4 x i8] c"P\00\00\00" }>, align 4
32 ; CROSS: @Subzero_Arrays = internal constant <{ i32, [4 x i8], i32, [4 x i8], i3 2, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8] }> <{ i32 ptrtoint ([40 x i8]* @Subzero_ArrayInitPartial to i32), [4 x i8] c"(\00\00\00", i32 ptrtoint ([20 x i8]* @Subzero_ArrayInitFull to i32), [4 x i8] c"\14\00\00\00", i32 ptrtoi nt ([12 x i8]* @Subzero__ZL10ArrayConst to i32), [4 x i8] c"\0C\00\00\00", i32 p trtoint ([80 x i8]* @Subzero__ZL11ArrayDouble to i32), [4 x i8] c"P\00\00\00", i 32 add (i32 ptrtoint ([40 x i8]* @Subzero_ArrayInitPartial to i32), i32 8), [4 x i8] c" \00\00\00", i32 ptrtoint ([80 x i8]* @Subzero__ZL8StructEx to i32), [4 x i8] c"P\00\00\00" }>, align 4
33
34
35 @_ZL10ArrayConst = internal constant [12 x i8] c"\F6\FF\FF\FF\EC\FF\FF\FF\E2\FF\ FF\FF", align 4
36
37 ; CHECK: @_ZL10ArrayConst = internal constant [12 x i8] c"\F6\FF\FF\FF\EC\FF\FF\ FF\E2\FF\FF\FF", align 4
38 ; CROSS: @Subzero__ZL10ArrayConst = internal constant [12 x i8] c"\F6\FF\FF\FF\E C\FF\FF\FF\E2\FF\FF\FF", align 4
39
40 @_ZL11ArrayDouble = internal global [80 x i8] c"\00\00\00\00\00\00\E0?\00\00\00\ 00\00\00\F8?\00\00\00\00\00\00\04@\00\00\00\00\00\00\0C@\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0 0\00\00\00\00\00\00\00\00\00\00\00\00\00", align 8
41
42 ; CHECK: @_ZL11ArrayDouble = internal global [80 x i8] c"\00\00\00\00\00\00\E0?\ 00\00\00\00\00\00\F8?\00\00\00\00\00\00\04@\00\00\00\00\00\00\0C@\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0 0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 8
43 ; CROSS: @Subzero__ZL11ArrayDouble = internal global [80 x i8] c"\00\00\00\00\00 \00\E0?\00\00\00\00\00\00\F8?\00\00\00\00\00\00\04@\00\00\00\00\00\00\0C@\00\00\ 00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 8
44
45 @_ZL8StructEx = internal global [80 x i8] zeroinitializer, align 8
46
47 ; CHECK: @_ZL8StructEx = internal global [80 x i8] zeroinitializer, align 8
48 ; CROSS: @Subzero__ZL8StructEx = internal global [80 x i8] zeroinitializer, alig n 8
49
50 @ExternName1 = external global [4 x i8], align 4
51
52 ; CHECK: @ExternName1 = external global <{ }> <{ }>, align 4
53 ; CROSS: @ExternName1 = external global <{ }> <{ }>, align 4
54
55 @ExternName4 = external global [4 x i8], align 4
56
57 ; CHECK: @ExternName4 = external global <{ }> <{ }>, align 4
58 ; CROSS: @ExternName4 = external global <{ }> <{ }>, align 4
59
60 @ExternName3 = external global [4 x i8], align 4
61
62 ; CHECK: @ExternName3 = external global <{ }> <{ }>, align 4
63 ; CROSS: @ExternName3 = external global <{ }> <{ }>, align 4
64
65 @ExternName2 = external global [4 x i8], align 4
66
67 ; CHECK: @ExternName2 = external global <{ }> <{ }>, align 4
68 ; CROSS: @ExternName2 = external global <{ }> <{ }>, align 4
69
70 @ExternName5 = external global [4 x i8], align 4
71
72 ; CHECK: @ExternName5 = external global <{ }> <{ }>, align 4
73 ; CROSS: @ExternName5 = external global <{ }> <{ }>, align 4
74
75 define i32 @_Z12getNumArraysv() {
76 ; CHECK: define i32 @_Z12getNumArraysv() {
77 ; CROSS: define i32 @_ZN8Subzero_12getNumArraysEv() {
78 entry:
79 %NumArraysElements.bc = bitcast [4 x i8]* @NumArraysElements to i32*
80 ; CHECK: %NumArraysElements.bc = bitcast i32 @NumArraysElements to i32
81 ; CROSS: %NumArraysElements.bc = bitcast i32 @Subzero_NumArraysElements to i32
82 %0 = load i32* %NumArraysElements.bc, align 1
83 ret i32 %0
84 }
85
86 define i32 @_Z8getArrayjRj(i32 %WhichArray, i32 %Len) {
87 ; CHECK: define i32 @_Z8getArrayjRj(i32 %WhichArray, i32 %Len) {
88 ; CROSS: define i32 @_ZN8Subzero_8getArrayEjRj(i32 %WhichArray, i32 %Len) {
89 entry:
90 %NumArraysElements.bc = bitcast [4 x i8]* @NumArraysElements to i32*
91 ; CHECK: %NumArraysElements.bc = bitcast i32 @NumArraysElements to i32
92 ; CROSS: %NumArraysElements.bc = bitcast i32 @Subzero_NumArraysElements to i32
93 %0 = load i32* %NumArraysElements.bc, align 1
94 %cmp = icmp ugt i32 %0, %WhichArray
95 ; CHECK: %cmp = icmp ugt i32 %__3, %WhichArray
96 ; CROSS: %cmp = icmp ugt i32 %__3, %WhichArray
97 br i1 %cmp, label %if.end, label %if.then
98
99 if.then: ; preds = %entry
100 %Len.asptr = inttoptr i32 %Len to i32*
101 ; CHECK: %Len.asptr = i32 %Len
102 ; CROSS: %Len.asptr = i32 %Len
103 store i32 -1, i32* %Len.asptr, align 1
104 br label %return
105
106 if.end: ; preds = %entry
107 %gep_array = mul i32 %WhichArray, 8
108 ; CHECK: %gep_array = mul i32 %WhichArray, 8
109 ; CROSS: %gep_array = mul i32 %WhichArray, 8
110 %expanded1 = ptrtoint <{ i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8] }>* @Arrays to i32
111 ; CHECK: %expanded1 = i32 @Arrays
112 ; CROSS: %expanded1 = i32 @Subzero_Arrays
113 %gep = add i32 %expanded1, %gep_array
114 %gep1 = add i32 %gep, 4
115 %gep1.asptr = inttoptr i32 %gep1 to i32*
116 %1 = load i32* %gep1.asptr, align 1
117 %Len.asptr3 = inttoptr i32 %Len to i32*
118 ; CHECK: %Len.asptr3 = i32 %Len
119 ; CROSS: %Len.asptr3 = i32 %Len
120 store i32 %1, i32* %Len.asptr3, align 1
121 %gep_array3 = mul i32 %WhichArray, 8
122 ; CHECK: %gep_array3 = mul i32 %WhichArray, 8
123 ; CROSS: %gep_array3 = mul i32 %WhichArray, 8
124 %expanded2 = ptrtoint <{ i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8], i32, [4 x i8] }>* @Arrays to i32
125 ; CHECK: %expanded2 = i32 @Arrays
126 ; CROSS: %expanded2 = i32 @Subzero_Arrays
127 %gep4 = add i32 %expanded2, %gep_array3
128 %gep4.asptr = inttoptr i32 %gep4 to i32*
129 %2 = load i32* %gep4.asptr, align 1
130 br label %return
131
132 return: ; preds = %if.end, %if.then
133 %retval.0 = phi i32 [ 0, %if.then ], [ %2, %if.end ]
134 ret i32 %retval.0
135 }
136
137 define void @_GLOBAL__I_a() {
138 ; CHECK: define void @_GLOBAL__I_a() {
139 ; CROSS: define void @Subzero__GLOBAL__I_a() {
140 entry:
141 %_ZL8StructEx.bc = bitcast [80 x i8]* @_ZL8StructEx to i32*
142 ; CHECK: %_ZL8StructEx.bc = bitcast i32 @_ZL8StructEx to i32
143 ; CROSS: %_ZL8StructEx.bc = bitcast i32 @Subzero__ZL8StructEx to i32
144 store i32 10, i32* %_ZL8StructEx.bc, align 1
145 %expanded1 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
146 ; CHECK: %expanded1 = i32 @_ZL8StructEx
147 ; CROSS: %expanded1 = i32 @Subzero__ZL8StructEx
148 %gep = add i32 %expanded1, 4
149 %gep.asptr = inttoptr i32 %gep to i32*
150 store i32 20, i32* %gep.asptr, align 1
151 %expanded2 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
152 ; CHECK: %expanded2 = i32 @_ZL8StructEx
153 ; CROSS: %expanded2 = i32 @Subzero__ZL8StructEx
154 %gep18 = add i32 %expanded2, 8
155 %gep18.asptr = inttoptr i32 %gep18 to i32*
156 store i32 30, i32* %gep18.asptr, align 1
157 %expanded3 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
158 ; CHECK: %expanded3 = i32 @_ZL8StructEx
159 ; CROSS: %expanded3 = i32 @Subzero__ZL8StructEx
160 %gep20 = add i32 %expanded3, 12
161 %gep20.asptr = inttoptr i32 %gep20 to i32*
162 store i32 40, i32* %gep20.asptr, align 1
163 %expanded4 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
164 ; CHECK: %expanded4 = i32 @_ZL8StructEx
165 ; CROSS: %expanded4 = i32 @Subzero__ZL8StructEx
166 %gep22 = add i32 %expanded4, 16
167 %gep22.asptr = inttoptr i32 %gep22 to i32*
168 store i32 50, i32* %gep22.asptr, align 1
169 %ExternName1.bc = bitcast [4 x i8]* @ExternName1 to i32*
170 ; CHECK: %ExternName1.bc = bitcast i32 @ExternName1 to i32
171 ; CROSS: %ExternName1.bc = bitcast i32 @ExternName1 to i32
172 %0 = load i32* %ExternName1.bc, align 1
173 %expanded6 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
174 ; CHECK: %expanded6 = i32 @_ZL8StructEx
175 ; CROSS: %expanded6 = i32 @Subzero__ZL8StructEx
176 %gep24 = add i32 %expanded6, 20
177 %gep24.asptr = inttoptr i32 %gep24 to i32*
178 store i32 %0, i32* %gep24.asptr, align 1
179 %expanded7 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
180 ; CHECK: %expanded7 = i32 @_ZL8StructEx
181 ; CROSS: %expanded7 = i32 @Subzero__ZL8StructEx
182 %gep26 = add i32 %expanded7, 24
183 %gep26.asptr = inttoptr i32 %gep26 to double*
184 store double 5.000000e-01, double* %gep26.asptr, align 8
185 %expanded8 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
186 ; CHECK: %expanded8 = i32 @_ZL8StructEx
187 ; CROSS: %expanded8 = i32 @Subzero__ZL8StructEx
188 %gep28 = add i32 %expanded8, 32
189 %gep28.asptr = inttoptr i32 %gep28 to double*
190 store double 1.500000e+00, double* %gep28.asptr, align 8
191 %expanded9 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
192 ; CHECK: %expanded9 = i32 @_ZL8StructEx
193 ; CROSS: %expanded9 = i32 @Subzero__ZL8StructEx
194 %gep30 = add i32 %expanded9, 40
195 %gep30.asptr = inttoptr i32 %gep30 to double*
196 store double 2.500000e+00, double* %gep30.asptr, align 8
197 %ExternName4.bc = bitcast [4 x i8]* @ExternName4 to i32*
198 ; CHECK: %ExternName4.bc = bitcast i32 @ExternName4 to i32
199 ; CROSS: %ExternName4.bc = bitcast i32 @ExternName4 to i32
200 %1 = load i32* %ExternName4.bc, align 1
201 %expanded11 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
202 ; CHECK: %expanded11 = i32 @_ZL8StructEx
203 ; CROSS: %expanded11 = i32 @Subzero__ZL8StructEx
204 %gep32 = add i32 %expanded11, 48
205 %gep32.asptr = inttoptr i32 %gep32 to i32*
206 store i32 %1, i32* %gep32.asptr, align 1
207 %ExternName3.bc = bitcast [4 x i8]* @ExternName3 to i32*
208 ; CHECK: %ExternName3.bc = bitcast i32 @ExternName3 to i32
209 ; CROSS: %ExternName3.bc = bitcast i32 @ExternName3 to i32
210 %2 = load i32* %ExternName3.bc, align 1
211 %expanded13 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
212 ; CHECK: %expanded13 = i32 @_ZL8StructEx
213 ; CROSS: %expanded13 = i32 @Subzero__ZL8StructEx
214 %gep34 = add i32 %expanded13, 52
215 %gep34.asptr = inttoptr i32 %gep34 to i32*
216 store i32 %2, i32* %gep34.asptr, align 1
217 %expanded14 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
218 ; CHECK: %expanded14 = i32 @_ZL8StructEx
219 ; CROSS: %expanded14 = i32 @Subzero__ZL8StructEx
220 %gep36 = add i32 %expanded14, 56
221 %gep36.asptr = inttoptr i32 %gep36 to i32*
222 store i32 1000, i32* %gep36.asptr, align 1
223 %expanded15 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
224 ; CHECK: %expanded15 = i32 @_ZL8StructEx
225 ; CROSS: %expanded15 = i32 @Subzero__ZL8StructEx
226 %gep38 = add i32 %expanded15, 60
227 %gep38.asptr = inttoptr i32 %gep38 to i32*
228 store i32 1010, i32* %gep38.asptr, align 1
229 %expanded16 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
230 ; CHECK: %expanded16 = i32 @_ZL8StructEx
231 ; CROSS: %expanded16 = i32 @Subzero__ZL8StructEx
232 %gep40 = add i32 %expanded16, 64
233 %gep40.asptr = inttoptr i32 %gep40 to i32*
234 store i32 1020, i32* %gep40.asptr, align 1
235 %ExternName2.bc = bitcast [4 x i8]* @ExternName2 to i32*
236 ; CHECK: %ExternName2.bc = bitcast i32 @ExternName2 to i32
237 ; CROSS: %ExternName2.bc = bitcast i32 @ExternName2 to i32
238 %3 = load i32* %ExternName2.bc, align 1
239 %expanded18 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
240 ; CHECK: %expanded18 = i32 @_ZL8StructEx
241 ; CROSS: %expanded18 = i32 @Subzero__ZL8StructEx
242 %gep42 = add i32 %expanded18, 68
243 %gep42.asptr = inttoptr i32 %gep42 to i32*
244 store i32 %3, i32* %gep42.asptr, align 1
245 %ExternName5.bc = bitcast [4 x i8]* @ExternName5 to i32*
246 ; CHECK: %ExternName5.bc = bitcast i32 @ExternName5 to i32
247 ; CROSS: %ExternName5.bc = bitcast i32 @ExternName5 to i32
248 %4 = load i32* %ExternName5.bc, align 1
249 %expanded20 = ptrtoint [80 x i8]* @_ZL8StructEx to i32
250 ; CHECK: %expanded20 = i32 @_ZL8StructEx
251 ; CROSS: %expanded20 = i32 @Subzero__ZL8StructEx
252 %gep44 = add i32 %expanded20, 72
253 %gep44.asptr = inttoptr i32 %gep44 to i32*
254 store i32 %4, i32* %gep44.asptr, align 1
255 ret void
256 }
257
258 define i32 @nacl_tp_tdb_offset(i32) {
259 entry:
260 ret i32 0
261 }
262
263 define i32 @nacl_tp_tls_offset(i32 %size) {
264 entry:
265 %result = sub i32 0, %size
266 ret i32 %result
267 }
OLDNEW
« src/IceGlobalInits.h ('K') | « src/PNaClTranslator.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698