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.ecc...@arm.com> Date: Tue, 3 Sep 2024 11:11:47 +0000 Subject: [PATCH 1/3] [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.ecc...@arm.com> Date: Tue, 3 Sep 2024 11:25:58 +0000 Subject: [PATCH 2/3] 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)}}" >From 424d7972eed820422c1e83b50e1a6082811cb50b Mon Sep 17 00:00:00 2001 From: Tom Eccles <tom.ecc...@arm.com> Date: Tue, 3 Sep 2024 12:55:04 +0000 Subject: [PATCH 3/3] Fix linker test on windows --- flang/test/Driver/fopenmp.f90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flang/test/Driver/fopenmp.f90 b/flang/test/Driver/fopenmp.f90 index 31b0b23045162c..9b4dc5ffb1f690 100644 --- a/flang/test/Driver/fopenmp.f90 +++ b/flang/test/Driver/fopenmp.f90 @@ -62,8 +62,8 @@ ! 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 +! RUN: %flang -target x86_64-linux-gnu -fno-openmp -fopenmp %s -o %t -### 2>&1 | FileCheck %s --check-prefix=CHECK-LD-ANY +! RUN: %flang -target x86_64-linux-gnu -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)}}" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits