Skip to content

[flang] Generlize names of delayed privatization CLI flags #138816

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 29, 2025

Conversation

@llvmbot llvmbot added flang Flang issues not falling into any other category flang:fir-hlfir flang:openmp labels May 7, 2025
@ergawy ergawy requested review from tblah and bhandarkar-pranav May 7, 2025 07:53
@llvmbot
Copy link
Member

llvmbot commented May 7, 2025

@llvm/pr-subscribers-flang-fir-hlfir

Author: Kareem Ergawy (ergawy)

Changes

Remove the openmp prefix from delayed privatization/localization flags since they are now used for do concurrent as well.


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

35 Files Affected:

  • (added) flang/include/flang/Support/Flags.h (+17)
  • (modified) flang/lib/Lower/Bridge.cpp (+1-1)
  • (modified) flang/lib/Lower/OpenMP/OpenMP.cpp (+1)
  • (modified) flang/lib/Lower/OpenMP/Utils.cpp (-12)
  • (modified) flang/lib/Lower/OpenMP/Utils.h (-2)
  • (modified) flang/lib/Support/CMakeLists.txt (+1)
  • (added) flang/lib/Support/Flags.cpp (+20)
  • (modified) flang/test/Lower/OpenMP/DelayedPrivatization/distribute-standalone-private.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/DelayedPrivatization/equivalence.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/DelayedPrivatization/target-private-allocatable.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/DelayedPrivatization/target-private-multiple-variables.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/DelayedPrivatization/target-private-simple.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/allocatable-multiple-vars.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/cfg-conversion-omp.private.f90 (+1-1)
  • (modified) flang/test/Lower/OpenMP/debug_info_conflict.f90 (+1-1)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-allocatable-array.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-allocatable-firstprivate.f90 (+3-3)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-allocatable-private.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-array.f90 (+6-6)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-character-array.f90 (+4-4)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-character.f90 (+4-4)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-default-init.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-firstprivate.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-lower-allocatable-to-llvm.f90 (+1-1)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-pointer.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-private-firstprivate.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-private.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-reduction-byref.f90 (+1-1)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-reduction.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/different_vars_lastprivate_barrier.f90 (+1-1)
  • (modified) flang/test/Lower/OpenMP/firstprivate-commonblock.f90 (+1-1)
  • (modified) flang/test/Lower/OpenMP/private-commonblock.f90 (+1-1)
  • (modified) flang/test/Lower/OpenMP/private-derived-type.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/same_var_first_lastprivate.f90 (+1-1)
  • (modified) flang/test/Lower/do_concurrent_delayed_locality.f90 (+1-1)
diff --git a/flang/include/flang/Support/Flags.h b/flang/include/flang/Support/Flags.h
new file mode 100644
index 0000000000000..bcbb72f8e50d0
--- /dev/null
+++ b/flang/include/flang/Support/Flags.h
@@ -0,0 +1,17 @@
+//===-- include/flang/Support/Flags.h ---------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef FORTRAN_SUPPORT_FLAGS_H_
+#define FORTRAN_SUPPORT_FLAGS_H_
+
+#include "llvm/Support/CommandLine.h"
+
+extern llvm::cl::opt<bool> enableDelayedPrivatization;
+extern llvm::cl::opt<bool> enableDelayedPrivatizationStaging;
+
+#endif // FORTRAN_SUPPORT_FLAGS_H_
diff --git a/flang/lib/Lower/Bridge.cpp b/flang/lib/Lower/Bridge.cpp
index 8529bef5d9c5e..76973ad5615fd 100644
--- a/flang/lib/Lower/Bridge.cpp
+++ b/flang/lib/Lower/Bridge.cpp
@@ -13,7 +13,6 @@
 #include "flang/Lower/Bridge.h"
 
 #include "OpenMP/DataSharingProcessor.h"
-#include "OpenMP/Utils.h"
 #include "flang/Lower/Allocatable.h"
 #include "flang/Lower/CallInterface.h"
 #include "flang/Lower/Coarray.h"
@@ -63,6 +62,7 @@
 #include "flang/Semantics/runtime-type-info.h"
 #include "flang/Semantics/symbol.h"
 #include "flang/Semantics/tools.h"
+#include "flang/Support/Flags.h"
 #include "flang/Support/Version.h"
 #include "mlir/Dialect/ControlFlow/IR/ControlFlowOps.h"
 #include "mlir/IR/BuiltinAttributes.h"
diff --git a/flang/lib/Lower/OpenMP/OpenMP.cpp b/flang/lib/Lower/OpenMP/OpenMP.cpp
index 47e7c266ff7d3..2edf750d6bfcb 100644
--- a/flang/lib/Lower/OpenMP/OpenMP.cpp
+++ b/flang/lib/Lower/OpenMP/OpenMP.cpp
@@ -34,6 +34,7 @@
 #include "flang/Parser/parse-tree.h"
 #include "flang/Semantics/openmp-directive-sets.h"
 #include "flang/Semantics/tools.h"
+#include "flang/Support/Flags.h"
 #include "flang/Support/OpenMP-utils.h"
 #include "mlir/Dialect/ControlFlow/IR/ControlFlowOps.h"
 #include "mlir/Dialect/OpenMP/OpenMPDialect.h"
diff --git a/flang/lib/Lower/OpenMP/Utils.cpp b/flang/lib/Lower/OpenMP/Utils.cpp
index 3f4cfb8c11a9d..b7507c4754de4 100644
--- a/flang/lib/Lower/OpenMP/Utils.cpp
+++ b/flang/lib/Lower/OpenMP/Utils.cpp
@@ -33,18 +33,6 @@ llvm::cl::opt<bool> treatIndexAsSection(
     llvm::cl::desc("In the OpenMP data clauses treat `a(N)` as `a(N:N)`."),
     llvm::cl::init(true));
 
-llvm::cl::opt<bool> enableDelayedPrivatization(
-    "openmp-enable-delayed-privatization",
-    llvm::cl::desc(
-        "Emit `[first]private` variables as clauses on the MLIR ops."),
-    llvm::cl::init(true));
-
-llvm::cl::opt<bool> enableDelayedPrivatizationStaging(
-    "openmp-enable-delayed-privatization-staging",
-    llvm::cl::desc("For partially supported constructs, emit `[first]private` "
-                   "variables as clauses on the MLIR ops."),
-    llvm::cl::init(false));
-
 namespace Fortran {
 namespace lower {
 namespace omp {
diff --git a/flang/lib/Lower/OpenMP/Utils.h b/flang/lib/Lower/OpenMP/Utils.h
index 30b4613837b9a..a7eb2dc5ee664 100644
--- a/flang/lib/Lower/OpenMP/Utils.h
+++ b/flang/lib/Lower/OpenMP/Utils.h
@@ -17,8 +17,6 @@
 #include <cstdint>
 
 extern llvm::cl::opt<bool> treatIndexAsSection;
-extern llvm::cl::opt<bool> enableDelayedPrivatization;
-extern llvm::cl::opt<bool> enableDelayedPrivatizationStaging;
 
 namespace fir {
 class FirOpBuilder;
diff --git a/flang/lib/Support/CMakeLists.txt b/flang/lib/Support/CMakeLists.txt
index 4ee381589a208..363f57ce97dae 100644
--- a/flang/lib/Support/CMakeLists.txt
+++ b/flang/lib/Support/CMakeLists.txt
@@ -44,6 +44,7 @@ endif()
 
 add_flang_library(FortranSupport
   default-kinds.cpp
+  Flags.cpp
   Fortran.cpp
   Fortran-features.cpp
   idioms.cpp
diff --git a/flang/lib/Support/Flags.cpp b/flang/lib/Support/Flags.cpp
new file mode 100644
index 0000000000000..02f64981618dd
--- /dev/null
+++ b/flang/lib/Support/Flags.cpp
@@ -0,0 +1,20 @@
+//===-- lib/Support/Flags.cpp ---------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "flang/Support/Flags.h"
+
+llvm::cl::opt<bool> enableDelayedPrivatization("enable-delayed-privatization",
+    llvm::cl::desc(
+        "Emit private/local variables as clauses/specifiers on MLIR ops."),
+    llvm::cl::init(true));
+
+llvm::cl::opt<bool> enableDelayedPrivatizationStaging(
+    "enable-delayed-privatization-staging",
+    llvm::cl::desc("For partially supported constructs, emit private/local "
+                   "variables as clauses/specifiers on MLIR ops."),
+    llvm::cl::init(false));
diff --git a/flang/test/Lower/OpenMP/DelayedPrivatization/distribute-standalone-private.f90 b/flang/test/Lower/OpenMP/DelayedPrivatization/distribute-standalone-private.f90
index a9c85db79fa31..92aeb3fbc1ee7 100644
--- a/flang/test/Lower/OpenMP/DelayedPrivatization/distribute-standalone-private.f90
+++ b/flang/test/Lower/OpenMP/DelayedPrivatization/distribute-standalone-private.f90
@@ -1,6 +1,6 @@
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization-staging \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization-staging \
 ! RUN:   -o - %s 2>&1 | FileCheck %s
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization-staging -o - %s 2>&1 \
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization-staging -o - %s 2>&1 \
 ! RUN:   | FileCheck %s
 
 subroutine standalone_distribute
diff --git a/flang/test/Lower/OpenMP/DelayedPrivatization/equivalence.f90 b/flang/test/Lower/OpenMP/DelayedPrivatization/equivalence.f90
index 721bfff012f14..5234862feaa76 100644
--- a/flang/test/Lower/OpenMP/DelayedPrivatization/equivalence.f90
+++ b/flang/test/Lower/OpenMP/DelayedPrivatization/equivalence.f90
@@ -1,8 +1,8 @@
 ! Test delayed privatization for variables that are storage associated via `EQUIVALENCE`.
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %s 2>&1 | FileCheck %s
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - %s 2>&1 \
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - %s 2>&1 \
 ! RUN:   | FileCheck %s
 
 subroutine private_common
diff --git a/flang/test/Lower/OpenMP/DelayedPrivatization/target-private-allocatable.f90 b/flang/test/Lower/OpenMP/DelayedPrivatization/target-private-allocatable.f90
index 87c2c2ae26796..3d93fbc6e446e 100644
--- a/flang/test/Lower/OpenMP/DelayedPrivatization/target-private-allocatable.f90
+++ b/flang/test/Lower/OpenMP/DelayedPrivatization/target-private-allocatable.f90
@@ -1,8 +1,8 @@
 ! Tests delayed privatization for `targets ... private(..)` for allocatables.
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization-staging \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization-staging \
 ! RUN:   -o - %s 2>&1 | FileCheck %s
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization-staging -o - %s 2>&1 \
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization-staging -o - %s 2>&1 \
 ! RUN:   | FileCheck %s
 
 subroutine target_allocatable
diff --git a/flang/test/Lower/OpenMP/DelayedPrivatization/target-private-multiple-variables.f90 b/flang/test/Lower/OpenMP/DelayedPrivatization/target-private-multiple-variables.f90
index ad7bfb3d7c247..12e15a2aafc2d 100644
--- a/flang/test/Lower/OpenMP/DelayedPrivatization/target-private-multiple-variables.f90
+++ b/flang/test/Lower/OpenMP/DelayedPrivatization/target-private-multiple-variables.f90
@@ -1,8 +1,8 @@
 ! Tests delayed privatization for `targets ... private(..)` for allocatables.
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization-staging \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization-staging \
 ! RUN:   -o - %s 2>&1 | FileCheck %s
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization-staging -o - %s 2>&1 \
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization-staging -o - %s 2>&1 \
 ! RUN:   | FileCheck %s
 
 subroutine target_allocatable(lb, ub, l)
diff --git a/flang/test/Lower/OpenMP/DelayedPrivatization/target-private-simple.f90 b/flang/test/Lower/OpenMP/DelayedPrivatization/target-private-simple.f90
index 5abf2cbb15c92..f543068d29753 100644
--- a/flang/test/Lower/OpenMP/DelayedPrivatization/target-private-simple.f90
+++ b/flang/test/Lower/OpenMP/DelayedPrivatization/target-private-simple.f90
@@ -1,8 +1,8 @@
 ! Tests delayed privatization for `targets ... private(..)` for simple variables.
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization-staging \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization-staging \
 ! RUN:   -o - %s 2>&1 | FileCheck %s
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization-staging -o - %s 2>&1 \
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization-staging -o - %s 2>&1 \
 ! RUN:   | FileCheck %s
 
 subroutine target_simple
diff --git a/flang/test/Lower/OpenMP/allocatable-multiple-vars.f90 b/flang/test/Lower/OpenMP/allocatable-multiple-vars.f90
index e6450a13e13a0..91ba75f2198e3 100644
--- a/flang/test/Lower/OpenMP/allocatable-multiple-vars.f90
+++ b/flang/test/Lower/OpenMP/allocatable-multiple-vars.f90
@@ -1,9 +1,9 @@
 ! Test early privatization for multiple allocatable variables.
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization=false \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization=false \
 ! RUN:   -o - %s 2>&1 | FileCheck %s
 
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization=false -o - %s 2>&1 |\
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization=false -o - %s 2>&1 |\
 ! RUN:   FileCheck %s
 
 subroutine delayed_privatization_allocatable
diff --git a/flang/test/Lower/OpenMP/cfg-conversion-omp.private.f90 b/flang/test/Lower/OpenMP/cfg-conversion-omp.private.f90
index 8b8adf2b140c7..f8d771d10d281 100644
--- a/flang/test/Lower/OpenMP/cfg-conversion-omp.private.f90
+++ b/flang/test/Lower/OpenMP/cfg-conversion-omp.private.f90
@@ -2,7 +2,7 @@
 
 ! RUN: split-file %s %t && cd %t
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - test.f90 2>&1 | \
 ! RUN: fir-opt --cfg-conversion -o test.cfg-conv.mlir
 ! RUN: FileCheck --input-file=test.cfg-conv.mlir %s --check-prefix="CFGConv"
diff --git a/flang/test/Lower/OpenMP/debug_info_conflict.f90 b/flang/test/Lower/OpenMP/debug_info_conflict.f90
index 5e52db281da23..b80900476053a 100644
--- a/flang/test/Lower/OpenMP/debug_info_conflict.f90
+++ b/flang/test/Lower/OpenMP/debug_info_conflict.f90
@@ -1,7 +1,7 @@
 ! Tests that there no debug-info conflicts arise because of DI attached to nested
 ! OMP regions arguments.
 
-! RUN: %flang -c -fopenmp -g -mmlir --openmp-enable-delayed-privatization=true \
+! RUN: %flang -c -fopenmp -g -mmlir --enable-delayed-privatization=true \
 ! RUN:   %s -o - 2>&1 | FileCheck %s
 
 subroutine bar (b)
diff --git a/flang/test/Lower/OpenMP/delayed-privatization-allocatable-array.f90 b/flang/test/Lower/OpenMP/delayed-privatization-allocatable-array.f90
index 9b6dbabf0c6ff..d1c7167546b43 100644
--- a/flang/test/Lower/OpenMP/delayed-privatization-allocatable-array.f90
+++ b/flang/test/Lower/OpenMP/delayed-privatization-allocatable-array.f90
@@ -1,8 +1,8 @@
 ! Test delayed privatization for allocatable arrays.
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %s 2>&1 | FileCheck %s
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - %s 2>&1 |\
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - %s 2>&1 |\
 ! RUN:   FileCheck %s
 
 subroutine delayed_privatization_private(var1, l1)
diff --git a/flang/test/Lower/OpenMP/delayed-privatization-allocatable-firstprivate.f90 b/flang/test/Lower/OpenMP/delayed-privatization-allocatable-firstprivate.f90
index 01ca1073ae849..612bb55c770f7 100644
--- a/flang/test/Lower/OpenMP/delayed-privatization-allocatable-firstprivate.f90
+++ b/flang/test/Lower/OpenMP/delayed-privatization-allocatable-firstprivate.f90
@@ -2,9 +2,9 @@
 
 ! RUN: split-file %s %t
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %t/test_ir.f90 2>&1 | FileCheck %s
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - %t/test_ir.f90 2>&1 |\
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - %t/test_ir.f90 2>&1 |\
 ! RUN:   FileCheck %s
 
 !--- test_ir.f90
@@ -38,7 +38,7 @@ subroutine delayed_privatization_allocatable
 ! CHECK-NEXT:    hlfir.assign %[[ORIG_BASE_LD]] to %[[PRIV_PRIV_ARG]] realloc
 ! CHECK-NEXT:  }
 
-! RUN: %flang -c -emit-llvm -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang -c -emit-llvm -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %t/test_compilation_to_obj.f90 | \
 ! RUN:   llvm-dis 2>&1 |\
 ! RUN:   FileCheck %s -check-prefix=LLVM
diff --git a/flang/test/Lower/OpenMP/delayed-privatization-allocatable-private.f90 b/flang/test/Lower/OpenMP/delayed-privatization-allocatable-private.f90
index 4ce66f52110e0..67cfb864bc8f3 100644
--- a/flang/test/Lower/OpenMP/delayed-privatization-allocatable-private.f90
+++ b/flang/test/Lower/OpenMP/delayed-privatization-allocatable-private.f90
@@ -1,8 +1,8 @@
 ! Test delayed privatization for allocatables: `private`.
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %s 2>&1 | FileCheck %s
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - %s 2>&1 |\
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - %s 2>&1 |\
 ! RUN:   FileCheck %s
 
 subroutine delayed_privatization_allocatable
diff --git a/flang/test/Lower/OpenMP/delayed-privatization-array.f90 b/flang/test/Lower/OpenMP/delayed-privatization-array.f90
index c447fa6f27a75..9aaf75f66dbbb 100644
--- a/flang/test/Lower/OpenMP/delayed-privatization-array.f90
+++ b/flang/test/Lower/OpenMP/delayed-privatization-array.f90
@@ -2,19 +2,19 @@
 
 ! RUN: split-file %s %t
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %t/one_dim_array.f90 2>&1 | FileCheck %s --check-prefix=ONE_DIM
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - \
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - \
 ! RUN:   %t/one_dim_array.f90 2>&1 | FileCheck %s --check-prefix=ONE_DIM
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %t/two_dim_array.f90 2>&1 | FileCheck %s --check-prefix=TWO_DIM
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - \
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - \
 ! RUN:   %t/two_dim_array.f90 2>&1 | FileCheck %s --check-prefix=TWO_DIM
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %t/one_dim_array_default_lb.f90 2>&1 | FileCheck %s --check-prefix=ONE_DIM_DEFAULT_LB
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - \
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - \
 ! RUN:   %t/one_dim_array_default_lb.f90 2>&1 | FileCheck %s --check-prefix=ONE_DIM_DEFAULT_LB
 
 !--- one_dim_array.f90
diff --git a/flang/test/Lower/OpenMP/delayed-privatization-character-array.f90 b/flang/test/Lower/OpenMP/delayed-privatization-character-array.f90
index 4c7287283c7ad..383b033d772aa 100644
--- a/flang/test/Lower/OpenMP/delayed-privatization-character-array.f90
+++ b/flang/test/Lower/OpenMP/delayed-privatization-character-array.f90
@@ -2,14 +2,14 @@
 
 ! RUN: split-file %s %t
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %t/static_len.f90 2>&1 | FileCheck %s --check-prefix=STATIC_LEN
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - %t/static_len.f90 2>&1 \
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - %t/static_len.f90 2>&1 \
 ! RUN:   | FileCheck %s --check-prefix=STATIC_LEN
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %t/dyn_len.f90 2>&1 | FileCheck %s --check-prefix=DYN_LEN
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - %t/dyn_len.f90 2>&1 \
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - %t/dyn_len.f90 2>&1 \
 ! RUN:   | FileCheck %s --check-prefix=DYN_LEN
 
 !--- static_len.f90
diff --git a/flang/test/Lower/OpenMP/delayed-privatization-character.f90 b/flang/test/Lower/OpenMP/delayed-privatization-character.f90
index 3d1a312963371..d0f7ef6f2cd0c 100644
--- a/flang/test/Lower/OpenMP/delayed-privatization-character.f90
+++ b/flang/test/Lower/OpenMP/delayed-privatization-character.f90
@@ -2,14 +2,14 @@
 
 ! RUN: split-file %s %t
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %t/dyn_len.f90 2>&1 | FileCheck %s --check-prefix=DYN_LEN
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - %t/dyn_len.f90 2>&1 \
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - %t/dyn_len.f90 2>&1 \
 ! RUN:   | FileCheck %s --check-prefix=DYN_LEN
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %t/static_len.f90 2>&1 | FileCheck %s --check-prefix=STATIC_LEN
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - %t/static_len.f90 2>&1 \
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - %t/static_len.f90 2>&1 \
 ! RUN:   | FileCheck %s --check-prefix=STATIC_LEN
 
 !--- dyn_len.f90
diff --git a/flang/test/Lower/OpenMP/delayed-privatization-default-init.f90 b/flang/test/Lower/OpenMP/delayed-privatization-default-init.f90
index 87d4605217a8a..cb17e4cd6afc1 100644
--- a/flang/test/Lower/OpenMP/delayed-privatization-default-init.f90
+++ b/flang/test/Lower/OpenMP/delayed-privatization-default-init.f90
@@ -1,8 +1,8 @@
 ! Test delayed privatization for derived types with default initialization.
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %s 2>&1 | FileCheck %s
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - %s 2>&1 |\
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - %s 2>&1 |\
 ! RUN:   FileCheck %s
 
 subroutine delayed_privatization_default_init
diff --git a/flang/test/Lower/OpenMP/delayed-privatization-firstprivate.f90 b/flang/test/Lower/OpenMP/delayed-privatization-firstprivate.f90
index 904ea783ad5b4..3f80b5e1bd209 100644
--- a/flang/test/Lower/OpenMP/delayed-privatization-firstprivate.f90
+++ b/flang/test/Lower/OpenMP/delayed-privatization-firstprivate.f90
@@ -1,8 +1,8 @@
 ! Test delayed privatization for the `firstprivate` clause.
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! R...
[truncated]

@llvmbot
Copy link
Member

llvmbot commented May 7, 2025

@llvm/pr-subscribers-flang-openmp

Author: Kareem Ergawy (ergawy)

Changes

Remove the openmp prefix from delayed privatization/localization flags since they are now used for do concurrent as well.


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

35 Files Affected:

  • (added) flang/include/flang/Support/Flags.h (+17)
  • (modified) flang/lib/Lower/Bridge.cpp (+1-1)
  • (modified) flang/lib/Lower/OpenMP/OpenMP.cpp (+1)
  • (modified) flang/lib/Lower/OpenMP/Utils.cpp (-12)
  • (modified) flang/lib/Lower/OpenMP/Utils.h (-2)
  • (modified) flang/lib/Support/CMakeLists.txt (+1)
  • (added) flang/lib/Support/Flags.cpp (+20)
  • (modified) flang/test/Lower/OpenMP/DelayedPrivatization/distribute-standalone-private.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/DelayedPrivatization/equivalence.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/DelayedPrivatization/target-private-allocatable.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/DelayedPrivatization/target-private-multiple-variables.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/DelayedPrivatization/target-private-simple.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/allocatable-multiple-vars.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/cfg-conversion-omp.private.f90 (+1-1)
  • (modified) flang/test/Lower/OpenMP/debug_info_conflict.f90 (+1-1)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-allocatable-array.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-allocatable-firstprivate.f90 (+3-3)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-allocatable-private.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-array.f90 (+6-6)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-character-array.f90 (+4-4)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-character.f90 (+4-4)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-default-init.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-firstprivate.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-lower-allocatable-to-llvm.f90 (+1-1)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-pointer.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-private-firstprivate.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-private.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-reduction-byref.f90 (+1-1)
  • (modified) flang/test/Lower/OpenMP/delayed-privatization-reduction.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/different_vars_lastprivate_barrier.f90 (+1-1)
  • (modified) flang/test/Lower/OpenMP/firstprivate-commonblock.f90 (+1-1)
  • (modified) flang/test/Lower/OpenMP/private-commonblock.f90 (+1-1)
  • (modified) flang/test/Lower/OpenMP/private-derived-type.f90 (+2-2)
  • (modified) flang/test/Lower/OpenMP/same_var_first_lastprivate.f90 (+1-1)
  • (modified) flang/test/Lower/do_concurrent_delayed_locality.f90 (+1-1)
diff --git a/flang/include/flang/Support/Flags.h b/flang/include/flang/Support/Flags.h
new file mode 100644
index 0000000000000..bcbb72f8e50d0
--- /dev/null
+++ b/flang/include/flang/Support/Flags.h
@@ -0,0 +1,17 @@
+//===-- include/flang/Support/Flags.h ---------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef FORTRAN_SUPPORT_FLAGS_H_
+#define FORTRAN_SUPPORT_FLAGS_H_
+
+#include "llvm/Support/CommandLine.h"
+
+extern llvm::cl::opt<bool> enableDelayedPrivatization;
+extern llvm::cl::opt<bool> enableDelayedPrivatizationStaging;
+
+#endif // FORTRAN_SUPPORT_FLAGS_H_
diff --git a/flang/lib/Lower/Bridge.cpp b/flang/lib/Lower/Bridge.cpp
index 8529bef5d9c5e..76973ad5615fd 100644
--- a/flang/lib/Lower/Bridge.cpp
+++ b/flang/lib/Lower/Bridge.cpp
@@ -13,7 +13,6 @@
 #include "flang/Lower/Bridge.h"
 
 #include "OpenMP/DataSharingProcessor.h"
-#include "OpenMP/Utils.h"
 #include "flang/Lower/Allocatable.h"
 #include "flang/Lower/CallInterface.h"
 #include "flang/Lower/Coarray.h"
@@ -63,6 +62,7 @@
 #include "flang/Semantics/runtime-type-info.h"
 #include "flang/Semantics/symbol.h"
 #include "flang/Semantics/tools.h"
+#include "flang/Support/Flags.h"
 #include "flang/Support/Version.h"
 #include "mlir/Dialect/ControlFlow/IR/ControlFlowOps.h"
 #include "mlir/IR/BuiltinAttributes.h"
diff --git a/flang/lib/Lower/OpenMP/OpenMP.cpp b/flang/lib/Lower/OpenMP/OpenMP.cpp
index 47e7c266ff7d3..2edf750d6bfcb 100644
--- a/flang/lib/Lower/OpenMP/OpenMP.cpp
+++ b/flang/lib/Lower/OpenMP/OpenMP.cpp
@@ -34,6 +34,7 @@
 #include "flang/Parser/parse-tree.h"
 #include "flang/Semantics/openmp-directive-sets.h"
 #include "flang/Semantics/tools.h"
+#include "flang/Support/Flags.h"
 #include "flang/Support/OpenMP-utils.h"
 #include "mlir/Dialect/ControlFlow/IR/ControlFlowOps.h"
 #include "mlir/Dialect/OpenMP/OpenMPDialect.h"
diff --git a/flang/lib/Lower/OpenMP/Utils.cpp b/flang/lib/Lower/OpenMP/Utils.cpp
index 3f4cfb8c11a9d..b7507c4754de4 100644
--- a/flang/lib/Lower/OpenMP/Utils.cpp
+++ b/flang/lib/Lower/OpenMP/Utils.cpp
@@ -33,18 +33,6 @@ llvm::cl::opt<bool> treatIndexAsSection(
     llvm::cl::desc("In the OpenMP data clauses treat `a(N)` as `a(N:N)`."),
     llvm::cl::init(true));
 
-llvm::cl::opt<bool> enableDelayedPrivatization(
-    "openmp-enable-delayed-privatization",
-    llvm::cl::desc(
-        "Emit `[first]private` variables as clauses on the MLIR ops."),
-    llvm::cl::init(true));
-
-llvm::cl::opt<bool> enableDelayedPrivatizationStaging(
-    "openmp-enable-delayed-privatization-staging",
-    llvm::cl::desc("For partially supported constructs, emit `[first]private` "
-                   "variables as clauses on the MLIR ops."),
-    llvm::cl::init(false));
-
 namespace Fortran {
 namespace lower {
 namespace omp {
diff --git a/flang/lib/Lower/OpenMP/Utils.h b/flang/lib/Lower/OpenMP/Utils.h
index 30b4613837b9a..a7eb2dc5ee664 100644
--- a/flang/lib/Lower/OpenMP/Utils.h
+++ b/flang/lib/Lower/OpenMP/Utils.h
@@ -17,8 +17,6 @@
 #include <cstdint>
 
 extern llvm::cl::opt<bool> treatIndexAsSection;
-extern llvm::cl::opt<bool> enableDelayedPrivatization;
-extern llvm::cl::opt<bool> enableDelayedPrivatizationStaging;
 
 namespace fir {
 class FirOpBuilder;
diff --git a/flang/lib/Support/CMakeLists.txt b/flang/lib/Support/CMakeLists.txt
index 4ee381589a208..363f57ce97dae 100644
--- a/flang/lib/Support/CMakeLists.txt
+++ b/flang/lib/Support/CMakeLists.txt
@@ -44,6 +44,7 @@ endif()
 
 add_flang_library(FortranSupport
   default-kinds.cpp
+  Flags.cpp
   Fortran.cpp
   Fortran-features.cpp
   idioms.cpp
diff --git a/flang/lib/Support/Flags.cpp b/flang/lib/Support/Flags.cpp
new file mode 100644
index 0000000000000..02f64981618dd
--- /dev/null
+++ b/flang/lib/Support/Flags.cpp
@@ -0,0 +1,20 @@
+//===-- lib/Support/Flags.cpp ---------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "flang/Support/Flags.h"
+
+llvm::cl::opt<bool> enableDelayedPrivatization("enable-delayed-privatization",
+    llvm::cl::desc(
+        "Emit private/local variables as clauses/specifiers on MLIR ops."),
+    llvm::cl::init(true));
+
+llvm::cl::opt<bool> enableDelayedPrivatizationStaging(
+    "enable-delayed-privatization-staging",
+    llvm::cl::desc("For partially supported constructs, emit private/local "
+                   "variables as clauses/specifiers on MLIR ops."),
+    llvm::cl::init(false));
diff --git a/flang/test/Lower/OpenMP/DelayedPrivatization/distribute-standalone-private.f90 b/flang/test/Lower/OpenMP/DelayedPrivatization/distribute-standalone-private.f90
index a9c85db79fa31..92aeb3fbc1ee7 100644
--- a/flang/test/Lower/OpenMP/DelayedPrivatization/distribute-standalone-private.f90
+++ b/flang/test/Lower/OpenMP/DelayedPrivatization/distribute-standalone-private.f90
@@ -1,6 +1,6 @@
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization-staging \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization-staging \
 ! RUN:   -o - %s 2>&1 | FileCheck %s
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization-staging -o - %s 2>&1 \
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization-staging -o - %s 2>&1 \
 ! RUN:   | FileCheck %s
 
 subroutine standalone_distribute
diff --git a/flang/test/Lower/OpenMP/DelayedPrivatization/equivalence.f90 b/flang/test/Lower/OpenMP/DelayedPrivatization/equivalence.f90
index 721bfff012f14..5234862feaa76 100644
--- a/flang/test/Lower/OpenMP/DelayedPrivatization/equivalence.f90
+++ b/flang/test/Lower/OpenMP/DelayedPrivatization/equivalence.f90
@@ -1,8 +1,8 @@
 ! Test delayed privatization for variables that are storage associated via `EQUIVALENCE`.
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %s 2>&1 | FileCheck %s
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - %s 2>&1 \
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - %s 2>&1 \
 ! RUN:   | FileCheck %s
 
 subroutine private_common
diff --git a/flang/test/Lower/OpenMP/DelayedPrivatization/target-private-allocatable.f90 b/flang/test/Lower/OpenMP/DelayedPrivatization/target-private-allocatable.f90
index 87c2c2ae26796..3d93fbc6e446e 100644
--- a/flang/test/Lower/OpenMP/DelayedPrivatization/target-private-allocatable.f90
+++ b/flang/test/Lower/OpenMP/DelayedPrivatization/target-private-allocatable.f90
@@ -1,8 +1,8 @@
 ! Tests delayed privatization for `targets ... private(..)` for allocatables.
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization-staging \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization-staging \
 ! RUN:   -o - %s 2>&1 | FileCheck %s
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization-staging -o - %s 2>&1 \
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization-staging -o - %s 2>&1 \
 ! RUN:   | FileCheck %s
 
 subroutine target_allocatable
diff --git a/flang/test/Lower/OpenMP/DelayedPrivatization/target-private-multiple-variables.f90 b/flang/test/Lower/OpenMP/DelayedPrivatization/target-private-multiple-variables.f90
index ad7bfb3d7c247..12e15a2aafc2d 100644
--- a/flang/test/Lower/OpenMP/DelayedPrivatization/target-private-multiple-variables.f90
+++ b/flang/test/Lower/OpenMP/DelayedPrivatization/target-private-multiple-variables.f90
@@ -1,8 +1,8 @@
 ! Tests delayed privatization for `targets ... private(..)` for allocatables.
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization-staging \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization-staging \
 ! RUN:   -o - %s 2>&1 | FileCheck %s
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization-staging -o - %s 2>&1 \
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization-staging -o - %s 2>&1 \
 ! RUN:   | FileCheck %s
 
 subroutine target_allocatable(lb, ub, l)
diff --git a/flang/test/Lower/OpenMP/DelayedPrivatization/target-private-simple.f90 b/flang/test/Lower/OpenMP/DelayedPrivatization/target-private-simple.f90
index 5abf2cbb15c92..f543068d29753 100644
--- a/flang/test/Lower/OpenMP/DelayedPrivatization/target-private-simple.f90
+++ b/flang/test/Lower/OpenMP/DelayedPrivatization/target-private-simple.f90
@@ -1,8 +1,8 @@
 ! Tests delayed privatization for `targets ... private(..)` for simple variables.
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization-staging \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization-staging \
 ! RUN:   -o - %s 2>&1 | FileCheck %s
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization-staging -o - %s 2>&1 \
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization-staging -o - %s 2>&1 \
 ! RUN:   | FileCheck %s
 
 subroutine target_simple
diff --git a/flang/test/Lower/OpenMP/allocatable-multiple-vars.f90 b/flang/test/Lower/OpenMP/allocatable-multiple-vars.f90
index e6450a13e13a0..91ba75f2198e3 100644
--- a/flang/test/Lower/OpenMP/allocatable-multiple-vars.f90
+++ b/flang/test/Lower/OpenMP/allocatable-multiple-vars.f90
@@ -1,9 +1,9 @@
 ! Test early privatization for multiple allocatable variables.
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization=false \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization=false \
 ! RUN:   -o - %s 2>&1 | FileCheck %s
 
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization=false -o - %s 2>&1 |\
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization=false -o - %s 2>&1 |\
 ! RUN:   FileCheck %s
 
 subroutine delayed_privatization_allocatable
diff --git a/flang/test/Lower/OpenMP/cfg-conversion-omp.private.f90 b/flang/test/Lower/OpenMP/cfg-conversion-omp.private.f90
index 8b8adf2b140c7..f8d771d10d281 100644
--- a/flang/test/Lower/OpenMP/cfg-conversion-omp.private.f90
+++ b/flang/test/Lower/OpenMP/cfg-conversion-omp.private.f90
@@ -2,7 +2,7 @@
 
 ! RUN: split-file %s %t && cd %t
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - test.f90 2>&1 | \
 ! RUN: fir-opt --cfg-conversion -o test.cfg-conv.mlir
 ! RUN: FileCheck --input-file=test.cfg-conv.mlir %s --check-prefix="CFGConv"
diff --git a/flang/test/Lower/OpenMP/debug_info_conflict.f90 b/flang/test/Lower/OpenMP/debug_info_conflict.f90
index 5e52db281da23..b80900476053a 100644
--- a/flang/test/Lower/OpenMP/debug_info_conflict.f90
+++ b/flang/test/Lower/OpenMP/debug_info_conflict.f90
@@ -1,7 +1,7 @@
 ! Tests that there no debug-info conflicts arise because of DI attached to nested
 ! OMP regions arguments.
 
-! RUN: %flang -c -fopenmp -g -mmlir --openmp-enable-delayed-privatization=true \
+! RUN: %flang -c -fopenmp -g -mmlir --enable-delayed-privatization=true \
 ! RUN:   %s -o - 2>&1 | FileCheck %s
 
 subroutine bar (b)
diff --git a/flang/test/Lower/OpenMP/delayed-privatization-allocatable-array.f90 b/flang/test/Lower/OpenMP/delayed-privatization-allocatable-array.f90
index 9b6dbabf0c6ff..d1c7167546b43 100644
--- a/flang/test/Lower/OpenMP/delayed-privatization-allocatable-array.f90
+++ b/flang/test/Lower/OpenMP/delayed-privatization-allocatable-array.f90
@@ -1,8 +1,8 @@
 ! Test delayed privatization for allocatable arrays.
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %s 2>&1 | FileCheck %s
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - %s 2>&1 |\
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - %s 2>&1 |\
 ! RUN:   FileCheck %s
 
 subroutine delayed_privatization_private(var1, l1)
diff --git a/flang/test/Lower/OpenMP/delayed-privatization-allocatable-firstprivate.f90 b/flang/test/Lower/OpenMP/delayed-privatization-allocatable-firstprivate.f90
index 01ca1073ae849..612bb55c770f7 100644
--- a/flang/test/Lower/OpenMP/delayed-privatization-allocatable-firstprivate.f90
+++ b/flang/test/Lower/OpenMP/delayed-privatization-allocatable-firstprivate.f90
@@ -2,9 +2,9 @@
 
 ! RUN: split-file %s %t
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %t/test_ir.f90 2>&1 | FileCheck %s
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - %t/test_ir.f90 2>&1 |\
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - %t/test_ir.f90 2>&1 |\
 ! RUN:   FileCheck %s
 
 !--- test_ir.f90
@@ -38,7 +38,7 @@ subroutine delayed_privatization_allocatable
 ! CHECK-NEXT:    hlfir.assign %[[ORIG_BASE_LD]] to %[[PRIV_PRIV_ARG]] realloc
 ! CHECK-NEXT:  }
 
-! RUN: %flang -c -emit-llvm -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang -c -emit-llvm -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %t/test_compilation_to_obj.f90 | \
 ! RUN:   llvm-dis 2>&1 |\
 ! RUN:   FileCheck %s -check-prefix=LLVM
diff --git a/flang/test/Lower/OpenMP/delayed-privatization-allocatable-private.f90 b/flang/test/Lower/OpenMP/delayed-privatization-allocatable-private.f90
index 4ce66f52110e0..67cfb864bc8f3 100644
--- a/flang/test/Lower/OpenMP/delayed-privatization-allocatable-private.f90
+++ b/flang/test/Lower/OpenMP/delayed-privatization-allocatable-private.f90
@@ -1,8 +1,8 @@
 ! Test delayed privatization for allocatables: `private`.
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %s 2>&1 | FileCheck %s
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - %s 2>&1 |\
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - %s 2>&1 |\
 ! RUN:   FileCheck %s
 
 subroutine delayed_privatization_allocatable
diff --git a/flang/test/Lower/OpenMP/delayed-privatization-array.f90 b/flang/test/Lower/OpenMP/delayed-privatization-array.f90
index c447fa6f27a75..9aaf75f66dbbb 100644
--- a/flang/test/Lower/OpenMP/delayed-privatization-array.f90
+++ b/flang/test/Lower/OpenMP/delayed-privatization-array.f90
@@ -2,19 +2,19 @@
 
 ! RUN: split-file %s %t
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %t/one_dim_array.f90 2>&1 | FileCheck %s --check-prefix=ONE_DIM
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - \
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - \
 ! RUN:   %t/one_dim_array.f90 2>&1 | FileCheck %s --check-prefix=ONE_DIM
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %t/two_dim_array.f90 2>&1 | FileCheck %s --check-prefix=TWO_DIM
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - \
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - \
 ! RUN:   %t/two_dim_array.f90 2>&1 | FileCheck %s --check-prefix=TWO_DIM
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %t/one_dim_array_default_lb.f90 2>&1 | FileCheck %s --check-prefix=ONE_DIM_DEFAULT_LB
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - \
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - \
 ! RUN:   %t/one_dim_array_default_lb.f90 2>&1 | FileCheck %s --check-prefix=ONE_DIM_DEFAULT_LB
 
 !--- one_dim_array.f90
diff --git a/flang/test/Lower/OpenMP/delayed-privatization-character-array.f90 b/flang/test/Lower/OpenMP/delayed-privatization-character-array.f90
index 4c7287283c7ad..383b033d772aa 100644
--- a/flang/test/Lower/OpenMP/delayed-privatization-character-array.f90
+++ b/flang/test/Lower/OpenMP/delayed-privatization-character-array.f90
@@ -2,14 +2,14 @@
 
 ! RUN: split-file %s %t
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %t/static_len.f90 2>&1 | FileCheck %s --check-prefix=STATIC_LEN
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - %t/static_len.f90 2>&1 \
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - %t/static_len.f90 2>&1 \
 ! RUN:   | FileCheck %s --check-prefix=STATIC_LEN
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %t/dyn_len.f90 2>&1 | FileCheck %s --check-prefix=DYN_LEN
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - %t/dyn_len.f90 2>&1 \
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - %t/dyn_len.f90 2>&1 \
 ! RUN:   | FileCheck %s --check-prefix=DYN_LEN
 
 !--- static_len.f90
diff --git a/flang/test/Lower/OpenMP/delayed-privatization-character.f90 b/flang/test/Lower/OpenMP/delayed-privatization-character.f90
index 3d1a312963371..d0f7ef6f2cd0c 100644
--- a/flang/test/Lower/OpenMP/delayed-privatization-character.f90
+++ b/flang/test/Lower/OpenMP/delayed-privatization-character.f90
@@ -2,14 +2,14 @@
 
 ! RUN: split-file %s %t
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %t/dyn_len.f90 2>&1 | FileCheck %s --check-prefix=DYN_LEN
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - %t/dyn_len.f90 2>&1 \
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - %t/dyn_len.f90 2>&1 \
 ! RUN:   | FileCheck %s --check-prefix=DYN_LEN
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %t/static_len.f90 2>&1 | FileCheck %s --check-prefix=STATIC_LEN
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - %t/static_len.f90 2>&1 \
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - %t/static_len.f90 2>&1 \
 ! RUN:   | FileCheck %s --check-prefix=STATIC_LEN
 
 !--- dyn_len.f90
diff --git a/flang/test/Lower/OpenMP/delayed-privatization-default-init.f90 b/flang/test/Lower/OpenMP/delayed-privatization-default-init.f90
index 87d4605217a8a..cb17e4cd6afc1 100644
--- a/flang/test/Lower/OpenMP/delayed-privatization-default-init.f90
+++ b/flang/test/Lower/OpenMP/delayed-privatization-default-init.f90
@@ -1,8 +1,8 @@
 ! Test delayed privatization for derived types with default initialization.
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \
 ! RUN:   -o - %s 2>&1 | FileCheck %s
-! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - %s 2>&1 |\
+! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - %s 2>&1 |\
 ! RUN:   FileCheck %s
 
 subroutine delayed_privatization_default_init
diff --git a/flang/test/Lower/OpenMP/delayed-privatization-firstprivate.f90 b/flang/test/Lower/OpenMP/delayed-privatization-firstprivate.f90
index 904ea783ad5b4..3f80b5e1bd209 100644
--- a/flang/test/Lower/OpenMP/delayed-privatization-firstprivate.f90
+++ b/flang/test/Lower/OpenMP/delayed-privatization-firstprivate.f90
@@ -1,8 +1,8 @@
 ! Test delayed privatization for the `firstprivate` clause.
 
-! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
+! R...
[truncated]

Copy link
Contributor

@tblah tblah left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

ergawy added a commit that referenced this pull request May 7, 2025
Adds a new `fir.local` op to model `local` and `local_init` locality
specifiers. This op is a clone of `omp.private`. In particular, this new
op also models the privatization/localization logic of an SSA value in
the `fir` dialect just like `omp.private` does for OpenMP.

PR stack:
- #137928
- #138505 (this PR)
- #138506
- #138512
- #138534
- #138816
llvm-sync bot pushed a commit to arm/arm-toolchain that referenced this pull request May 7, 2025
…138505)

Adds a new `fir.local` op to model `local` and `local_init` locality
specifiers. This op is a clone of `omp.private`. In particular, this new
op also models the privatization/localization logic of an SSA value in
the `fir` dialect just like `omp.private` does for OpenMP.

PR stack:
- llvm/llvm-project#137928
- llvm/llvm-project#138505 (this PR)
- llvm/llvm-project#138506
- llvm/llvm-project#138512
- llvm/llvm-project#138534
- llvm/llvm-project#138816
@ergawy ergawy force-pushed the users/ergawy/fir-dc-local-spec-3 branch from 82e94aa to 704322c Compare May 9, 2025 10:37
ergawy added a commit that referenced this pull request May 9, 2025
…r.do_loop ... unordered` (#138512)

Extends lowering `fir.do_concurrent` to `fir.do_loop ... unordered` by
adding support for locality specifiers.

In particular, for `local` specifiers, a `fir.alloca` op is created
using the localizer type. For `local_init` specifiers, the `copy` region
is additionally inlined in the `do concurrent` loop's body.

PR stack:
- #137928
- #138505
- #138506
- #138512 (this PR)
- #138534
- #138816
llvm-sync bot pushed a commit to arm/arm-toolchain that referenced this pull request May 9, 2025
…pecs to `fir.do_loop ... unordered` (#138512)

Extends lowering `fir.do_concurrent` to `fir.do_loop ... unordered` by
adding support for locality specifiers.

In particular, for `local` specifiers, a `fir.alloca` op is created
using the localizer type. For `local_init` specifiers, the `copy` region
is additionally inlined in the `do concurrent` loop's body.

PR stack:
- llvm/llvm-project#137928
- llvm/llvm-project#138505
- llvm/llvm-project#138506
- llvm/llvm-project#138512 (this PR)
- llvm/llvm-project#138534
- llvm/llvm-project#138816
@ergawy ergawy force-pushed the users/ergawy/fir-dc-local-spec-3 branch from 704322c to 81c4e94 Compare May 28, 2025 09:16
@ergawy ergawy force-pushed the users/ergawy/fir-dc-local-spec-4 branch from 3097a39 to e0eb161 Compare May 28, 2025 09:24
ergawy added a commit that referenced this pull request May 29, 2025
…ecifiers (#138534)

Extends support for `fir.do_concurrent` locality specifiers to the PFT
to MLIR level. This adds code-gen for generating the newly added
`fir.local` ops and referencing these ops from `fir.do_concurrent.loop`
ops that have locality specifiers attached to them. This reuses the
`DataSharingProcessor` component and generalizes it a bit more to allow
for handling `omp.private` ops and `fir.local` ops as well.


PR stack:
- #137928
- #138505
- #138506
- #138512
- #138534 (this PR)
- #138816
Base automatically changed from users/ergawy/fir-dc-local-spec-3 to main May 29, 2025 09:04
Remove the `openmp` prefix from delayed privatization/localization flags
since they are now used for `do concurrent` as well.
@ergawy ergawy force-pushed the users/ergawy/fir-dc-local-spec-4 branch from e0eb161 to 68494ba Compare May 29, 2025 09:07
llvm-sync bot pushed a commit to arm/arm-toolchain that referenced this pull request May 29, 2025
…locality specifiers (#138534)

Extends support for `fir.do_concurrent` locality specifiers to the PFT
to MLIR level. This adds code-gen for generating the newly added
`fir.local` ops and referencing these ops from `fir.do_concurrent.loop`
ops that have locality specifiers attached to them. This reuses the
`DataSharingProcessor` component and generalizes it a bit more to allow
for handling `omp.private` ops and `fir.local` ops as well.

PR stack:
- llvm/llvm-project#137928
- llvm/llvm-project#138505
- llvm/llvm-project#138506
- llvm/llvm-project#138512
- llvm/llvm-project#138534 (this PR)
- llvm/llvm-project#138816
@ergawy ergawy merged commit 7e9887a into main May 29, 2025
11 checks passed
@ergawy ergawy deleted the users/ergawy/fir-dc-local-spec-4 branch May 29, 2025 10:27
llvm-sync bot pushed a commit to arm/arm-toolchain that referenced this pull request May 29, 2025
… (#138816)

Remove the `openmp` prefix from delayed privatization/localization flags
since they are now used for `do concurrent` as well.

PR stack:
- llvm/llvm-project#137928
- llvm/llvm-project#138505
- llvm/llvm-project#138506
- llvm/llvm-project#138512
- llvm/llvm-project#138534
- llvm/llvm-project#138816 (this PR)
svkeerthy pushed a commit that referenced this pull request May 29, 2025
…ecifiers (#138534)

Extends support for `fir.do_concurrent` locality specifiers to the PFT
to MLIR level. This adds code-gen for generating the newly added
`fir.local` ops and referencing these ops from `fir.do_concurrent.loop`
ops that have locality specifiers attached to them. This reuses the
`DataSharingProcessor` component and generalizes it a bit more to allow
for handling `omp.private` ops and `fir.local` ops as well.


PR stack:
- #137928
- #138505
- #138506
- #138512
- #138534 (this PR)
- #138816
svkeerthy pushed a commit that referenced this pull request May 29, 2025
Remove the `openmp` prefix from delayed privatization/localization flags
since they are now used for `do concurrent` as well.

PR stack:
- #137928
- #138505
- #138506
- #138512
- #138534
- #138816 (this PR)
google-yfyang pushed a commit to google-yfyang/llvm-project that referenced this pull request May 29, 2025
…ecifiers (llvm#138534)

Extends support for `fir.do_concurrent` locality specifiers to the PFT
to MLIR level. This adds code-gen for generating the newly added
`fir.local` ops and referencing these ops from `fir.do_concurrent.loop`
ops that have locality specifiers attached to them. This reuses the
`DataSharingProcessor` component and generalizes it a bit more to allow
for handling `omp.private` ops and `fir.local` ops as well.


PR stack:
- llvm#137928
- llvm#138505
- llvm#138506
- llvm#138512
- llvm#138534 (this PR)
- llvm#138816
google-yfyang pushed a commit to google-yfyang/llvm-project that referenced this pull request May 29, 2025
Remove the `openmp` prefix from delayed privatization/localization flags
since they are now used for `do concurrent` as well.

PR stack:
- llvm#137928
- llvm#138505
- llvm#138506
- llvm#138512
- llvm#138534
- llvm#138816 (this PR)
sivan-shani pushed a commit to sivan-shani/llvm-project that referenced this pull request Jun 3, 2025
…ecifiers (llvm#138534)

Extends support for `fir.do_concurrent` locality specifiers to the PFT
to MLIR level. This adds code-gen for generating the newly added
`fir.local` ops and referencing these ops from `fir.do_concurrent.loop`
ops that have locality specifiers attached to them. This reuses the
`DataSharingProcessor` component and generalizes it a bit more to allow
for handling `omp.private` ops and `fir.local` ops as well.


PR stack:
- llvm#137928
- llvm#138505
- llvm#138506
- llvm#138512
- llvm#138534 (this PR)
- llvm#138816
sivan-shani pushed a commit to sivan-shani/llvm-project that referenced this pull request Jun 3, 2025
Remove the `openmp` prefix from delayed privatization/localization flags
since they are now used for `do concurrent` as well.

PR stack:
- llvm#137928
- llvm#138505
- llvm#138506
- llvm#138512
- llvm#138534
- llvm#138816 (this PR)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
flang:fir-hlfir flang:openmp flang Flang issues not falling into any other category
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants