llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-mlir

@llvm/pr-subscribers-flang-openmp

Author: Abhinav Gaba (abhinavgaba)

<details>
<summary>Changes</summary>

Reverts llvm/llvm-project#<!-- -->177059 and llvm/llvm-project#<!-- -->177491.

The new test may have an issue.

---

Patch is 65.75 KiB, truncated to 20.00 KiB below, full version: 
https://github.com/llvm/llvm-project/pull/177623.diff


8 Files Affected:

- (modified) clang/lib/CodeGen/CGOpenMPRuntime.cpp (+4-2) 
- (modified) clang/test/OpenMP/declare_mapper_codegen.cpp (+20-5) 
- (modified) 
clang/test/OpenMP/target_map_array_of_structs_with_nested_mapper_codegen.cpp 
(+113-107) 
- (modified) 
clang/test/OpenMP/target_map_array_section_of_structs_with_nested_mapper_codegen.cpp
 (+146-140) 
- (modified) llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp (+8) 
- (modified) mlir/test/Target/LLVMIR/omptarget-llvm.mlir (+4-1) 
- (modified) offload/libomptarget/omptarget.cpp (+5-3) 
- (removed) offload/test/mapping/declare_mapper_target_checks.cpp (-166) 


``````````diff
diff --git a/clang/lib/CodeGen/CGOpenMPRuntime.cpp 
b/clang/lib/CodeGen/CGOpenMPRuntime.cpp
index e21d67010521a..8981a0de6d0e4 100644
--- a/clang/lib/CodeGen/CGOpenMPRuntime.cpp
+++ b/clang/lib/CodeGen/CGOpenMPRuntime.cpp
@@ -10465,8 +10465,10 @@ getNestedDistributeDirective(ASTContext &Ctx, const 
OMPExecutableDirective &D) {
 ///                                           void *base, void *begin,
 ///                                           int64_t size, int64_t type,
 ///                                           void *name = nullptr) {
-///   // Allocate space for an array section first.
-///   if ((size > 1 || (base != begin)) && !maptype.IsDelete)
+///   // Allocate space for an array section first or add a base/begin for
+///   // pointer dereference.
+///   if ((size > 1 || (base != begin && maptype.IsPtrAndObj)) &&
+///       !maptype.IsDelete)
 ///     __tgt_push_mapper_component(rt_mapper_handle, base, begin,
 ///                                 size*sizeof(Ty), clearToFromMember(type));
 ///   // Map members.
diff --git a/clang/test/OpenMP/declare_mapper_codegen.cpp 
b/clang/test/OpenMP/declare_mapper_codegen.cpp
index 69f9dae7d4988..7dc32d0ae12ff 100644
--- a/clang/test/OpenMP/declare_mapper_codegen.cpp
+++ b/clang/test/OpenMP/declare_mapper_codegen.cpp
@@ -92,7 +92,10 @@ class C {
 // CK0-DAG: [[ISARRAY:%.+]] = icmp sgt i64 [[SIZE]], 1
 // CK0-DAG: [[PTREND:%.+]] = getelementptr %class.C, ptr [[BEGIN]], i64 
[[SIZE]]
 // CK0-DAG: [[PTRSNE:%.+]] = icmp ne ptr [[BPTR]], [[BEGIN]]
-// CK0-DAG: [[CMP:%.+]] = or i1 [[ISARRAY]], [[PTRSNE]]
+// CK0-DAG: [[PTRANDOBJ:%.+]] = and i64 [[TYPE]], 16
+// CK0-DAG: [[ISPTRANDOBJ:%.+]] = icmp ne i64 [[PTRANDOBJ]], 0
+// CK0-DAG: [[CMPA:%.+]] = and i1 [[PTRSNE]], [[ISPTRANDOBJ]]
+// CK0-DAG: [[CMP:%.+]] = or i1 [[ISARRAY]], [[CMPA]]
 // CK0-DAG: [[TYPEDEL:%.+]] = and i64 [[TYPE]], 8
 // CK0-DAG: [[ISNOTDEL:%.+]] = icmp eq i64 [[TYPEDEL]], 0
 // CK0-DAG: [[CMP1:%.+]] = and i1 [[CMP]], [[ISNOTDEL]]
@@ -589,7 +592,10 @@ class C {
 // CK1-DAG: [[PTREND:%.+]] = getelementptr %class.C, ptr [[BEGIN]], i64 
[[SIZE]]
 // CK1-DAG: [[ISARRAY:%.+]] = icmp sgt i64 [[SIZE]], 1
 // CK1-DAG: [[PTRSNE:%.+]] = icmp ne ptr [[BPTR]], [[BEGIN]]
-// CK1-DAG: [[CMP:%.+]] = or i1 [[ISARRAY]], [[PTRSNE]]
+// CK1-DAG: [[PTRANDOBJ:%.+]] = and i64 [[TYPE]], 16
+// CK1-DAG: [[ISPTRANDOBJ:%.+]] = icmp ne i64 [[PTRANDOBJ]], 0
+// CK1-DAG: [[CMPA:%.+]] = and i1 [[PTRSNE]], [[ISPTRANDOBJ]]
+// CK1-DAG: [[CMP:%.+]] = or i1 [[ISARRAY]], [[CMPA]]
 // CK1-DAG: [[TYPEDEL:%.+]] = and i64 [[TYPE]], 8
 // CK1-DAG: [[ISNOTDEL:%.+]] = icmp eq i64 [[TYPEDEL]], 0
 // CK1-DAG: [[CMP1:%.+]] = and i1 [[CMP]], [[ISNOTDEL]]
@@ -696,7 +702,10 @@ class C {
 // CK2-DAG: [[PTREND:%.+]] = getelementptr %class.C, ptr [[BEGIN]], i64 
[[SIZE]]
 // CK2-DAG: [[ISARRAY:%.+]] = icmp sgt i64 [[SIZE]], 1
 // CK2-DAG: [[PTRSNE:%.+]] = icmp ne ptr [[BPTR]], [[BEGIN]]
-// CK2-DAG: [[CMP:%.+]] = or i1 [[ISARRAY]], [[PTRSNE]]
+// CK2-DAG: [[PTRANDOBJ:%.+]] = and i64 [[TYPE]], 16
+// CK2-DAG: [[ISPTRANDOBJ:%.+]] = icmp ne i64 [[PTRANDOBJ]], 0
+// CK2-DAG: [[CMPA:%.+]] = and i1 [[PTRSNE]], [[ISPTRANDOBJ]]
+// CK2-DAG: [[CMP:%.+]] = or i1 [[ISARRAY]], [[CMPA]]
 // CK2-DAG: [[TYPEDEL:%.+]] = and i64 [[TYPE]], 8
 // CK2-DAG: [[ISNOTDEL:%.+]] = icmp eq i64 [[TYPEDEL]], 0
 // CK2-DAG: [[CMP1:%.+]] = and i1 [[CMP]], [[ISNOTDEL]]
@@ -888,7 +897,10 @@ class C {
 // CK4-DAG: [[PTREND:%.+]] = getelementptr %class.C, ptr [[BEGIN]], i64 
[[SIZE]]
 // CK4-DAG: [[ISARRAY:%.+]] = icmp sgt i64 [[SIZE]], 1
 // CK4-DAG: [[PTRSNE:%.+]] = icmp ne ptr [[BPTR]], [[BEGIN]]
-// CK4-DAG: [[CMP:%.+]] = or i1 [[ISARRAY]], [[PTRSNE]]
+// CK4-DAG: [[PTRANDOBJ:%.+]] = and i64 [[TYPE]], 16
+// CK4-DAG: [[ISPTRANDOBJ:%.+]] = icmp ne i64 [[PTRANDOBJ]], 0
+// CK4-DAG: [[CMPA:%.+]] = and i1 [[PTRSNE]], [[ISPTRANDOBJ]]
+// CK4-DAG: [[CMP:%.+]] = or i1 [[ISARRAY]], [[CMPA]]
 // CK4-DAG: [[TYPEDEL:%.+]] = and i64 [[TYPE]], 8
 // CK4-DAG: [[ISNOTDEL:%.+]] = icmp eq i64 [[TYPEDEL]], 0
 // CK4-DAG: [[CMP1:%.+]] = and i1 [[CMP]], [[ISNOTDEL]]
@@ -1075,7 +1087,10 @@ void foo(){
 // CK5-DAG: [[PTREND:%.+]] = getelementptr %struct.myvec, ptr [[BEGIN]], i64 
[[SIZE]]
 // CK5-DAG: [[ISARRAY:%.+]] = icmp sgt i64 [[SIZE]], 1
 // CK5-DAG: [[PTRSNE:%.+]] = icmp ne ptr [[BPTR]], [[BEGIN]]
-// CK5-DAG: [[CMP:%.+]] = or i1 [[ISARRAY]], [[PTRSNE]]
+// CK5-DAG: [[PTRANDOBJ:%.+]] = and i64 [[TYPE]], 16
+// CK5-DAG: [[ISPTRANDOBJ:%.+]] = icmp ne i64 [[PTRANDOBJ]], 0
+// CK5-DAG: [[CMPA:%.+]] = and i1 [[PTRSNE]], [[ISPTRANDOBJ]]
+// CK5-DAG: [[CMP:%.+]] = or i1 [[ISARRAY]], [[CMPA]]
 // CK5-DAG: [[TYPEDEL:%.+]] = and i64 [[TYPE]], 8
 // CK5-DAG: [[ISNOTDEL:%.+]] = icmp eq i64 [[TYPEDEL]], 0
 // CK5-DAG: [[CMP1:%.+]] = and i1 [[CMP]], [[ISNOTDEL]]
diff --git 
a/clang/test/OpenMP/target_map_array_of_structs_with_nested_mapper_codegen.cpp 
b/clang/test/OpenMP/target_map_array_of_structs_with_nested_mapper_codegen.cpp
index 054e8f22633cb..5df1e958ad55a 100644
--- 
a/clang/test/OpenMP/target_map_array_of_structs_with_nested_mapper_codegen.cpp
+++ 
b/clang/test/OpenMP/target_map_array_of_structs_with_nested_mapper_codegen.cpp
@@ -37,15 +37,15 @@ void foo() {
 // CHECK-LABEL: define {{[^@]+}}@_Z3foov
 // CHECK-SAME: () #[[ATTR0:[0-9]+]] {
 // CHECK-NEXT:  entry:
-// CHECK-NEXT:    [[SA:%.*]] = alloca [10 x [[STRUCT_D:%.*]]], align 4
+// CHECK-NEXT:    [[SA:%.*]] = alloca [10 x %struct.D], align 4
 // CHECK-NEXT:    [[DOTOFFLOAD_BASEPTRS:%.*]] = alloca [1 x ptr], align 8
 // CHECK-NEXT:    [[DOTOFFLOAD_PTRS:%.*]] = alloca [1 x ptr], align 8
 // CHECK-NEXT:    [[DOTOFFLOAD_MAPPERS:%.*]] = alloca [1 x ptr], align 8
 // CHECK-NEXT:    [[KERNEL_ARGS:%.*]] = alloca 
[[STRUCT___TGT_KERNEL_ARGUMENTS:%.*]], align 8
-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [10 x 
[[STRUCT_D]]], ptr [[SA]], i64 0, i64 1
-// CHECK-NEXT:    [[E:%.*]] = getelementptr inbounds nuw [[STRUCT_D]], ptr 
[[ARRAYIDX]], i32 0, i32 0
+// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [10 x %struct.D], 
ptr [[SA]], i64 0, i64 1
+// CHECK-NEXT:    [[E:%.*]] = getelementptr inbounds nuw [[STRUCT_D:%.*]], ptr 
[[ARRAYIDX]], i32 0, i32 0
 // CHECK-NEXT:    store i32 111, ptr [[E]], align 4
-// CHECK-NEXT:    [[ARRAYIDX1:%.*]] = getelementptr inbounds [10 x 
[[STRUCT_D]]], ptr [[SA]], i64 0, i64 1
+// CHECK-NEXT:    [[ARRAYIDX1:%.*]] = getelementptr inbounds [10 x %struct.D], 
ptr [[SA]], i64 0, i64 1
 // CHECK-NEXT:    [[F:%.*]] = getelementptr inbounds nuw [[STRUCT_D]], ptr 
[[ARRAYIDX1]], i32 0, i32 1
 // CHECK-NEXT:    [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_C:%.*]], ptr 
[[F]], i32 0, i32 0
 // CHECK-NEXT:    store i32 222, ptr [[A]], align 4
@@ -99,10 +99,10 @@ void foo() {
 // CHECK-NEXT:    [[SA_ADDR:%.*]] = alloca ptr, align 8
 // CHECK-NEXT:    store ptr [[SA]], ptr [[SA_ADDR]], align 8
 // CHECK-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[SA_ADDR]], align 8, !nonnull 
[[META5:![0-9]+]], !align [[META6:![0-9]+]]
-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [10 x 
[[STRUCT_D:%.*]]], ptr [[TMP0]], i64 0, i64 1
-// CHECK-NEXT:    [[E:%.*]] = getelementptr inbounds nuw [[STRUCT_D]], ptr 
[[ARRAYIDX]], i32 0, i32 0
+// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [10 x %struct.D], 
ptr [[TMP0]], i64 0, i64 1
+// CHECK-NEXT:    [[E:%.*]] = getelementptr inbounds nuw [[STRUCT_D:%.*]], ptr 
[[ARRAYIDX]], i32 0, i32 0
 // CHECK-NEXT:    store i32 333, ptr [[E]], align 4
-// CHECK-NEXT:    [[ARRAYIDX1:%.*]] = getelementptr inbounds [10 x 
[[STRUCT_D]]], ptr [[TMP0]], i64 0, i64 1
+// CHECK-NEXT:    [[ARRAYIDX1:%.*]] = getelementptr inbounds [10 x %struct.D], 
ptr [[TMP0]], i64 0, i64 1
 // CHECK-NEXT:    [[F:%.*]] = getelementptr inbounds nuw [[STRUCT_D]], ptr 
[[ARRAYIDX1]], i32 0, i32 1
 // CHECK-NEXT:    [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_C:%.*]], ptr 
[[F]], i32 0, i32 0
 // CHECK-NEXT:    store i32 444, ptr [[A]], align 4
@@ -117,15 +117,18 @@ void foo() {
 // CHECK-NEXT:    [[OMP_ARRAYINIT_ISARRAY:%.*]] = icmp sgt i64 [[TMP6]], 1
 // CHECK-NEXT:    [[TMP8:%.*]] = and i64 [[TMP4]], 8
 // CHECK-NEXT:    [[TMP9:%.*]] = icmp ne ptr [[TMP1]], [[TMP2]]
-// CHECK-NEXT:    [[TMP10:%.*]] = or i1 [[OMP_ARRAYINIT_ISARRAY]], [[TMP9]]
+// CHECK-NEXT:    [[TMP10:%.*]] = and i64 [[TMP4]], 16
+// CHECK-NEXT:    [[TMP11:%.*]] = icmp ne i64 [[TMP10]], 0
+// CHECK-NEXT:    [[TMP12:%.*]] = and i1 [[TMP9]], [[TMP11]]
+// CHECK-NEXT:    [[TMP13:%.*]] = or i1 [[OMP_ARRAYINIT_ISARRAY]], [[TMP12]]
 // CHECK-NEXT:    [[DOTOMP_ARRAY__INIT__DELETE:%.*]] = icmp eq i64 [[TMP8]], 0
-// CHECK-NEXT:    [[TMP11:%.*]] = and i1 [[TMP10]], 
[[DOTOMP_ARRAY__INIT__DELETE]]
-// CHECK-NEXT:    br i1 [[TMP11]], label [[DOTOMP_ARRAY__INIT:%.*]], label 
[[OMP_ARRAYMAP_HEAD:%.*]]
+// CHECK-NEXT:    [[TMP14:%.*]] = and i1 [[TMP13]], 
[[DOTOMP_ARRAY__INIT__DELETE]]
+// CHECK-NEXT:    br i1 [[TMP14]], label [[DOTOMP_ARRAY__INIT:%.*]], label 
[[OMP_ARRAYMAP_HEAD:%.*]]
 // CHECK:       .omp.array..init:
-// CHECK-NEXT:    [[TMP12:%.*]] = mul nuw i64 [[TMP6]], 12
-// CHECK-NEXT:    [[TMP13:%.*]] = and i64 [[TMP4]], -4
-// CHECK-NEXT:    [[TMP14:%.*]] = or i64 [[TMP13]], 512
-// CHECK-NEXT:    call void @__tgt_push_mapper_component(ptr [[TMP0]], ptr 
[[TMP1]], ptr [[TMP2]], i64 [[TMP12]], i64 [[TMP14]], ptr [[TMP5]])
+// CHECK-NEXT:    [[TMP15:%.*]] = mul nuw i64 [[TMP6]], 12
+// CHECK-NEXT:    [[TMP16:%.*]] = and i64 [[TMP4]], -4
+// CHECK-NEXT:    [[TMP17:%.*]] = or i64 [[TMP16]], 512
+// CHECK-NEXT:    call void @__tgt_push_mapper_component(ptr [[TMP0]], ptr 
[[TMP1]], ptr [[TMP2]], i64 [[TMP15]], i64 [[TMP17]], ptr [[TMP5]])
 // CHECK-NEXT:    br label [[OMP_ARRAYMAP_HEAD]]
 // CHECK:       omp.arraymap.head:
 // CHECK-NEXT:    [[OMP_ARRAYMAP_ISEMPTY:%.*]] = icmp eq ptr [[TMP2]], [[TMP7]]
@@ -135,115 +138,115 @@ void foo() {
 // CHECK-NEXT:    [[E:%.*]] = getelementptr inbounds nuw [[STRUCT_D]], ptr 
[[OMP_ARRAYMAP_PTRCURRENT]], i32 0, i32 0
 // CHECK-NEXT:    [[F:%.*]] = getelementptr inbounds nuw [[STRUCT_D]], ptr 
[[OMP_ARRAYMAP_PTRCURRENT]], i32 0, i32 1
 // CHECK-NEXT:    [[H:%.*]] = getelementptr inbounds nuw [[STRUCT_D]], ptr 
[[OMP_ARRAYMAP_PTRCURRENT]], i32 0, i32 2
-// CHECK-NEXT:    [[TMP15:%.*]] = getelementptr i32, ptr [[H]], i32 1
-// CHECK-NEXT:    [[TMP16:%.*]] = ptrtoint ptr [[TMP15]] to i64
-// CHECK-NEXT:    [[TMP17:%.*]] = ptrtoint ptr [[E]] to i64
-// CHECK-NEXT:    [[TMP18:%.*]] = sub i64 [[TMP16]], [[TMP17]]
-// CHECK-NEXT:    [[TMP19:%.*]] = sdiv exact i64 [[TMP18]], ptrtoint (ptr 
getelementptr (i8, ptr null, i32 1) to i64)
-// CHECK-NEXT:    [[TMP20:%.*]] = call i64 @__tgt_mapper_num_components(ptr 
[[TMP0]])
-// CHECK-NEXT:    [[TMP21:%.*]] = shl i64 [[TMP20]], 48
-// CHECK-NEXT:    [[TMP22:%.*]] = add nuw i64 0, [[TMP21]]
-// CHECK-NEXT:    [[TMP23:%.*]] = and i64 [[TMP4]], 3
-// CHECK-NEXT:    [[TMP24:%.*]] = icmp eq i64 [[TMP23]], 0
-// CHECK-NEXT:    br i1 [[TMP24]], label [[OMP_TYPE_ALLOC:%.*]], label 
[[OMP_TYPE_ALLOC_ELSE:%.*]]
+// CHECK-NEXT:    [[TMP18:%.*]] = getelementptr i32, ptr [[H]], i32 1
+// CHECK-NEXT:    [[TMP19:%.*]] = ptrtoint ptr [[TMP18]] to i64
+// CHECK-NEXT:    [[TMP20:%.*]] = ptrtoint ptr [[E]] to i64
+// CHECK-NEXT:    [[TMP21:%.*]] = sub i64 [[TMP19]], [[TMP20]]
+// CHECK-NEXT:    [[TMP22:%.*]] = sdiv exact i64 [[TMP21]], ptrtoint (ptr 
getelementptr (i8, ptr null, i32 1) to i64)
+// CHECK-NEXT:    [[TMP23:%.*]] = call i64 @__tgt_mapper_num_components(ptr 
[[TMP0]])
+// CHECK-NEXT:    [[TMP24:%.*]] = shl i64 [[TMP23]], 48
+// CHECK-NEXT:    [[TMP25:%.*]] = add nuw i64 0, [[TMP24]]
+// CHECK-NEXT:    [[TMP26:%.*]] = and i64 [[TMP4]], 3
+// CHECK-NEXT:    [[TMP27:%.*]] = icmp eq i64 [[TMP26]], 0
+// CHECK-NEXT:    br i1 [[TMP27]], label [[OMP_TYPE_ALLOC:%.*]], label 
[[OMP_TYPE_ALLOC_ELSE:%.*]]
 // CHECK:       omp.type.alloc:
-// CHECK-NEXT:    [[TMP25:%.*]] = and i64 [[TMP22]], -4
+// CHECK-NEXT:    [[TMP28:%.*]] = and i64 [[TMP25]], -4
 // CHECK-NEXT:    br label [[OMP_TYPE_END:%.*]]
 // CHECK:       omp.type.alloc.else:
-// CHECK-NEXT:    [[TMP26:%.*]] = icmp eq i64 [[TMP23]], 1
-// CHECK-NEXT:    br i1 [[TMP26]], label [[OMP_TYPE_TO:%.*]], label 
[[OMP_TYPE_TO_ELSE:%.*]]
+// CHECK-NEXT:    [[TMP29:%.*]] = icmp eq i64 [[TMP26]], 1
+// CHECK-NEXT:    br i1 [[TMP29]], label [[OMP_TYPE_TO:%.*]], label 
[[OMP_TYPE_TO_ELSE:%.*]]
 // CHECK:       omp.type.to:
-// CHECK-NEXT:    [[TMP27:%.*]] = and i64 [[TMP22]], -3
+// CHECK-NEXT:    [[TMP30:%.*]] = and i64 [[TMP25]], -3
 // CHECK-NEXT:    br label [[OMP_TYPE_END]]
 // CHECK:       omp.type.to.else:
-// CHECK-NEXT:    [[TMP28:%.*]] = icmp eq i64 [[TMP23]], 2
-// CHECK-NEXT:    br i1 [[TMP28]], label [[OMP_TYPE_FROM:%.*]], label 
[[OMP_TYPE_END]]
+// CHECK-NEXT:    [[TMP31:%.*]] = icmp eq i64 [[TMP26]], 2
+// CHECK-NEXT:    br i1 [[TMP31]], label [[OMP_TYPE_FROM:%.*]], label 
[[OMP_TYPE_END]]
 // CHECK:       omp.type.from:
-// CHECK-NEXT:    [[TMP29:%.*]] = and i64 [[TMP22]], -2
+// CHECK-NEXT:    [[TMP32:%.*]] = and i64 [[TMP25]], -2
 // CHECK-NEXT:    br label [[OMP_TYPE_END]]
 // CHECK:       omp.type.end:
-// CHECK-NEXT:    [[OMP_MAPTYPE:%.*]] = phi i64 [ [[TMP25]], 
[[OMP_TYPE_ALLOC]] ], [ [[TMP27]], [[OMP_TYPE_TO]] ], [ [[TMP29]], 
[[OMP_TYPE_FROM]] ], [ [[TMP22]], [[OMP_TYPE_TO_ELSE]] ]
-// CHECK-NEXT:    call void @__tgt_push_mapper_component(ptr [[TMP0]], ptr 
[[OMP_ARRAYMAP_PTRCURRENT]], ptr [[E]], i64 [[TMP19]], i64 [[OMP_MAPTYPE]], ptr 
null)
-// CHECK-NEXT:    [[TMP30:%.*]] = add nuw i64 281474976711171, [[TMP21]]
-// CHECK-NEXT:    [[TMP31:%.*]] = and i64 [[TMP4]], 3
-// CHECK-NEXT:    [[TMP32:%.*]] = icmp eq i64 [[TMP31]], 0
-// CHECK-NEXT:    br i1 [[TMP32]], label [[OMP_TYPE_ALLOC1:%.*]], label 
[[OMP_TYPE_ALLOC_ELSE2:%.*]]
+// CHECK-NEXT:    [[OMP_MAPTYPE:%.*]] = phi i64 [ [[TMP28]], 
[[OMP_TYPE_ALLOC]] ], [ [[TMP30]], [[OMP_TYPE_TO]] ], [ [[TMP32]], 
[[OMP_TYPE_FROM]] ], [ [[TMP25]], [[OMP_TYPE_TO_ELSE]] ]
+// CHECK-NEXT:    call void @__tgt_push_mapper_component(ptr [[TMP0]], ptr 
[[OMP_ARRAYMAP_PTRCURRENT]], ptr [[E]], i64 [[TMP22]], i64 [[OMP_MAPTYPE]], ptr 
null)
+// CHECK-NEXT:    [[TMP33:%.*]] = add nuw i64 281474976711171, [[TMP24]]
+// CHECK-NEXT:    [[TMP34:%.*]] = and i64 [[TMP4]], 3
+// CHECK-NEXT:    [[TMP35:%.*]] = icmp eq i64 [[TMP34]], 0
+// CHECK-NEXT:    br i1 [[TMP35]], label [[OMP_TYPE_ALLOC1:%.*]], label 
[[OMP_TYPE_ALLOC_ELSE2:%.*]]
 // CHECK:       omp.type.alloc1:
-// CHECK-NEXT:    [[TMP33:%.*]] = and i64 [[TMP30]], -4
+// CHECK-NEXT:    [[TMP36:%.*]] = and i64 [[TMP33]], -4
 // CHECK-NEXT:    br label [[OMP_TYPE_END6:%.*]]
 // CHECK:       omp.type.alloc.else2:
-// CHECK-NEXT:    [[TMP34:%.*]] = icmp eq i64 [[TMP31]], 1
-// CHECK-NEXT:    br i1 [[TMP34]], label [[OMP_TYPE_TO3:%.*]], label 
[[OMP_TYPE_TO_ELSE4:%.*]]
+// CHECK-NEXT:    [[TMP37:%.*]] = icmp eq i64 [[TMP34]], 1
+// CHECK-NEXT:    br i1 [[TMP37]], label [[OMP_TYPE_TO3:%.*]], label 
[[OMP_TYPE_TO_ELSE4:%.*]]
 // CHECK:       omp.type.to3:
-// CHECK-NEXT:    [[TMP35:%.*]] = and i64 [[TMP30]], -3
+// CHECK-NEXT:    [[TMP38:%.*]] = and i64 [[TMP33]], -3
 // CHECK-NEXT:    br label [[OMP_TYPE_END6]]
 // CHECK:       omp.type.to.else4:
-// CHECK-NEXT:    [[TMP36:%.*]] = icmp eq i64 [[TMP31]], 2
-// CHECK-NEXT:    br i1 [[TMP36]], label [[OMP_TYPE_FROM5:%.*]], label 
[[OMP_TYPE_END6]]
+// CHECK-NEXT:    [[TMP39:%.*]] = icmp eq i64 [[TMP34]], 2
+// CHECK-NEXT:    br i1 [[TMP39]], label [[OMP_TYPE_FROM5:%.*]], label 
[[OMP_TYPE_END6]]
 // CHECK:       omp.type.from5:
-// CHECK-NEXT:    [[TMP37:%.*]] = and i64 [[TMP30]], -2
+// CHECK-NEXT:    [[TMP40:%.*]] = and i64 [[TMP33]], -2
 // CHECK-NEXT:    br label [[OMP_TYPE_END6]]
 // CHECK:       omp.type.end6:
-// CHECK-NEXT:    [[OMP_MAPTYPE7:%.*]] = phi i64 [ [[TMP33]], 
[[OMP_TYPE_ALLOC1]] ], [ [[TMP35]], [[OMP_TYPE_TO3]] ], [ [[TMP37]], 
[[OMP_TYPE_FROM5]] ], [ [[TMP30]], [[OMP_TYPE_TO_ELSE4]] ]
+// CHECK-NEXT:    [[OMP_MAPTYPE7:%.*]] = phi i64 [ [[TMP36]], 
[[OMP_TYPE_ALLOC1]] ], [ [[TMP38]], [[OMP_TYPE_TO3]] ], [ [[TMP40]], 
[[OMP_TYPE_FROM5]] ], [ [[TMP33]], [[OMP_TYPE_TO_ELSE4]] ]
 // CHECK-NEXT:    call void @__tgt_push_mapper_component(ptr [[TMP0]], ptr 
[[OMP_ARRAYMAP_PTRCURRENT]], ptr [[E]], i64 4, i64 [[OMP_MAPTYPE7]], ptr null)
-// CHECK-NEXT:    [[TMP38:%.*]] = add nuw i64 281474976711171, [[TMP21]]
-// CHECK-NEXT:    [[TMP39:%.*]] = and i64 [[TMP4]], 3
-// CHECK-NEXT:    [[TMP40:%.*]] = icmp eq i64 [[TMP39]], 0
-// CHECK-NEXT:    br i1 [[TMP40]], label [[OMP_TYPE_ALLOC8:%.*]], label 
[[OMP_TYPE_ALLOC_ELSE9:%.*]]
+// CHECK-NEXT:    [[TMP41:%.*]] = add nuw i64 281474976711171, [[TMP24]]
+// CHECK-NEXT:    [[TMP42:%.*]] = and i64 [[TMP4]], 3
+// CHECK-NEXT:    [[TMP43:%.*]] = icmp eq i64 [[TMP42]], 0
+// CHECK-NEXT:    br i1 [[TMP43]], label [[OMP_TYPE_ALLOC8:%.*]], label 
[[OMP_TYPE_ALLOC_ELSE9:%.*]]
 // CHECK:       omp.type.alloc8:
-// CHECK-NEXT:    [[TMP41:%.*]] = and i64 [[TMP38]], -4
+// CHECK-NEXT:    [[TMP44:%.*]] = and i64 [[TMP41]], -4
 // CHECK-NEXT:    br label [[OMP_TYPE_END13:%.*]]
 // CHECK:       omp.type.alloc.else9:
-// CHECK-NEXT:    [[TMP42:%.*]] = icmp eq i64 [[TMP39]], 1
-// CHECK-NEXT:    br i1 [[TMP42]], label [[OMP_TYPE_TO10:%.*]], label 
[[OMP_TYPE_TO_ELSE11:%.*]]
+// CHECK-NEXT:    [[TMP45:%.*]] = icmp eq i64 [[TMP42]], 1
+// CHECK-NEXT:    br i1 [[TMP45]], label [[OMP_TYPE_TO10:%.*]], label 
[[OMP_TYPE_TO_ELSE11:%.*]]
 // CHECK:       omp.type.to10:
-// CHECK-NEXT:    [[TMP43:%.*]] = and i64 [[TMP38]], -3
+// CHECK-NEXT:    [[TMP46:%.*]] = and i64 [[TMP41]], -3
 // CHECK-NEXT:    br label [[OMP_TYPE_END13]]
 // CHECK:       omp.type.to.else11:
-// CHECK-NEXT:    [[TMP44:%.*]] = icmp eq i64 [[TMP39]], 2
-// CHECK-NEXT:    br i1 [[TMP44]], label [[OMP_TYPE_FROM12:%.*]], label 
[[OMP_TYPE_END13]]
+// CHECK-NEXT:    [[TMP47:%.*]] = icmp eq i64 [[TMP42]], 2
+// CHECK-NEXT:    br i1 [[TMP47]], label [[OMP_TYPE_FROM12:%.*]], label 
[[OMP_TYPE_END13]]
 // CHECK:       omp.type.from12:
-// CHECK-NEXT:    [[TMP45:%.*]] = and i64 [[TMP38]], -2
+// CHECK-NEXT:    [[TMP48:%.*]] = and i64 [[TMP41]], -2
 // CHECK-NEXT:    br label [[OMP_TYPE_END13]]
 // CHECK:       omp.type.end13:
-// CHECK-NEXT:    [[OMP_MAPTYPE14:%.*]] = phi i64 [ [[TMP41]], 
[[OMP_TYPE_ALLOC8]] ], [ [[TMP43]], [[OMP_TYPE_TO10]] ], [ [[TMP45]], 
[[OMP_TYPE_FROM12]] ], [ [[TMP38]], [[OMP_TYPE_TO_ELSE11]] ]
+// CHECK-NEXT:    [[OMP_MAPTYPE14:%.*]] = phi i64 [ [[TMP44]], 
[[OMP_TYPE_ALLOC8]] ], [ [[TMP46]], [[OMP_TYPE_TO10]] ], [ [[TMP48]], 
[[OMP_TYPE_FROM12]] ], [ [[TMP41]], [[OMP_TYPE_TO_ELSE11]] ]
 // CHECK-NEXT:    call void @.omp_mapper._ZTS1C.default(ptr [[TMP0]], ptr 
[[OMP_ARRAYMAP_PTRCURRENT]], ptr [[F]], i64 4, i64 [[OMP_MAPTYPE14]], ptr null) 
#[[ATTR3]]
-// CHECK-NEXT:    [[TMP46:%.*]] = add nuw i64 281474976711171, [[TMP21]]
-// CHECK-NEXT:    [[TMP47:%.*]] = and i64 [[TMP4]], 3
-// CHECK-NEXT:    [[TMP48:%.*]] = icmp eq i64 [[TMP47]], 0
-// CHECK-NEXT:    br i1 [[TMP48]], label [[OMP_TYPE_ALLOC15:%.*]], label 
[[OMP_TYPE_ALLOC_ELSE16:%.*]]
+// CHECK-NEXT:    [[TMP49:%.*]] = add nuw i64 281474976711171, [[TMP24]]
+// CHECK-NEXT:    [[TMP50:%.*]] = and i64 [[TMP4]], 3
+// CHECK-NEXT:    [[TMP51:%.*]] = icmp eq i64 [[TMP50]], 0
+// CHECK-NEXT:    br i1 [[TMP51]], label [[OMP_TYPE_ALLOC15:%.*]], label 
[[OMP_TYPE_ALLOC_ELSE16:%.*]]
 // CHECK:       omp.type.alloc15:
-// CHECK-NEXT:    [[TMP49:%.*]] = and i64 [[TMP46]], -4
+// CHECK-NEXT:    [[TMP52:%.*]] = and i64 [[TMP49]], -4
 // CHECK-NEXT:    br label [[OMP_TYPE_END20]]
 // CHECK:       omp.type.alloc.else16:
-// CHECK-NEXT:    [[TMP50:%.*]] = icmp eq i64 [[TMP47]], 1
-// CHECK-NEXT:    br i1 [[TMP50]], label [[OMP_TYPE_TO17:%.*]], label 
[[OMP_TYPE_TO_ELSE18:%.*]]
+// CHECK-NEXT:    [[TMP53:%.*]] = icmp eq i64 [[TMP50]], 1
+// CHECK-NEXT:    br i1 [[TMP53]], label [[OMP_TYPE_TO17:%.*]], label 
[[OMP_TYPE_TO_ELSE18:%.*]]
 // CHECK:       omp.type.to17:
-// CHECK-NEXT:    [[TMP51:%.*]] = and i64 [[TMP46]], -3
+// CHECK-NEXT:    [[TMP54:%.*]] = and i64 [[TMP49]], -3
 // CHECK-NEXT:    br label [[OMP_TYPE_END20]]
 // CHECK:       omp.type.to.else18:
-// CHECK-NEXT:    [[TMP52:%.*]] = icmp eq i64 [[TMP47]], 2
-// CHECK-NEXT:    br i1 [[TMP52]], label [[OMP_TYPE_FROM19:%.*]], label 
[[OMP_TYPE_END20]]
+// CHECK-NEXT:    [[TMP55:%.*]] = icmp eq i64 [[TMP50]], 2
+// CHECK-NEXT:    br i1 [[TMP55]], label [[OMP_TYPE_FROM19:%.*]], label 
[[OMP_TYPE_END20]]
 // CHECK:       omp.type.from19:
-// CHECK-NEXT:    [[TMP53:%.*]] = and i64 [[TMP46]], -2
+// CHECK-NEXT:    [[TMP56:%.*]] = and i64 [[TMP49]], -2
 // CHECK-NEXT:    br label [[OMP_TYPE_END20]]
 // CHECK:       omp.type.end2...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/177623
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to