[flang-commits] [clang] [flang] [flang][Driver] support -fno-openmp (PR #107087)
Tom Eccles via flang-commits
flang-commits at lists.llvm.org
Tue Sep 3 04:28:44 PDT 2024
https://github.com/tblah updated https://github.com/llvm/llvm-project/pull/107087
>From 10a0bc5c82ef820593528c034c26cd1f5c90d6e5 Mon Sep 17 00:00:00 2001
From: Tom Eccles <tom.eccles at arm.com>
Date: Tue, 3 Sep 2024 11:11:47 +0000
Subject: [PATCH 1/2] [flang][Driver] support -fno-openmp
Closes #83148
---
clang/include/clang/Driver/Options.td | 1 +
flang/lib/Frontend/CompilerInvocation.cpp | 4 +++-
flang/test/Driver/fno-openmp.f90 | 12 ++++++++++++
flang/test/Driver/fopenmp.f90 | 3 +++
4 files changed, 19 insertions(+), 1 deletion(-)
create mode 100644 flang/test/Driver/fno-openmp.f90
diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td
index 83cf753e824845..8fe9f4f28f8fc1 100644
--- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -3545,6 +3545,7 @@ def fopenmp : Flag<["-"], "fopenmp">, Group<f_Group>,
Visibility<[ClangOption, CC1Option, FlangOption, FC1Option]>,
HelpText<"Parse OpenMP pragmas and generate parallel code.">;
def fno_openmp : Flag<["-"], "fno-openmp">, Group<f_Group>,
+ Visibility<[ClangOption, CC1Option, FlangOption, FC1Option]>,
Flags<[NoArgumentUnused]>;
class OpenMPVersionHelp<string program, string default> {
string str = !strconcat(
diff --git a/flang/lib/Frontend/CompilerInvocation.cpp b/flang/lib/Frontend/CompilerInvocation.cpp
index 1d73397d330178..9e42fcc2e39d5e 100644
--- a/flang/lib/Frontend/CompilerInvocation.cpp
+++ b/flang/lib/Frontend/CompilerInvocation.cpp
@@ -968,7 +968,9 @@ static bool parseDialectArgs(CompilerInvocation &res, llvm::opt::ArgList &args,
/// generated.
static bool parseOpenMPArgs(CompilerInvocation &res, llvm::opt::ArgList &args,
clang::DiagnosticsEngine &diags) {
- if (!args.hasArg(clang::driver::options::OPT_fopenmp))
+ llvm::opt::Arg *arg = args.getLastArg(clang::driver::options::OPT_fopenmp,
+ clang::driver::options::OPT_fno_openmp);
+ if (!arg || arg->getOption().matches(clang::driver::options::OPT_fno_openmp))
return true;
unsigned numErrorsBefore = diags.getNumErrors();
diff --git a/flang/test/Driver/fno-openmp.f90 b/flang/test/Driver/fno-openmp.f90
new file mode 100644
index 00000000000000..98c8793c8c9bce
--- /dev/null
+++ b/flang/test/Driver/fno-openmp.f90
@@ -0,0 +1,12 @@
+! RUN: %flang_fc1 -fopenmp -fno-openmp %s -emit-hlfir -o - | FileCheck --check-prefix=CHECK-NO-OMP %s
+! RUN: %flang_fc1 -fno-openmp %s -emit-hlfir -o - | FileCheck --check-prefix=CHECK-NO-OMP %s
+! RUN: %flang_fc1 -fno-openmp -fopenmp %s -emit-hlfir -o - | FileCheck --check-prefix=CHECK-OMP %s
+! RUN: %flang_fc1 -fopenmp %s -emit-hlfir -o - | FileCheck --check-prefix=CHECK-OMP %s
+
+subroutine main
+ ! CHECK-NO-OMP-NOT: omp.parallel
+ ! CHECK-OMP: omp.parallel
+ !$omp parallel
+ print *,"test"
+ !$omp end parallel
+end subroutine
diff --git a/flang/test/Driver/fopenmp.f90 b/flang/test/Driver/fopenmp.f90
index d70fe100c3d21b..b1c59e00302b61 100644
--- a/flang/test/Driver/fopenmp.f90
+++ b/flang/test/Driver/fopenmp.f90
@@ -11,6 +11,9 @@
! RUN: %flang -target x86_64-windows-gnu -fopenmp=libgomp -c %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-FC1-NO-OPENMP --check-prefix=CHECK-WARNING
! RUN: %flang -target x86_64-windows-gnu -fopenmp=libiomp5 -c %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-FC1-OPENMP
+!RUN: %flang -fno-openmp -fopenmp -c %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-FC1-OPENMP
+!RUN: %flang -fopenmp -fno-openmp -c %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-FC1-NO-OPENMP
+
! CHECK-FC1-OPENMP: "-fc1"
! CHECK-FC1-OPENMP: "-fopenmp"
!
>From b1f186c6367f41239fc5fa05a8937e54af6239e3 Mon Sep 17 00:00:00 2001
From: Tom Eccles <tom.eccles at arm.com>
Date: Tue, 3 Sep 2024 11:25:58 +0000
Subject: [PATCH 2/2] Test linker invocation
---
flang/test/Driver/fopenmp.f90 | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/flang/test/Driver/fopenmp.f90 b/flang/test/Driver/fopenmp.f90
index b1c59e00302b61..31b0b23045162c 100644
--- a/flang/test/Driver/fopenmp.f90
+++ b/flang/test/Driver/fopenmp.f90
@@ -62,8 +62,14 @@
! RUN: %flang -target x86_64-freebsd -fopenmp %s -o %t -### 2>&1 | FileCheck %s --check-prefix=CHECK-LD-ANY
! RUN: %flang -target x86_64-windows-gnu -fopenmp %s -o %t -### 2>&1 | FileCheck %s --check-prefix=CHECK-LD-ANYMD
!
+! RUN: %flang -fno-openmp -fopenmp %s -o %t -### 2>&1 | FileCheck %s --check-prefix=CHECK-LD-ANY
+! RUN: %flang -fopenmp -fno-openmp %s -o %t -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-LD-ANY
+!
! CHECK-LD-ANY: "{{.*}}ld{{(.exe)?}}"
! CHECK-LD-ANY: "-l{{(omp|gomp|iomp5)}}"
!
+! CHECK-NO-LD-ANY: "{{.*}}ld{{(.exe)?}}"
+! CHECK-NO-LD-ANY-NOT: "-l{{(omp|gomp|iomp5)}}"
+!
! CHECK-LD-ANYMD: "{{.*}}ld{{(.exe)?}}"
! CHECK-LD-ANYMD: "-l{{(omp|gomp|iomp5md)}}"
More information about the flang-commits
mailing list