Skip to content

Commit dd02984

Browse files
committed
[OpenMP] Naturally align internal global variables in the OpenMPIRBuilder
We use this helper to make several internal global variables during codegen. currently we do not specify any alignment which allows the alignment to be set incorrectly after some changes in how alignment was handled. This patch explicitly aligns these variables to the natural alignment as specified by the data layout Fixes #62668 Reviewed By: tianshilei1992, gchatelet Differential Revision: https://reviews.llvm.org/D150461
1 parent 182e5ac commit dd02984

14 files changed

+35
-49
lines changed

clang/test/OpenMP/distribute_parallel_for_reduction_task_codegen.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,7 @@ int main(int argc, char **argv) {
448448
// CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8
449449
// CHECK1-NEXT: store ptr [[TMP1]], ptr [[DOTADDR1]], align 8
450450
// CHECK1-NEXT: [[TMP2:%.*]] = load ptr, ptr [[DOTADDR]], align 8
451-
// CHECK1-NEXT: [[TMP3:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @{{reduction_size[.].+[.]}})
451+
// CHECK1-NEXT: [[TMP3:%.*]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @{{reduction_size[.].+[.]}})
452452
// CHECK1-NEXT: [[TMP4:%.*]] = load i64, ptr [[TMP3]], align 8
453453
// CHECK1-NEXT: [[TMP5:%.*]] = getelementptr i8, ptr [[TMP2]], i64 [[TMP4]]
454454
// CHECK1-NEXT: [[OMP_ARRAYINIT_ISEMPTY:%.*]] = icmp eq ptr [[TMP2]], [[TMP5]]
@@ -470,7 +470,7 @@ int main(int argc, char **argv) {
470470
// CHECK1-NEXT: [[DOTADDR1:%.*]] = alloca ptr, align 8
471471
// CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8
472472
// CHECK1-NEXT: store ptr [[TMP1]], ptr [[DOTADDR1]], align 8
473-
// CHECK1-NEXT: [[TMP2:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @{{reduction_size[.].+[.]}})
473+
// CHECK1-NEXT: [[TMP2:%.*]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @{{reduction_size[.].+[.]}})
474474
// CHECK1-NEXT: [[TMP3:%.*]] = load i64, ptr [[TMP2]], align 8
475475
// CHECK1-NEXT: [[TMP4:%.*]] = load ptr, ptr [[DOTADDR]], align 8
476476
// CHECK1-NEXT: [[TMP5:%.*]] = load ptr, ptr [[DOTADDR1]], align 8

clang/test/OpenMP/for_reduction_task_codegen.cpp

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,6 @@ int main(int argc, char **argv) {
1919
}
2020
}
2121

22-
23-
24-
// Init firstprivate copy of argc
25-
26-
// Init firstprivate copy of argv[0:10][0:argc]
27-
28-
// Register task reduction.
29-
30-
31-
32-
33-
34-
35-
36-
37-
3822
#endif
3923
// CHECK1-LABEL: define {{[^@]+}}@main
4024
// CHECK1-SAME: (i32 noundef [[ARGC:%.*]], ptr noundef [[ARGV:%.*]]) #[[ATTR0:[0-9]+]] {
@@ -361,7 +345,7 @@ int main(int argc, char **argv) {
361345
// CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8
362346
// CHECK1-NEXT: store ptr [[TMP1]], ptr [[DOTADDR1]], align 8
363347
// CHECK1-NEXT: [[TMP2:%.*]] = load ptr, ptr [[DOTADDR]], align 8
364-
// CHECK1-NEXT: [[TMP3:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @{{reduction_size[.].+[.]}})
348+
// CHECK1-NEXT: [[TMP3:%.*]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @{{reduction_size[.].+[.]}})
365349
// CHECK1-NEXT: [[TMP4:%.*]] = load i64, ptr [[TMP3]], align 8
366350
// CHECK1-NEXT: [[TMP5:%.*]] = getelementptr i8, ptr [[TMP2]], i64 [[TMP4]]
367351
// CHECK1-NEXT: [[OMP_ARRAYINIT_ISEMPTY:%.*]] = icmp eq ptr [[TMP2]], [[TMP5]]
@@ -383,7 +367,7 @@ int main(int argc, char **argv) {
383367
// CHECK1-NEXT: [[DOTADDR1:%.*]] = alloca ptr, align 8
384368
// CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8
385369
// CHECK1-NEXT: store ptr [[TMP1]], ptr [[DOTADDR1]], align 8
386-
// CHECK1-NEXT: [[TMP2:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @{{reduction_size[.].+[.]}})
370+
// CHECK1-NEXT: [[TMP2:%.*]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @{{reduction_size[.].+[.]}})
387371
// CHECK1-NEXT: [[TMP3:%.*]] = load i64, ptr [[TMP2]], align 8
388372
// CHECK1-NEXT: [[TMP4:%.*]] = load ptr, ptr [[DOTADDR]], align 8
389373
// CHECK1-NEXT: [[TMP5:%.*]] = load ptr, ptr [[DOTADDR1]], align 8

clang/test/OpenMP/parallel_for_reduction_task_codegen.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ int main(int argc, char **argv) {
356356
// CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8
357357
// CHECK1-NEXT: store ptr [[TMP1]], ptr [[DOTADDR1]], align 8
358358
// CHECK1-NEXT: [[TMP2:%.*]] = load ptr, ptr [[DOTADDR]], align 8
359-
// CHECK1-NEXT: [[TMP3:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @{{reduction_size[.].+[.]}})
359+
// CHECK1-NEXT: [[TMP3:%.*]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @{{reduction_size[.].+[.]}})
360360
// CHECK1-NEXT: [[TMP4:%.*]] = load i64, ptr [[TMP3]], align 8
361361
// CHECK1-NEXT: [[TMP5:%.*]] = getelementptr i8, ptr [[TMP2]], i64 [[TMP4]]
362362
// CHECK1-NEXT: [[OMP_ARRAYINIT_ISEMPTY:%.*]] = icmp eq ptr [[TMP2]], [[TMP5]]
@@ -378,7 +378,7 @@ int main(int argc, char **argv) {
378378
// CHECK1-NEXT: [[DOTADDR1:%.*]] = alloca ptr, align 8
379379
// CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8
380380
// CHECK1-NEXT: store ptr [[TMP1]], ptr [[DOTADDR1]], align 8
381-
// CHECK1-NEXT: [[TMP2:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @{{reduction_size[.].+[.]}})
381+
// CHECK1-NEXT: [[TMP2:%.*]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @{{reduction_size[.].+[.]}})
382382
// CHECK1-NEXT: [[TMP3:%.*]] = load i64, ptr [[TMP2]], align 8
383383
// CHECK1-NEXT: [[TMP4:%.*]] = load ptr, ptr [[DOTADDR]], align 8
384384
// CHECK1-NEXT: [[TMP5:%.*]] = load ptr, ptr [[DOTADDR1]], align 8

clang/test/OpenMP/parallel_master_reduction_task_codegen.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ int main(int argc, char **argv) {
311311
// CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8
312312
// CHECK1-NEXT: store ptr [[TMP1]], ptr [[DOTADDR1]], align 8
313313
// CHECK1-NEXT: [[TMP2:%.*]] = load ptr, ptr [[DOTADDR]], align 8
314-
// CHECK1-NEXT: [[TMP3:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @{{reduction_size[.].+[.]}})
314+
// CHECK1-NEXT: [[TMP3:%.*]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @{{reduction_size[.].+[.]}})
315315
// CHECK1-NEXT: [[TMP4:%.*]] = load i64, ptr [[TMP3]], align 8
316316
// CHECK1-NEXT: [[TMP5:%.*]] = getelementptr i8, ptr [[TMP2]], i64 [[TMP4]]
317317
// CHECK1-NEXT: [[OMP_ARRAYINIT_ISEMPTY:%.*]] = icmp eq ptr [[TMP2]], [[TMP5]]
@@ -333,7 +333,7 @@ int main(int argc, char **argv) {
333333
// CHECK1-NEXT: [[DOTADDR1:%.*]] = alloca ptr, align 8
334334
// CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8
335335
// CHECK1-NEXT: store ptr [[TMP1]], ptr [[DOTADDR1]], align 8
336-
// CHECK1-NEXT: [[TMP2:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @{{reduction_size[.].+[.]}})
336+
// CHECK1-NEXT: [[TMP2:%.*]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @{{reduction_size[.].+[.]}})
337337
// CHECK1-NEXT: [[TMP3:%.*]] = load i64, ptr [[TMP2]], align 8
338338
// CHECK1-NEXT: [[TMP4:%.*]] = load ptr, ptr [[DOTADDR]], align 8
339339
// CHECK1-NEXT: [[TMP5:%.*]] = load ptr, ptr [[DOTADDR1]], align 8

clang/test/OpenMP/parallel_reduction_task_codegen.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ int main(int argc, char **argv) {
302302
// CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8
303303
// CHECK1-NEXT: store ptr [[TMP1]], ptr [[DOTADDR1]], align 8
304304
// CHECK1-NEXT: [[TMP2:%.*]] = load ptr, ptr [[DOTADDR]], align 8
305-
// CHECK1-NEXT: [[TMP3:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @{{reduction_size[.].+[.]}})
305+
// CHECK1-NEXT: [[TMP3:%.*]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @{{reduction_size[.].+[.]}})
306306
// CHECK1-NEXT: [[TMP4:%.*]] = load i64, ptr [[TMP3]], align 8
307307
// CHECK1-NEXT: [[TMP5:%.*]] = getelementptr i8, ptr [[TMP2]], i64 [[TMP4]]
308308
// CHECK1-NEXT: [[OMP_ARRAYINIT_ISEMPTY:%.*]] = icmp eq ptr [[TMP2]], [[TMP5]]
@@ -324,7 +324,7 @@ int main(int argc, char **argv) {
324324
// CHECK1-NEXT: [[DOTADDR1:%.*]] = alloca ptr, align 8
325325
// CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8
326326
// CHECK1-NEXT: store ptr [[TMP1]], ptr [[DOTADDR1]], align 8
327-
// CHECK1-NEXT: [[TMP2:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @{{reduction_size[.].+[.]}})
327+
// CHECK1-NEXT: [[TMP2:%.*]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @{{reduction_size[.].+[.]}})
328328
// CHECK1-NEXT: [[TMP3:%.*]] = load i64, ptr [[TMP2]], align 8
329329
// CHECK1-NEXT: [[TMP4:%.*]] = load ptr, ptr [[DOTADDR]], align 8
330330
// CHECK1-NEXT: [[TMP5:%.*]] = load ptr, ptr [[DOTADDR1]], align 8

clang/test/OpenMP/parallel_sections_reduction_task_codegen.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ int main(int argc, char **argv) {
344344
// CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8
345345
// CHECK1-NEXT: store ptr [[TMP1]], ptr [[DOTADDR1]], align 8
346346
// CHECK1-NEXT: [[TMP2:%.*]] = load ptr, ptr [[DOTADDR]], align 8
347-
// CHECK1-NEXT: [[TMP3:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @{{reduction_size[.].+[.]}})
347+
// CHECK1-NEXT: [[TMP3:%.*]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @{{reduction_size[.].+[.]}})
348348
// CHECK1-NEXT: [[TMP4:%.*]] = load i64, ptr [[TMP3]], align 8
349349
// CHECK1-NEXT: [[TMP5:%.*]] = getelementptr i8, ptr [[TMP2]], i64 [[TMP4]]
350350
// CHECK1-NEXT: [[OMP_ARRAYINIT_ISEMPTY:%.*]] = icmp eq ptr [[TMP2]], [[TMP5]]
@@ -366,7 +366,7 @@ int main(int argc, char **argv) {
366366
// CHECK1-NEXT: [[DOTADDR1:%.*]] = alloca ptr, align 8
367367
// CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8
368368
// CHECK1-NEXT: store ptr [[TMP1]], ptr [[DOTADDR1]], align 8
369-
// CHECK1-NEXT: [[TMP2:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @{{reduction_size[.].+[.]}})
369+
// CHECK1-NEXT: [[TMP2:%.*]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @{{reduction_size[.].+[.]}})
370370
// CHECK1-NEXT: [[TMP3:%.*]] = load i64, ptr [[TMP2]], align 8
371371
// CHECK1-NEXT: [[TMP4:%.*]] = load ptr, ptr [[DOTADDR]], align 8
372372
// CHECK1-NEXT: [[TMP5:%.*]] = load ptr, ptr [[DOTADDR1]], align 8

clang/test/OpenMP/reduction_implicit_map.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -704,7 +704,7 @@ int main()
704704
// CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8
705705
// CHECK1-NEXT: store ptr [[TMP1]], ptr [[DOTADDR1]], align 8
706706
// CHECK1-NEXT: [[TMP2:%.*]] = load ptr, ptr [[DOTADDR]], align 8
707-
// CHECK1-NEXT: [[TMP3:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @{{reduction_size[.].+[.]}})
707+
// CHECK1-NEXT: [[TMP3:%.*]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @{{reduction_size[.].+[.]}})
708708
// CHECK1-NEXT: [[TMP4:%.*]] = load i64, ptr [[TMP3]], align 8
709709
// CHECK1-NEXT: [[TMP5:%.*]] = getelementptr double, ptr [[TMP2]], i64 [[TMP4]]
710710
// CHECK1-NEXT: [[OMP_ARRAYINIT_ISEMPTY:%.*]] = icmp eq ptr [[TMP2]], [[TMP5]]
@@ -726,7 +726,7 @@ int main()
726726
// CHECK1-NEXT: [[DOTADDR1:%.*]] = alloca ptr, align 8
727727
// CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8
728728
// CHECK1-NEXT: store ptr [[TMP1]], ptr [[DOTADDR1]], align 8
729-
// CHECK1-NEXT: [[TMP2:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @{{reduction_size[.].+[.]}})
729+
// CHECK1-NEXT: [[TMP2:%.*]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @{{reduction_size[.].+[.]}})
730730
// CHECK1-NEXT: [[TMP3:%.*]] = load i64, ptr [[TMP2]], align 8
731731
// CHECK1-NEXT: [[TMP4:%.*]] = load ptr, ptr [[DOTADDR]], align 8
732732
// CHECK1-NEXT: [[TMP5:%.*]] = load ptr, ptr [[DOTADDR1]], align 8

clang/test/OpenMP/sections_reduction_task_codegen.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@ int main(int argc, char **argv) {
349349
// CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8
350350
// CHECK1-NEXT: store ptr [[TMP1]], ptr [[DOTADDR1]], align 8
351351
// CHECK1-NEXT: [[TMP2:%.*]] = load ptr, ptr [[DOTADDR]], align 8
352-
// CHECK1-NEXT: [[TMP3:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @{{reduction_size[.].+[.]}})
352+
// CHECK1-NEXT: [[TMP3:%.*]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @{{reduction_size[.].+[.]}})
353353
// CHECK1-NEXT: [[TMP4:%.*]] = load i64, ptr [[TMP3]], align 8
354354
// CHECK1-NEXT: [[TMP5:%.*]] = getelementptr i8, ptr [[TMP2]], i64 [[TMP4]]
355355
// CHECK1-NEXT: [[OMP_ARRAYINIT_ISEMPTY:%.*]] = icmp eq ptr [[TMP2]], [[TMP5]]
@@ -371,7 +371,7 @@ int main(int argc, char **argv) {
371371
// CHECK1-NEXT: [[DOTADDR1:%.*]] = alloca ptr, align 8
372372
// CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8
373373
// CHECK1-NEXT: store ptr [[TMP1]], ptr [[DOTADDR1]], align 8
374-
// CHECK1-NEXT: [[TMP2:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @{{reduction_size[.].+[.]}})
374+
// CHECK1-NEXT: [[TMP2:%.*]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @{{reduction_size[.].+[.]}})
375375
// CHECK1-NEXT: [[TMP3:%.*]] = load i64, ptr [[TMP2]], align 8
376376
// CHECK1-NEXT: [[TMP4:%.*]] = load ptr, ptr [[DOTADDR]], align 8
377377
// CHECK1-NEXT: [[TMP5:%.*]] = load ptr, ptr [[DOTADDR1]], align 8

clang/test/OpenMP/target_parallel_for_reduction_task_codegen.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ int main(int argc, char **argv) {
369369
// CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8
370370
// CHECK1-NEXT: store ptr [[TMP1]], ptr [[DOTADDR1]], align 8
371371
// CHECK1-NEXT: [[TMP2:%.*]] = load ptr, ptr [[DOTADDR]], align 8
372-
// CHECK1-NEXT: [[TMP3:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @{{reduction_size[.].+[.]}})
372+
// CHECK1-NEXT: [[TMP3:%.*]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @{{reduction_size[.].+[.]}})
373373
// CHECK1-NEXT: [[TMP4:%.*]] = load i64, ptr [[TMP3]], align 8
374374
// CHECK1-NEXT: [[TMP5:%.*]] = getelementptr i8, ptr [[TMP2]], i64 [[TMP4]]
375375
// CHECK1-NEXT: [[OMP_ARRAYINIT_ISEMPTY:%.*]] = icmp eq ptr [[TMP2]], [[TMP5]]
@@ -391,7 +391,7 @@ int main(int argc, char **argv) {
391391
// CHECK1-NEXT: [[DOTADDR1:%.*]] = alloca ptr, align 8
392392
// CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8
393393
// CHECK1-NEXT: store ptr [[TMP1]], ptr [[DOTADDR1]], align 8
394-
// CHECK1-NEXT: [[TMP2:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @{{reduction_size[.].+[.]}})
394+
// CHECK1-NEXT: [[TMP2:%.*]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @{{reduction_size[.].+[.]}})
395395
// CHECK1-NEXT: [[TMP3:%.*]] = load i64, ptr [[TMP2]], align 8
396396
// CHECK1-NEXT: [[TMP4:%.*]] = load ptr, ptr [[DOTADDR]], align 8
397397
// CHECK1-NEXT: [[TMP5:%.*]] = load ptr, ptr [[DOTADDR1]], align 8

clang/test/OpenMP/target_parallel_reduction_task_codegen.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ int main(int argc, char **argv) {
315315
// CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8
316316
// CHECK1-NEXT: store ptr [[TMP1]], ptr [[DOTADDR1]], align 8
317317
// CHECK1-NEXT: [[TMP2:%.*]] = load ptr, ptr [[DOTADDR]], align 8
318-
// CHECK1-NEXT: [[TMP3:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @{{reduction_size[.].+[.]}})
318+
// CHECK1-NEXT: [[TMP3:%.*]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @{{reduction_size[.].+[.]}})
319319
// CHECK1-NEXT: [[TMP4:%.*]] = load i64, ptr [[TMP3]], align 8
320320
// CHECK1-NEXT: [[TMP5:%.*]] = getelementptr i8, ptr [[TMP2]], i64 [[TMP4]]
321321
// CHECK1-NEXT: [[OMP_ARRAYINIT_ISEMPTY:%.*]] = icmp eq ptr [[TMP2]], [[TMP5]]
@@ -337,7 +337,7 @@ int main(int argc, char **argv) {
337337
// CHECK1-NEXT: [[DOTADDR1:%.*]] = alloca ptr, align 8
338338
// CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8
339339
// CHECK1-NEXT: store ptr [[TMP1]], ptr [[DOTADDR1]], align 8
340-
// CHECK1-NEXT: [[TMP2:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @{{reduction_size[.].+[.]}})
340+
// CHECK1-NEXT: [[TMP2:%.*]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @{{reduction_size[.].+[.]}})
341341
// CHECK1-NEXT: [[TMP3:%.*]] = load i64, ptr [[TMP2]], align 8
342342
// CHECK1-NEXT: [[TMP4:%.*]] = load ptr, ptr [[DOTADDR]], align 8
343343
// CHECK1-NEXT: [[TMP5:%.*]] = load ptr, ptr [[DOTADDR1]], align 8

clang/test/OpenMP/target_teams_distribute_parallel_for_reduction_task_codegen.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ int main(int argc, char **argv) {
344344
// CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8
345345
// CHECK1-NEXT: store ptr [[TMP1]], ptr [[DOTADDR1]], align 8
346346
// CHECK1-NEXT: [[TMP2:%.*]] = load ptr, ptr [[DOTADDR]], align 8
347-
// CHECK1-NEXT: [[TMP3:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @{{reduction_size[.].+[.]}})
347+
// CHECK1-NEXT: [[TMP3:%.*]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @{{reduction_size[.].+[.]}})
348348
// CHECK1-NEXT: [[TMP4:%.*]] = load i64, ptr [[TMP3]], align 8
349349
// CHECK1-NEXT: [[TMP5:%.*]] = getelementptr i8, ptr [[TMP2]], i64 [[TMP4]]
350350
// CHECK1-NEXT: [[OMP_ARRAYINIT_ISEMPTY:%.*]] = icmp eq ptr [[TMP2]], [[TMP5]]
@@ -366,7 +366,7 @@ int main(int argc, char **argv) {
366366
// CHECK1-NEXT: [[DOTADDR1:%.*]] = alloca ptr, align 8
367367
// CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8
368368
// CHECK1-NEXT: store ptr [[TMP1]], ptr [[DOTADDR1]], align 8
369-
// CHECK1-NEXT: [[TMP2:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @{{reduction_size[.].+[.]}})
369+
// CHECK1-NEXT: [[TMP2:%.*]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @{{reduction_size[.].+[.]}})
370370
// CHECK1-NEXT: [[TMP3:%.*]] = load i64, ptr [[TMP2]], align 8
371371
// CHECK1-NEXT: [[TMP4:%.*]] = load ptr, ptr [[DOTADDR]], align 8
372372
// CHECK1-NEXT: [[TMP5:%.*]] = load ptr, ptr [[DOTADDR1]], align 8
@@ -708,7 +708,7 @@ int main(int argc, char **argv) {
708708
// CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8
709709
// CHECK1-NEXT: store ptr [[TMP1]], ptr [[DOTADDR1]], align 8
710710
// CHECK1-NEXT: [[TMP2:%.*]] = load ptr, ptr [[DOTADDR]], align 8
711-
// CHECK1-NEXT: [[TMP3:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @{{reduction_size[.].+[.]}})
711+
// CHECK1-NEXT: [[TMP3:%.*]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @{{reduction_size[.].+[.]}})
712712
// CHECK1-NEXT: [[TMP4:%.*]] = load i64, ptr [[TMP3]], align 8
713713
// CHECK1-NEXT: [[TMP5:%.*]] = getelementptr i8, ptr [[TMP2]], i64 [[TMP4]]
714714
// CHECK1-NEXT: [[OMP_ARRAYINIT_ISEMPTY:%.*]] = icmp eq ptr [[TMP2]], [[TMP5]]
@@ -730,7 +730,7 @@ int main(int argc, char **argv) {
730730
// CHECK1-NEXT: [[DOTADDR1:%.*]] = alloca ptr, align 8
731731
// CHECK1-NEXT: store ptr [[TMP0]], ptr [[DOTADDR]], align 8
732732
// CHECK1-NEXT: store ptr [[TMP1]], ptr [[DOTADDR1]], align 8
733-
// CHECK1-NEXT: [[TMP2:%.*]] = call ptr @llvm.threadlocal.address.p0(ptr @{{reduction_size[.].+[.]}})
733+
// CHECK1-NEXT: [[TMP2:%.*]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @{{reduction_size[.].+[.]}})
734734
// CHECK1-NEXT: [[TMP3:%.*]] = load i64, ptr [[TMP2]], align 8
735735
// CHECK1-NEXT: [[TMP4:%.*]] = load ptr, ptr [[DOTADDR]], align 8
736736
// CHECK1-NEXT: [[TMP5:%.*]] = load ptr, ptr [[DOTADDR1]], align 8

clang/test/OpenMP/taskloop_reduction_codegen.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -175,13 +175,13 @@ sum = 0.0;
175175
// CHECK: call void @llvm.memcpy.p0.p0.i64(
176176

177177
// CHECK: define internal void @[[RED_FINI2]](ptr noundef %0)
178-
// CHECK: [[RED_SIZE1_ADDR:%.+]] = call ptr @llvm.threadlocal.address.p0(ptr [[RED_SIZE1]]
178+
// CHECK: [[RED_SIZE1_ADDR:%.+]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 [[RED_SIZE1]]
179179
// CHECK: load i64, ptr [[RED_SIZE1_ADDR]]
180180
// CHECK: call void @
181181
// CHECK: ret void
182182

183183
// CHECK: define internal void @[[RED_COMB2]](ptr noundef %0, ptr noundef %1)
184-
// CHECK: [[RED_SIZE1_ADDR2:%.+]] = call ptr @llvm.threadlocal.address.p0(ptr [[RED_SIZE1]]
184+
// CHECK: [[RED_SIZE1_ADDR2:%.+]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 [[RED_SIZE1]]
185185
// CHECK: load i64, ptr [[RED_SIZE1_ADDR2]]
186186
// CHECK: call void [[OMP_COMB1]](
187187
// CHECK: ret void
@@ -196,13 +196,13 @@ sum = 0.0;
196196
// CHECK: ret void
197197

198198
// CHECK: define internal void @[[RED_INIT4]](ptr noalias noundef %{{.+}}, ptr noalias noundef %{{.+}})
199-
// CHECK: [[RED_SIZE2_ADDR:%.+]] = call ptr @llvm.threadlocal.address.p0(ptr [[RED_SIZE2]]
199+
// CHECK: [[RED_SIZE2_ADDR:%.+]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 [[RED_SIZE2]]
200200
// CHECK: load i64, ptr [[RED_SIZE2_ADDR]]
201201
// CHECK: store float 0.000000e+00, ptr %
202202
// CHECK: ret void
203203

204204
// CHECK: define internal void @[[RED_COMB4]](ptr noundef %0, ptr noundef %1)
205-
// CHECK: [[RED_SIZE2_ADDR2:%.+]] = call ptr @llvm.threadlocal.address.p0(ptr [[RED_SIZE2]]
205+
// CHECK: [[RED_SIZE2_ADDR2:%.+]] = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 [[RED_SIZE2]]
206206
// CHECK: load i64, ptr [[RED_SIZE2_ADDR2]]
207207
// CHECK: fadd float %
208208
// CHECK: store float %{{.+}}, ptr %

0 commit comments

Comments
 (0)