[llvm-branch-commits] [clang] [flang] [mlir] [MLIR][OpenMP] DeclareTargetInterface and DeclareTargetAttr cleanup, NFCI (PR #217295)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Wed Aug 19 03:54:37 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-flang-openmp
@llvm/pr-subscribers-mlir-openmp
Author: Sergio Afonso (skatrak)
<details>
<summary>Changes</summary>
The changes introduced by this patch are intended to avoid triggering multiple by name lookups to the "omp.declare_target" attribute every time any data from the `DeclareTargetInterface` is queried, remove the need for keeping multiple default values for the same data, clean up the assembly format and generally improve the usage of the interface.
List of changes:
- `DeclareTargetInterface` only provides `setDeclareTarget` and `getDeclareTarget` methods to handle the "omp.declare_target" attribute, maintaining a single canonical way of accessing it.
- `DeclareTargetAttr` provides direct access to the capture clause and device type enums, rather than wrapping them into an `Attribute`. These are now mandatory as well. Both changes together make accessing them more straightforward and simplify the attribute representation.
---
Patch is 195.38 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/217295.diff
63 Files Affected:
- (modified) clang/test/CIR/CodeGenOpenMP/emit-device-functions.cpp (+1-1)
- (modified) clang/test/CIR/Transforms/omp-mark-declare-target.cir (+4-4)
- (modified) flang/docs/OpenMP-declare-target.md (+6-3)
- (modified) flang/lib/Lower/OpenMP/OpenMP.cpp (+8-5)
- (modified) flang/lib/Optimizer/OpenMP/AutomapToTargetData.cpp (+5-3)
- (modified) flang/lib/Optimizer/OpenMP/UnimplementedDeviceCheck.cpp (+4-3)
- (modified) flang/test/Fir/omp-declare-target-data.fir (+22-22)
- (modified) flang/test/Integration/OpenMP/declare-target-funcs.f90 (+2-2)
- (modified) flang/test/Integration/OpenMP/function-filtering-2.f90 (+4-4)
- (modified) flang/test/Lower/OpenMP/common-block-map.f90 (+1-1)
- (modified) flang/test/Lower/OpenMP/declare-target-data.f90 (+20-20)
- (modified) flang/test/Lower/OpenMP/declare-target-deferred-marking-reductions.f90 (+2-2)
- (modified) flang/test/Lower/OpenMP/declare-target-deferred-marking.f90 (+4-4)
- (modified) flang/test/Lower/OpenMP/declare-target-func-and-subr.f90 (+23-23)
- (modified) flang/test/Lower/OpenMP/declare-target-implicit-func-and-subr-cap-enter.f90 (+19-19)
- (modified) flang/test/Lower/OpenMP/declare-target-implicit-func-and-subr-cap.f90 (+21-21)
- (modified) flang/test/Lower/OpenMP/declare-target-implicit-tarop-cap.f90 (+7-7)
- (modified) flang/test/Lower/OpenMP/declare-target-multiple-entry.f90 (+3-3)
- (modified) flang/test/Lower/OpenMP/declare-target-named-main-interface.f90 (+3-3)
- (modified) flang/test/Lower/OpenMP/declare-target-unnamed-main.f90 (+1-1)
- (modified) flang/test/Lower/OpenMP/omp-declare-target-program-var.f90 (+1-1)
- (modified) flang/test/Transforms/omp-automap-to-target-data.fir (+3-3)
- (modified) flang/test/Transforms/omp-function-filtering-todo.mlir (+1-1)
- (modified) mlir/include/mlir/Dialect/OpenMP/OpenMPAttrDefs.td (+2-2)
- (modified) mlir/include/mlir/Dialect/OpenMP/OpenMPOpsInterfaces.td (+15-60)
- (modified) mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp (+1-1)
- (modified) mlir/lib/Dialect/OpenMP/Transforms/FunctionFiltering.cpp (+5-3)
- (modified) mlir/lib/Dialect/OpenMP/Transforms/HostOpFiltering.cpp (+4-2)
- (modified) mlir/lib/Dialect/OpenMP/Transforms/MarkDeclareTarget.cpp (+10-6)
- (modified) mlir/lib/Dialect/OpenMP/Utils/Utils.cpp (+4-3)
- (modified) mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp (+25-19)
- (modified) mlir/test/Dialect/OpenMP/attr.mlir (+30-48)
- (modified) mlir/test/Dialect/OpenMP/function-filter.mlir (+11-11)
- (modified) mlir/test/Dialect/OpenMP/host-op-filtering.mlir (+7-7)
- (modified) mlir/test/Dialect/OpenMP/invalid-interface.mlir (+4-4)
- (modified) mlir/test/Dialect/OpenMP/mark-declare-target.mlir (+44-44)
- (modified) mlir/test/Dialect/OpenMP/stack-to-shared.mlir (+2-2)
- (modified) mlir/test/Target/LLVMIR/omptarget-atomic-capture-control-options.mlir (+1-1)
- (modified) mlir/test/Target/LLVMIR/omptarget-atomic-update-control-options.mlir (+1-1)
- (modified) mlir/test/Target/LLVMIR/omptarget-constant-alloca-raise.mlir (+1-1)
- (modified) mlir/test/Target/LLVMIR/omptarget-debug-map-link-loc.mlir (+1-1)
- (modified) mlir/test/Target/LLVMIR/omptarget-declare-target-all-device-types-device.mlir (+12-12)
- (modified) mlir/test/Target/LLVMIR/omptarget-declare-target-func-visibility.mlir (+4-4)
- (modified) mlir/test/Target/LLVMIR/omptarget-declare-target-llvm-device-2.mlir (+3-3)
- (modified) mlir/test/Target/LLVMIR/omptarget-declare-target-llvm-device.mlir (+1-1)
- (modified) mlir/test/Target/LLVMIR/omptarget-declare-target-llvm-host.mlir (+17-17)
- (modified) mlir/test/Target/LLVMIR/omptarget-declare-target-module-rewrite-device.mlir (+12-12)
- (modified) mlir/test/Target/LLVMIR/omptarget-declare-target-to-device.mlir (+1-1)
- (modified) mlir/test/Target/LLVMIR/omptarget-declare-target-to-host.mlir (+1-1)
- (modified) mlir/test/Target/LLVMIR/omptarget-device-shared-mem.mlir (+1-1)
- (modified) mlir/test/Target/LLVMIR/omptarget-multi-reduction.mlir (+1-1)
- (modified) mlir/test/Target/LLVMIR/omptarget-parallel-llvm.mlir (+2-2)
- (modified) mlir/test/Target/LLVMIR/omptarget-parallel-wsloop.mlir (+1-1)
- (modified) mlir/test/Target/LLVMIR/omptarget-private-llvm.mlir (+2-2)
- (modified) mlir/test/Target/LLVMIR/omptarget-teams-distribute-reduction-array-descriptor.mlir (+2-2)
- (modified) mlir/test/Target/LLVMIR/omptarget-teams-distribute-reduction.mlir (+1-1)
- (modified) mlir/test/Target/LLVMIR/omptarget-teams-llvm.mlir (+1-1)
- (modified) mlir/test/Target/LLVMIR/omptarget-teams-reduction.mlir (+1-1)
- (modified) mlir/test/Target/LLVMIR/omptarget-wsloop-collapsed.mlir (+1-1)
- (modified) mlir/test/Target/LLVMIR/omptarget-wsloop.mlir (+2-2)
- (modified) mlir/test/Target/LLVMIR/openmp-data-target-device.mlir (+1-1)
- (modified) mlir/test/Target/LLVMIR/openmp-llvm.mlir (+9-9)
- (modified) mlir/test/Target/LLVMIR/openmp-target-private-shared-mem.mlir (+2-2)
``````````diff
diff --git a/clang/test/CIR/CodeGenOpenMP/emit-device-functions.cpp b/clang/test/CIR/CodeGenOpenMP/emit-device-functions.cpp
index 53a8e2b7aab71..014529d2104d3 100644
--- a/clang/test/CIR/CodeGenOpenMP/emit-device-functions.cpp
+++ b/clang/test/CIR/CodeGenOpenMP/emit-device-functions.cpp
@@ -33,7 +33,7 @@ void caller() {
#pragma omp end declare target
-// CIR-DAG: cir.func {{.*}} @_Z12regular_funcv() {{.*}}omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to)
+// CIR-DAG: cir.func {{.*}} @_Z12regular_funcv() {{.*}}omp.declare_target = #omp.declaretarget<device_type = any, capture_clause = to
// CIR-DAG: cir.func {{.*}} @_Z6callerv() {{.*}}omp.declare_target
// CIR-DAG: cir.func {{.*}} @_ZN1SC2Ev({{.*}})
// CIR-DAG: cir.func {{.*}} @_ZN1SC1Ev({{.*}})
diff --git a/clang/test/CIR/Transforms/omp-mark-declare-target.cir b/clang/test/CIR/Transforms/omp-mark-declare-target.cir
index a32fccc20f970..daa082683d03a 100644
--- a/clang/test/CIR/Transforms/omp-mark-declare-target.cir
+++ b/clang/test/CIR/Transforms/omp-mark-declare-target.cir
@@ -10,22 +10,22 @@ module {
// A helper function with no declare_target attribute initially.
// After the pass, it should be marked because @caller calls it.
// CHECK-LABEL: cir.func private @helper
- // CHECK-SAME: omp.declare_target = #omp.declaretarget<device_type = (host), capture_clause = (to)
+ // CHECK-SAME: omp.declare_target = #omp.declaretarget<device_type = host, capture_clause = to
cir.func private @helper() {
cir.return
}
// Explicitly marked as declare_target; calls @helper.
// CHECK-LABEL: cir.func @caller
- // CHECK-SAME: omp.declare_target = #omp.declaretarget<device_type = (host), capture_clause = (to)>
- cir.func @caller() attributes {omp.declare_target = #omp.declaretarget<device_type = (host), capture_clause = (to)>} {
+ // CHECK-SAME: omp.declare_target = #omp.declaretarget<device_type = host, capture_clause = to>
+ cir.func @caller() attributes {omp.declare_target = #omp.declaretarget<device_type = host, capture_clause = to>} {
cir.call @helper() : () -> ()
cir.return
}
// Called from within an omp.target region; should be marked as nohost.
// CHECK-LABEL: cir.func private @device_helper
- // CHECK-SAME: omp.declare_target = #omp.declaretarget<device_type = (nohost), capture_clause = (to)
+ // CHECK-SAME: omp.declare_target = #omp.declaretarget<device_type = nohost, capture_clause = to
cir.func private @device_helper() {
cir.return
}
diff --git a/flang/docs/OpenMP-declare-target.md b/flang/docs/OpenMP-declare-target.md
index e43a623cc9fb9..1e98068a2961b 100644
--- a/flang/docs/OpenMP-declare-target.md
+++ b/flang/docs/OpenMP-declare-target.md
@@ -79,7 +79,7 @@ would find on the `declare target` directive i.e. device type (`nohost`,
```
fir.global internal @_QFEi {omp.declare_target =
-#omp.declaretarget<device_type = (any), capture_clause = (to)>} : f32 {
+#omp.declaretarget<device_type = any, capture_clause = to>} : f32 {
%0 = fir.undefined f32
fir.has_value %0 : f32
}
@@ -93,8 +93,11 @@ operations to access the appropriate interface functions, e.g.:
```C++
auto declareTargetGlobal =
-llvm::dyn_cast<mlir::omp::DeclareTargetInterface>(Op.getOperation());
-declareTargetGlobal.isDeclareTarget();
+ llvm::cast<mlir::omp::DeclareTargetInterface>(op.getOperation());
+auto declareTargetAttr = declareTargetGlobal.getDeclareTarget();
+if (declareTargetAttr) {
+ auto deviceType = declareTargetAttr.getDeviceType();
+}
```
## Declare Target Fortran OpenMP Lowering
diff --git a/flang/lib/Lower/OpenMP/OpenMP.cpp b/flang/lib/Lower/OpenMP/OpenMP.cpp
index 40317d4b53624..9eb86e91ea612 100644
--- a/flang/lib/Lower/OpenMP/OpenMP.cpp
+++ b/flang/lib/Lower/OpenMP/OpenMP.cpp
@@ -1756,10 +1756,12 @@ getImplicitMapTypeAndKind(fir::FirOpBuilder &firOpBuilder,
}
}
- if (declareTargetOp && declareTargetOp.isDeclareTarget()) {
- if (declareTargetOp.getDeclareTargetCaptureClause() ==
+ mlir::omp::DeclareTargetAttr declareTargetAttr =
+ declareTargetOp ? declareTargetOp.getDeclareTarget() : nullptr;
+ if (declareTargetAttr) {
+ if (declareTargetAttr.getCaptureClause() ==
mlir::omp::DeclareTargetCaptureClause::link &&
- declareTargetOp.getDeclareTargetDeviceType() !=
+ declareTargetAttr.getDeviceType() !=
mlir::omp::DeclareTargetDeviceType::nohost) {
mapFlag |= mlir::omp::ClauseMapFlags::to;
mapFlag |= mlir::omp::ClauseMapFlags::from;
@@ -1839,8 +1841,9 @@ markDeclareTarget(mlir::Operation *op, lower::AbstractConverter &converter,
// likely through implicit capture (usage in another declare target
// function/subroutine). It should be marked as any if it has been assigned
// both host and nohost, else we skip, as there is no change
- if (declareTargetOp.isDeclareTarget()) {
- if (declareTargetOp.getDeclareTargetDeviceType() != deviceType)
+ if (mlir::omp::DeclareTargetAttr declareTargetAttr =
+ declareTargetOp.getDeclareTarget()) {
+ if (declareTargetAttr.getDeviceType() != deviceType)
declareTargetOp.setDeclareTarget(mlir::omp::DeclareTargetDeviceType::any,
captureClause, automap,
/*implicit=*/false);
diff --git a/flang/lib/Optimizer/OpenMP/AutomapToTargetData.cpp b/flang/lib/Optimizer/OpenMP/AutomapToTargetData.cpp
index bf269b5dd3ff2..0ec0c9193e969 100644
--- a/flang/lib/Optimizer/OpenMP/AutomapToTargetData.cpp
+++ b/flang/lib/Optimizer/OpenMP/AutomapToTargetData.cpp
@@ -97,11 +97,13 @@ class AutomapToTargetDataPass
llvm::DenseSet<fir::GlobalOp> automapGlobals;
module.walk([&](fir::GlobalOp globalOp) {
if (auto iface =
- dyn_cast<omp::DeclareTargetInterface>(globalOp.getOperation()))
- if (iface.isDeclareTarget() && iface.getDeclareTargetAutomap() &&
- iface.getDeclareTargetDeviceType() !=
+ dyn_cast<omp::DeclareTargetInterface>(globalOp.getOperation())) {
+ omp::DeclareTargetAttr declareTargetAttr = iface.getDeclareTarget();
+ if (declareTargetAttr && declareTargetAttr.getAutomap() &&
+ declareTargetAttr.getDeviceType() !=
omp::DeclareTargetDeviceType::host)
automapGlobals.insert(globalOp);
+ }
});
auto addMapInfo = [&](auto globalOp, auto memOp) {
diff --git a/flang/lib/Optimizer/OpenMP/UnimplementedDeviceCheck.cpp b/flang/lib/Optimizer/OpenMP/UnimplementedDeviceCheck.cpp
index c393e2f90f88f..faf7274444104 100644
--- a/flang/lib/Optimizer/OpenMP/UnimplementedDeviceCheck.cpp
+++ b/flang/lib/Optimizer/OpenMP/UnimplementedDeviceCheck.cpp
@@ -37,9 +37,10 @@ static bool allUsesInHostCode(Operation *moduleOp, SymbolOpInterface symOp) {
if (auto declareTargetOp =
symUser->getParentOfType<omp::DeclareTargetInterface>()) {
- if (declareTargetOp.isDeclareTarget() &&
- declareTargetOp.getDeclareTargetDeviceType() !=
- omp::DeclareTargetDeviceType::host)
+ omp::DeclareTargetAttr declareTargetAttr =
+ declareTargetOp.getDeclareTarget();
+ if (declareTargetAttr && declareTargetAttr.getDeviceType() !=
+ omp::DeclareTargetDeviceType::host)
return false;
}
}
diff --git a/flang/test/Fir/omp-declare-target-data.fir b/flang/test/Fir/omp-declare-target-data.fir
index 171ea8fe4fcc2..539a7acf267f2 100644
--- a/flang/test/Fir/omp-declare-target-data.fir
+++ b/flang/test/Fir/omp-declare-target-data.fir
@@ -2,11 +2,11 @@
module attributes {omp.is_target_device = false} {
- // CHECK: llvm.mlir.global external @_QMtest_0Earray_1d(dense<[1, 2, 3]> : tensor<3xi32>) {{{.*}}omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link)>{{.*}}} : !llvm.array<3 x i32>
- fir.global @_QMtest_0Earray_1d(dense<[1, 2, 3]> : tensor<3xi32>) {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link)>} : !fir.array<3xi32>
+ // CHECK: llvm.mlir.global external @_QMtest_0Earray_1d(dense<[1, 2, 3]> : tensor<3xi32>) {{{.*}}omp.declare_target = #omp.declaretarget<device_type = any, capture_clause = link>{{.*}}} : !llvm.array<3 x i32>
+ fir.global @_QMtest_0Earray_1d(dense<[1, 2, 3]> : tensor<3xi32>) {omp.declare_target = #omp.declaretarget<device_type = any, capture_clause = link>} : !fir.array<3xi32>
- // CHECK: llvm.mlir.global external @_QMtest_0Earray_2d() {{{.*}}omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link)>{{.*}}} : !llvm.array<2 x array<2 x i32>>
- fir.global @_QMtest_0Earray_2d {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link)>} : !fir.array<2x2xi32> {
+ // CHECK: llvm.mlir.global external @_QMtest_0Earray_2d() {{{.*}}omp.declare_target = #omp.declaretarget<device_type = any, capture_clause = link>{{.*}}} : !llvm.array<2 x array<2 x i32>>
+ fir.global @_QMtest_0Earray_2d {omp.declare_target = #omp.declaretarget<device_type = any, capture_clause = link>} : !fir.array<2x2xi32> {
%0 = fir.undefined !fir.array<2x2xi32>
%c1_i32 = arith.constant 1 : i32
%1 = fir.insert_value %0, %c1_i32, [0 : index, 0 : index] : (!fir.array<2x2xi32>, i32) -> !fir.array<2x2xi32>
@@ -21,57 +21,57 @@ module attributes {omp.is_target_device = false} {
fir.has_value %4 : !fir.array<2x2xi32>
}
- // CHECK: llvm.mlir.global external @_QMtest_0Edata_extended_link_1() {{{.*}}omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link)>{{.*}}} : f32
- fir.global @_QMtest_0Edata_extended_link_1 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link)>} : f32 {
+ // CHECK: llvm.mlir.global external @_QMtest_0Edata_extended_link_1() {{{.*}}omp.declare_target = #omp.declaretarget<device_type = any, capture_clause = link>{{.*}}} : f32
+ fir.global @_QMtest_0Edata_extended_link_1 {omp.declare_target = #omp.declaretarget<device_type = any, capture_clause = link>} : f32 {
%cst = arith.constant 2.000000e+00 : f32
fir.has_value %cst : f32
}
- // CHECK: llvm.mlir.global external @_QMtest_0Edata_extended_link_2() {{{.*}}omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link)>{{.*}}} : f32
- fir.global @_QMtest_0Edata_extended_link_2 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link)>} : f32 {
+ // CHECK: llvm.mlir.global external @_QMtest_0Edata_extended_link_2() {{{.*}}omp.declare_target = #omp.declaretarget<device_type = any, capture_clause = link>{{.*}}} : f32
+ fir.global @_QMtest_0Edata_extended_link_2 {omp.declare_target = #omp.declaretarget<device_type = any, capture_clause = link>} : f32 {
%cst = arith.constant 3.000000e+00 : f32
fir.has_value %cst : f32
}
- // CHECK: llvm.mlir.global external @_QMtest_0Edata_extended_to_1() {{{.*}}omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to)>{{.*}}} : f32
- fir.global @_QMtest_0Edata_extended_to_1 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to)>} : f32 {
+ // CHECK: llvm.mlir.global external @_QMtest_0Edata_extended_to_1() {{{.*}}omp.declare_target = #omp.declaretarget<device_type = any, capture_clause = to>{{.*}}} : f32
+ fir.global @_QMtest_0Edata_extended_to_1 {omp.declare_target = #omp.declaretarget<device_type = any, capture_clause = to>} : f32 {
%cst = arith.constant 2.000000e+00 : f32
fir.has_value %cst : f32
}
- // CHECK: llvm.mlir.global external @_QMtest_0Edata_extended_to_2() {{{.*}}omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to)>{{.*}}} : f32 {
- fir.global @_QMtest_0Edata_extended_to_2 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to)>} : f32 {
+ // CHECK: llvm.mlir.global external @_QMtest_0Edata_extended_to_2() {{{.*}}omp.declare_target = #omp.declaretarget<device_type = any, capture_clause = to>{{.*}}} : f32 {
+ fir.global @_QMtest_0Edata_extended_to_2 {omp.declare_target = #omp.declaretarget<device_type = any, capture_clause = to>} : f32 {
%cst = arith.constant 3.000000e+00 : f32
fir.has_value %cst : f32
}
- // CHECK: llvm.mlir.global external @_QMtest_0Edata_int() {{{.*}}omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link)>{{.*}}} : i32
- fir.global @_QMtest_0Edata_int {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link)>} : i32 {
+ // CHECK: llvm.mlir.global external @_QMtest_0Edata_int() {{{.*}}omp.declare_target = #omp.declaretarget<device_type = any, capture_clause = link>{{.*}}} : i32
+ fir.global @_QMtest_0Edata_int {omp.declare_target = #omp.declaretarget<device_type = any, capture_clause = link>} : i32 {
%c10_i32 = arith.constant 10 : i32
fir.has_value %c10_i32 : i32
}
- // CHECK: llvm.mlir.global external @_QMtest_0Edata_int_clauseless() {{{.*}}omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to)>{{.*}}} : i32
- fir.global @_QMtest_0Edata_int_clauseless {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to)>} : i32 {
+ // CHECK: llvm.mlir.global external @_QMtest_0Edata_int_clauseless() {{{.*}}omp.declare_target = #omp.declaretarget<device_type = any, capture_clause = to>{{.*}}} : i32
+ fir.global @_QMtest_0Edata_int_clauseless {omp.declare_target = #omp.declaretarget<device_type = any, capture_clause = to>} : i32 {
%c1_i32 = arith.constant 1 : i32
fir.has_value %c1_i32 : i32
}
- // CHECK: llvm.mlir.global external @_QMtest_0Edata_int_to() {{{.*}}omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to)>{{.*}}} : i32
- fir.global @_QMtest_0Edata_int_to {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to)>} : i32 {
+ // CHECK: llvm.mlir.global external @_QMtest_0Edata_int_to() {{{.*}}omp.declare_target = #omp.declaretarget<device_type = any, capture_clause = to>{{.*}}} : i32
+ fir.global @_QMtest_0Edata_int_to {omp.declare_target = #omp.declaretarget<device_type = any, capture_clause = to>} : i32 {
%c5_i32 = arith.constant 5 : i32
fir.has_value %c5_i32 : i32
}
- // CHECK: llvm.mlir.global external @_QMtest_0Ept1() {{{.*}}omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link)>{{.*}}} : !llvm.struct<(ptr, i64, i32, i8, i8, i8, i8)> {
- fir.global @_QMtest_0Ept1 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link)>} : !fir.box<!fir.ptr<i32>> {
+ // CHECK: llvm.mlir.global external @_QMtest_0Ept1() {{{.*}}omp.declare_target = #omp.declaretarget<device_type = any, capture_clause = link>{{.*}}} : !llvm.struct<(ptr, i64, i32, i8, i8, i8, i8)> {
+ fir.global @_QMtest_0Ept1 {omp.declare_target = #omp.declaretarget<device_type = any, capture_clause = link>} : !fir.box<!fir.ptr<i32>> {
%0 = fir.zero_bits !fir.ptr<i32>
%1 = fir.embox %0 : (!fir.ptr<i32>) -> !fir.box<!fir.ptr<i32>>
fir.has_value %1 : !fir.box<!fir.ptr<i32>>
}
- // CHECK: llvm.mlir.global external @_QMtest_0Ept2_tar() {{{.*}}omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link)>{{.*}}} : i32
- fir.global @_QMtest_0Ept2_tar {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link)>} target : i32 {
+ // CHECK: llvm.mlir.global external @_QMtest_0Ept2_tar() {{{.*}}omp.declare_target = #omp.declaretarget<device_type = any, capture_clause = link>{{.*}}} : i32
+ fir.global @_QMtest_0Ept2_tar {omp.declare_target = #omp.declaretarget<device_type = any, capture_clause = link>} target : i32 {
%c5_i32 = arith.constant 5 : i32
fir.has_value %c5_i32 : i32
}
diff --git a/flang/test/Integration/OpenMP/declare-target-funcs.f90 b/flang/test/Integration/OpenMP/declare-target-funcs.f90
index 66010b9b0838f..6a4ac0538c06b 100644
--- a/flang/test/Integration/OpenMP/declare-target-funcs.f90
+++ b/flang/test/Integration/OpenMP/declare-target-funcs.f90
@@ -16,8 +16,8 @@
! CHECK-LABEL: IR Dump Before HostOpFilteringPass: omp-host-op-filter
! CHECK: llvm.func{{.*}}@__mlir_math_ipowi_i32
-! CHECK-SAME: attributes{{.*}}omp.declare_target{{.*}}device_type =
-! CHECK-NOT: (host)
+! CHECK-SAME: attributes{{.*}}omp.declare_target = #omp.declaretarget<
+! CHECK-NOT: device_type = host
module m
contains
diff --git a/flang/test/Integration/OpenMP/function-filtering-2.f90 b/flang/test/Integration/OpenMP/function-filtering-2.f90
index a5bb5d2165fe7..cc6fa0b938e1e 100644
--- a/flang/test/Integration/OpenMP/function-filtering-2.f90
+++ b/flang/test/Integration/OpenMP/function-filtering-2.f90
@@ -24,13 +24,13 @@ program main
!$omp end target
contains
- ! MLIR-ALL: llvm.func{{.*}} @{{.*}}implicit_invocation() attributes {{{.*}}omp.declare_target = #omp.declaretarget<device_type = (nohost), capture_clause = (to), implicit = true>{{.*}}}
+ ! MLIR-ALL: llvm.func{{.*}} @{{.*}}implicit_invocation() attributes {{{.*}}omp.declare_target = #omp.declaretarget<device_type = nohost, capture_clause = to, implicit = true>{{.*}}}
! MLIR-ALL: llvm.return
! LLVM-ALL: define {{.*}} @{{.*}}implicit_invocation{{.*}}(
subroutine implicit_invocation()
end subroutine implicit_invocation
- ! MLIR-ALL: llvm.func{{.*}} @{{.*}}declaretarget() attributes {{{.*}}omp.declare_target = #omp.declaretarget<device_type = (nohost), capture_clause = (to)>{{.*}}}
+ ! MLIR-ALL: llvm.func{{.*}} @{{.*}}declaretarget() attributes {{{.*}}omp.declare_target = #omp.declaretarget<device_type = nohost, capture_clause = to>{{.*}}}
! MLIR-ALL: llvm.return
! LLVM-ALL: define {{.*}} @{{.*}}declaretarget{{.*}}(
subroutine declaretarget()
@@ -38,7 +38,7 @@ subroutine declaretarget()
call implicit_invocation()
end subroutine declaretarget
- ! MLIR-ALL: llvm.func{{.*}} @{{.*}}declaretarget_enter() attributes {{{.*}}omp.declare_target = #omp.declaretarget<device_type = (nohost), capture_clause = (enter)>{{.*}}}
+ ! MLIR-ALL: llvm.func{{.*}} @{{.*}}declaretarget_enter() attributes {{{.*}}omp.declare_target = #omp.declaretarget<device_type = nohost, capture_clause = enter>{{.*}}}
! MLIR-ALL: llvm.return
! LLVM-ALL: define {{.*}} @{{.*}}declaretarget_enter{{.*}}(
subroutine declaretarget_enter()
@@ -46,7 +46,7 @@ subroutine declaretarget_enter()
call implicit_invocation()
end subroutine declaretarget_enter
- ! MLIR-ALL: llvm.func{{.*}} @{{.*}}no_declaretarget() attributes {{{.*}}omp.declare_target = #omp.declaretarget<device_type = (nohost), capture_clause = (to), implicit = true>{{.*}}}
+ ! MLIR-ALL: llvm.func{{.*}} @{{.*}}no_declaretarget() attributes {{{.*}}omp.declare_target = #omp.declaretarget<device_type = nohost, capture_clause = to, implicit = true>{{.*}}}
! MLIR-ALL: llvm.return
! LLVM-ALL: define {{.*}} @{{.*}}no_declaretarget{{.*}}(
subroutine no_declaretarget()
diff --git a/flang/test/Lower/OpenMP/common-block-map.f90 b/flang/test/Lower/OpenMP/common-block-map.f90
index a1d9a1430141a..f74f3ff5f92a0 100644
--- a/flang/test/Lower/OpenMP/common-block-map.f90
+++ b/flang/test/Lower/OpenMP/common-block-map.f90
@@ -1,7 +1,7 @@
!RUN: %flang_fc1 -emit-hlfir -fopenmp %s -o - | FileCheck %s
!CHECK: fir.global common @var_common_(dense<0> : vector<8xi8>) {{.*}} : !fir.array<8xi8>
-!CHECK: fir.global common @var_common_link_(dense<0> : vector<8xi8>) {{{.*}} omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link)>} : !fir.array<8xi8>
+!CHECK: fir.global common @var_common_link_(dense<0> : vector<8xi8>) {{{.*}} omp.declare_target = #omp.declaretarget<device_type = any, capture_clause = link>} : !fir.array<8xi8>
!CHECK-LABEL: func.func @_QPmap_full_block
!CHECK: %[[CB_ADDR:.*]] = fir.address_of(@var_common_) : !fir.ref<!fir.array<8xi8>>
diff --git a/flang/test/Lower/OpenMP/declare-target-data.f90 b/flang/test/Lower/OpenMP/declare-target-data.f90
index d4f1fb273e068..6bfcbb09427d2 100644
--- a/flang/test/Lower/OpenMP/declare-target-data.f90
+++ b/flang/test/Lower/OpenMP/declare-target-data.f90
@@ -4,61 +4,61 @@
module test_0
implicit none
-!CHECK-DAG: fir.global @_QMtest_0Edata_int {omp.declare_target = #omp.declaretarget<device_type = (any), cap...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/217295
More information about the llvm-branch-commits
mailing list