@@ -258,3 +258,116 @@ entry:
258
258
tail call void @callee2 (ptr noundef nonnull @e ) #4
259
259
ret void
260
260
}
261
+
262
+ ; Check the contents of the TLS data and the __ModuleStringPool structure to
263
+ ; check that TLS data has been skipped during string pool merging.
264
+
265
+ ; CHECK64: .csect a[TL],2
266
+ ; CHECK64-NEXT: .lglobl a[TL]
267
+ ; CHECK64-NEXT: .string "tls1"
268
+ ; CHECK64: .csect b[TL],2
269
+ ; CHECK64-NEXT: .lglobl b[TL]
270
+ ; CHECK64-NEXT: .string "tls2"
271
+ ; CHECK64: .csect L..__ModuleStringPool[RO],2
272
+ ; CHECK64-NEXT: .align 2
273
+ ; CHECK64-NEXT: .vbyte 4, 0x42af999a
274
+ ; CHECK64-NEXT: .vbyte 4, 0x42b1999a
275
+ ; CHECK64-NEXT: .vbyte 4, 0x42b3cccd
276
+ ; CHECK64-NEXT: .vbyte 4, 0x42b5999a
277
+ ; CHECK64-NEXT: .vbyte 4, 1
278
+ ; CHECK64-NEXT: .vbyte 4, 2
279
+ ; CHECK64-NEXT: .vbyte 4, 3
280
+ ; CHECK64-NEXT: .vbyte 4, 4
281
+ ; CHECK64-NEXT: .vbyte 4, 5
282
+ ; CHECK64-NEXT: .vbyte 4, 6
283
+ ; CHECK64-NEXT: .vbyte 4, 7
284
+ ; CHECK64-NEXT: .vbyte 4, 8
285
+ ; CHECK64-NEXT: .vbyte 4, 9
286
+ ; CHECK64-NEXT: .vbyte 4, 10
287
+ ; CHECK64-NEXT: .string "Regular global"
288
+ ; CHECK64-NEXT: .byte 'T,'L,'S,' ,'v,'a,'r,'i,'a,'b,'l,'e,' ,'1,',,' ,'2,' ,'a,'n,'d,' ,'n,'o,'n,'-,'T,'L,'S,' ,'v,'a,'r,':,' ,'%,'s,',,' ,'%,'s,',,' ,'%,'s,0012,0000
289
+ ; CHECK64: L..C1:
290
+ ; CHECK64-NEXT: .tc L..__ModuleStringPool[TC],L..__ModuleStringPool[RO]
291
+ ; CHECK64: L..C2:
292
+ ; CHECK64-NEXT: .tc a[TC],a[TL]@ld
293
+ ; CHECK64: L..C3:
294
+ ; CHECK64-NEXT: .tc b[TC],b[TL]@ld
295
+
296
+ ; CHECK32: .csect a[TL],2
297
+ ; CHECK32-NEXT: .lglobl a[TL]
298
+ ; CHECK32-NEXT: .string "tls1"
299
+ ; CHECK32: .csect b[TL],2
300
+ ; CHECK32-NEXT: .lglobl b[TL]
301
+ ; CHECK32-NEXT: .string "tls2"
302
+ ; CHECK32: .csect L..__ModuleStringPool[RO],2
303
+ ; CHECK32-NEXT: .align 2
304
+ ; CHECK32-NEXT: .vbyte 4, 0x42af999a
305
+ ; CHECK32-NEXT: .vbyte 4, 0x42b1999a
306
+ ; CHECK32-NEXT: .vbyte 4, 0x42b3cccd
307
+ ; CHECK32-NEXT: .vbyte 4, 0x42b5999a
308
+ ; CHECK32-NEXT: .vbyte 4, 1
309
+ ; CHECK32-NEXT: .vbyte 4, 2
310
+ ; CHECK32-NEXT: .vbyte 4, 3
311
+ ; CHECK32-NEXT: .vbyte 4, 4
312
+ ; CHECK32-NEXT: .vbyte 4, 5
313
+ ; CHECK32-NEXT: .vbyte 4, 6
314
+ ; CHECK32-NEXT: .vbyte 4, 7
315
+ ; CHECK32-NEXT: .vbyte 4, 8
316
+ ; CHECK32-NEXT: .vbyte 4, 9
317
+ ; CHECK32-NEXT: .vbyte 4, 10
318
+ ; CHECK32-NEXT: .string "Regular global"
319
+ ; CHECK32-NEXT: .byte 'T,'L,'S,' ,'v,'a,'r,'i,'a,'b,'l,'e,' ,'1,',,' ,'2,' ,'a,'n,'d,' ,'n,'o,'n,'-,'T,'L,'S,' ,'v,'a,'r,':,' ,'%,'s,',,' ,'%,'s,',,' ,'%,'s,0012,0000
320
+ ; CHECK32: L..C1:
321
+ ; CHECK32-NEXT: .tc L..__ModuleStringPool[TC],L..__ModuleStringPool[RO]
322
+ ; CHECK32: L..C2:
323
+ ; CHECK32-NEXT: .tc a[TC],a[TL]@ld
324
+ ; CHECK32: L..C3:
325
+ ; CHECK32-NEXT: .tc b[TC],b[TL]@ld
326
+
327
+ ; LINUX64LE: a:
328
+ ; LINUX64LE-NEXT: .asciz "tls1"
329
+ ; LINUX64LE-NEXT: .size a, 5
330
+ ; LINUX64LE: b:
331
+ ; LINUX64LE-NEXT: .asciz "tls2"
332
+ ; LINUX64LE-NEXT: .size b, 5
333
+ ; LINUX64LE: .L__ModuleStringPool:
334
+ ; LINUX64LE-NEXT: .long 0x42af999a
335
+ ; LINUX64LE-NEXT: .long 0x42b1999a
336
+ ; LINUX64LE-NEXT: .long 0x42b3cccd
337
+ ; LINUX64LE-NEXT: .long 0x42b5999a
338
+ ; LINUX64LE-NEXT: .long 1
339
+ ; LINUX64LE-NEXT: .long 2
340
+ ; LINUX64LE-NEXT: .long 3
341
+ ; LINUX64LE-NEXT: .long 4
342
+ ; LINUX64LE-NEXT: .long 5
343
+ ; LINUX64LE-NEXT: .long 6
344
+ ; LINUX64LE-NEXT: .long 7
345
+ ; LINUX64LE-NEXT: .long 8
346
+ ; LINUX64LE-NEXT: .long 9
347
+ ; LINUX64LE-NEXT: .long 10
348
+ ; LINUX64LE-NEXT: .asciz "Regular global"
349
+ ; LINUX64LE-NEXT: .asciz "TLS variable 1, 2 and non-TLS var: %s, %s, %s\n"
350
+
351
+ ; LINUX64BE: a:
352
+ ; LINUX64BE-NEXT: .asciz "tls1"
353
+ ; LINUX64BE-NEXT: .size a, 5
354
+ ; LINUX64BE: b:
355
+ ; LINUX64BE-NEXT: .asciz "tls2"
356
+ ; LINUX64BE-NEXT: .size b, 5
357
+ ; LINUX64BE: .L__ModuleStringPool:
358
+ ; LINUX64BE-NEXT: .long 0x42af999a
359
+ ; LINUX64BE-NEXT: .long 0x42b1999a
360
+ ; LINUX64BE-NEXT: .long 0x42b3cccd
361
+ ; LINUX64BE-NEXT: .long 0x42b5999a
362
+ ; LINUX64BE-NEXT: .long 1
363
+ ; LINUX64BE-NEXT: .long 2
364
+ ; LINUX64BE-NEXT: .long 3
365
+ ; LINUX64BE-NEXT: .long 4
366
+ ; LINUX64BE-NEXT: .long 5
367
+ ; LINUX64BE-NEXT: .long 6
368
+ ; LINUX64BE-NEXT: .long 7
369
+ ; LINUX64BE-NEXT: .long 8
370
+ ; LINUX64BE-NEXT: .long 9
371
+ ; LINUX64BE-NEXT: .long 10
372
+ ; LINUX64BE-NEXT: .asciz "Regular global"
373
+ ; LINUX64BE-NEXT: .asciz "TLS variable 1, 2 and non-TLS var: %s, %s, %s\n"
0 commit comments