Skip to content

Commit 18c4852

Browse files
committed
[OPENMP] Fixed processing of '-fopenmp-version=' option and test.
llvm-svn: 270962
1 parent 873a2ab commit 18c4852

File tree

4 files changed

+30
-29
lines changed

4 files changed

+30
-29
lines changed

clang/lib/Driver/Tools.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4864,7 +4864,6 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
48644864
// Forward flags for OpenMP
48654865
if (Args.hasFlag(options::OPT_fopenmp, options::OPT_fopenmp_EQ,
48664866
options::OPT_fno_openmp, false)) {
4867-
Args.AddAllArgs(CmdArgs, options::OPT_fopenmp_version_EQ);
48684867
switch (getOpenMPRuntime(getToolChain(), Args)) {
48694868
case OMPRT_OMP:
48704869
case OMPRT_IOMP5:
@@ -4877,6 +4876,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
48774876
if (!Args.hasFlag(options::OPT_fopenmp_use_tls,
48784877
options::OPT_fnoopenmp_use_tls, /*Default=*/true))
48794878
CmdArgs.push_back("-fnoopenmp-use-tls");
4879+
Args.AddAllArgs(CmdArgs, options::OPT_fopenmp_version_EQ);
48804880
break;
48814881
default:
48824882
// By default, if Clang doesn't know how to generate useful OpenMP code

clang/lib/Frontend/CompilerInvocation.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1954,15 +1954,16 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK,
19541954
}
19551955

19561956
// Check if -fopenmp is specified.
1957-
Opts.OpenMP = Args.hasArg(options::OPT_fopenmp);
1957+
Opts.OpenMP = Args.hasArg(options::OPT_fopenmp) ? 1 : 0;
19581958
Opts.OpenMPUseTLS =
19591959
Opts.OpenMP && !Args.hasArg(options::OPT_fnoopenmp_use_tls);
19601960
Opts.OpenMPIsDevice =
19611961
Opts.OpenMP && Args.hasArg(options::OPT_fopenmp_is_device);
19621962

19631963
if (Opts.OpenMP) {
1964-
if (int Version = getLastArgIntValue(Args, OPT_fopenmp_version_EQ,
1965-
Opts.OpenMP, Diags))
1964+
int Version =
1965+
getLastArgIntValue(Args, OPT_fopenmp_version_EQ, Opts.OpenMP, Diags);
1966+
if (Version != 0)
19661967
Opts.OpenMP = Version;
19671968
// Provide diagnostic when a given target is not expected to be an OpenMP
19681969
// device or host.

clang/lib/Frontend/InitPreprocessor.cpp

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -922,24 +922,24 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
922922
}
923923

924924
// OpenMP definition
925-
if (LangOpts.OpenMP) {
926-
// OpenMP 2.2:
927-
// In implementations that support a preprocessor, the _OPENMP
928-
// macro name is defined to have the decimal value yyyymm where
929-
// yyyy and mm are the year and the month designations of the
930-
// version of the OpenMP API that the implementation support.
931-
switch (LangOpts.OpenMP) {
932-
case 40:
933-
Builder.defineMacro("_OPENMP", "201307");
934-
break;
935-
case 45:
936-
Builder.defineMacro("_OPENMP", "201511");
937-
break;
938-
default:
939-
// Default version is OpenMP 3.1
940-
Builder.defineMacro("_OPENMP", "201107");
941-
break;
942-
}
925+
// OpenMP 2.2:
926+
// In implementations that support a preprocessor, the _OPENMP
927+
// macro name is defined to have the decimal value yyyymm where
928+
// yyyy and mm are the year and the month designations of the
929+
// version of the OpenMP API that the implementation support.
930+
switch (LangOpts.OpenMP) {
931+
case 0:
932+
break;
933+
case 40:
934+
Builder.defineMacro("_OPENMP", "201307");
935+
break;
936+
case 45:
937+
Builder.defineMacro("_OPENMP", "201511");
938+
break;
939+
default:
940+
// Default version is OpenMP 3.1
941+
Builder.defineMacro("_OPENMP", "201107");
942+
break;
943943
}
944944

945945
// CUDA device path compilaton

clang/test/OpenMP/driver.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,17 @@
88
// CHECK-NO-TLS: -cc1
99
// CHECK-NO-TLS-SAME: -fnoopenmp-use-tls
1010
//
11-
// RUN: %clang %s -c -E -dM -fopenmp | FileCheck --check-prefix=CHECK-DEFAULT-VERSION %s
12-
// RUN: %clang %s -c -E -dM -fopenmp -fopenmp-version=1 | FileCheck --check-prefix=CHECK-DEFAULT-VERSION %s
13-
// RUN: %clang %s -c -E -dM -fopenmp -fopenmp-version=0 | FileCheck --check-prefix=CHECK-DEFAULT-VERSION %s
14-
// RUN: %clang %s -c -E -dM -fopenmp -fopenmp-version=100 | FileCheck --check-prefix=CHECK-DEFAULT-VERSION %s
15-
// RUN: %clang %s -c -E -dM -fopenmp -fopenmp-version=31 | FileCheck --check-prefix=CHECK-DEFAULT-VERSION %s
11+
// RUN: %clang %s -c -E -dM -fopenmp=libomp | FileCheck --check-prefix=CHECK-DEFAULT-VERSION %s
12+
// RUN: %clang %s -c -E -dM -fopenmp=libomp -fopenmp-version=1 | FileCheck --check-prefix=CHECK-DEFAULT-VERSION %s
13+
// RUN: %clang %s -c -E -dM -fopenmp=libomp -fopenmp-version=0 | FileCheck --check-prefix=CHECK-DEFAULT-VERSION %s
14+
// RUN: %clang %s -c -E -dM -fopenmp=libomp -fopenmp-version=100 | FileCheck --check-prefix=CHECK-DEFAULT-VERSION %s
15+
// RUN: %clang %s -c -E -dM -fopenmp=libomp -fopenmp-version=31 | FileCheck --check-prefix=CHECK-DEFAULT-VERSION %s
1616
// CHECK-DEFAULT-VERSION: #define _OPENMP 201107
1717

18-
// RUN: %clang %s -c -E -dM -fopenmp -fopenmp-version=40 | FileCheck --check-prefix=CHECK-40-VERSION %s
18+
// RUN: %clang %s -c -E -dM -fopenmp=libomp -fopenmp-version=40 | FileCheck --check-prefix=CHECK-40-VERSION %s
1919
// CHECK-40-VERSION: #define _OPENMP 201307
2020

21-
// RUN: %clang %s -c -E -dM -fopenmp -fopenmp-version=45 | FileCheck --check-prefix=CHECK-45-VERSION %s
21+
// RUN: %clang %s -c -E -dM -fopenmp=libomp -fopenmp-version=45 | FileCheck --check-prefix=CHECK-45-VERSION %s
2222
// CHECK-45-VERSION: #define _OPENMP 201511
2323

2424
// RUN: %clang %s -c -E -dM -fopenmp-version=1 | FileCheck --check-prefix=CHECK-VERSION %s

0 commit comments

Comments
 (0)