[clang] 69f35f8 - [OpenMP] Add version macro support for 5.1 and 5.2
Mike Rice via cfe-commits
cfe-commits at lists.llvm.org
Wed Nov 17 10:51:29 PST 2021
Author: Mike Rice
Date: 2021-11-17T10:51:08-08:00
New Revision: 69f35f89691255eeed0dac26b2b642fea5c7db93
URL: https://github.com/llvm/llvm-project/commit/69f35f89691255eeed0dac26b2b642fea5c7db93
DIFF: https://github.com/llvm/llvm-project/commit/69f35f89691255eeed0dac26b2b642fea5c7db93.diff
LOG: [OpenMP] Add version macro support for 5.1 and 5.2
Differential Revision: https://reviews.llvm.org/D114102
Added:
Modified:
clang/lib/Frontend/InitPreprocessor.cpp
clang/test/OpenMP/declare_variant_clauses_messages.cpp
clang/test/OpenMP/driver.c
Removed:
################################################################################
diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp
index fe65039291502..0ecb024fc6b97 100644
--- a/clang/lib/Frontend/InitPreprocessor.cpp
+++ b/clang/lib/Frontend/InitPreprocessor.cpp
@@ -1152,6 +1152,12 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
case 45:
Builder.defineMacro("_OPENMP", "201511");
break;
+ case 51:
+ Builder.defineMacro("_OPENMP", "202011");
+ break;
+ case 52:
+ Builder.defineMacro("_OPENMP", "202111");
+ break;
default:
// Default version is OpenMP 5.0
Builder.defineMacro("_OPENMP", "201811");
diff --git a/clang/test/OpenMP/declare_variant_clauses_messages.cpp b/clang/test/OpenMP/declare_variant_clauses_messages.cpp
index e4db5b4e44eda..058b5d7675e65 100644
--- a/clang/test/OpenMP/declare_variant_clauses_messages.cpp
+++ b/clang/test/OpenMP/declare_variant_clauses_messages.cpp
@@ -1,8 +1,8 @@
-// RUN: %clang_cc1 -verify -triple x86_64-unknown-linux -fopenmp -fopenmp-version=51 -DOMP51 -std=c++11 -o - %s
-// RUN: %clang_cc1 -verify -triple x86_64-unknown-linux -fopenmp -fopenmp-version=51 -DOMP51 -std=c++11 \
+// RUN: %clang_cc1 -verify -triple x86_64-unknown-linux -fopenmp -fopenmp-version=51 -std=c++11 -o - %s
+// RUN: %clang_cc1 -verify -triple x86_64-unknown-linux -fopenmp -fopenmp-version=51 -std=c++11 \
// RUN: -DNO_INTEROP_T_DEF -o - %s
-// RUN: %clang_cc1 -verify -triple x86_64-unknown-linux -fopenmp -fopenmp-version=50 -DOMP50 -std=c++11 -o - %s
-// RUN: %clang_cc1 -verify -triple x86_64-unknown-linux -fopenmp -fopenmp-version=51 -DOMP51 -DC -x c -o - %s
+// RUN: %clang_cc1 -verify -triple x86_64-unknown-linux -fopenmp -fopenmp-version=50 -std=c++11 -o - %s
+// RUN: %clang_cc1 -verify -triple x86_64-unknown-linux -fopenmp -fopenmp-version=51 -DC -x c -o - %s
#ifdef NO_INTEROP_T_DEF
void foo_v1(float *, void *);
@@ -15,7 +15,7 @@ typedef void *omp_interop_t;
int Other;
-#ifdef OMP51
+#if _OPENMP >= 202011 // At least OpenMP 5.1
#ifdef __cplusplus
class A {
public:
@@ -83,14 +83,14 @@ template <typename T> void templatebar(const T& t) {}
append_args(interop(target),interop(target))
void templatebar(const int &t) {}
#endif // __cplusplus
-#endif // OMP51
+#endif // _OPENMP >= 202011
void foo_v1(float *AAA, float *BBB, int *I) { return; }
void foo_v2(float *AAA, float *BBB, int *I) { return; }
void foo_v3(float *AAA, float *BBB, int *I) { return; }
void foo_v4(float *AAA, float *BBB, int *I, omp_interop_t IOp) { return; }
-#ifdef OMP51
+#if _OPENMP >= 202011 // At least OpenMP 5.1
void vararg_foo(const char *fmt, omp_interop_t it, ...);
// expected-error at +3 {{'append_args' is not allowed with varargs functions}}
#pragma omp declare variant(vararg_foo) match(construct={dispatch}) \
@@ -184,15 +184,15 @@ void vararg_bar2(const char *fmt) { return; }
// expected-error at +1 {{variant in '#pragma omp declare variant' with type 'void (float *, float *, int *, omp_interop_t)' (aka 'void (float *, float *, int *, void *)') is incompatible with type 'void (float *, float *, int *)'}}
#pragma omp declare variant(foo_v4) match(construct={dispatch})
-#endif // OMP51
-#ifdef OMP50
+#endif // _OPENMP >= 202011
+#if _OPENMP < 202011 // OpenMP 5.0 or lower
// expected-error at +2 {{expected 'match' clause on 'omp declare variant' directive}}
#pragma omp declare variant(foo_v1) \
adjust_args(need_device_ptr:AAA) match(device={arch(arm)})
// expected-error at +2 {{expected 'match' clause on 'omp declare variant' directive}}
#pragma omp declare variant(foo_v1) \
append_args(interop(target)) match(device={arch(arm)})
-#endif // OMP50
+#endif // _OPENMP < 202011
void foo(float *AAA, float *BBB, int *I) { return; }
diff --git a/clang/test/OpenMP/driver.c b/clang/test/OpenMP/driver.c
index d82e92b4e8894..2533ec7e05b60 100644
--- a/clang/test/OpenMP/driver.c
+++ b/clang/test/OpenMP/driver.c
@@ -33,6 +33,12 @@
// RUN: %clang %s -c -E -dM -fopenmp=libomp -fopenmp-version=50 | FileCheck --check-prefix=CHECK-50-VERSION %s
// CHECK-50-VERSION: #define _OPENMP 201811
+// RUN: %clang %s -c -E -dM -fopenmp=libomp -fopenmp-version=51 | FileCheck --check-prefix=CHECK-51-VERSION %s
+// CHECK-51-VERSION: #define _OPENMP 202011
+
+// RUN: %clang %s -c -E -dM -fopenmp=libomp -fopenmp-version=52 | FileCheck --check-prefix=CHECK-52-VERSION %s
+// CHECK-52-VERSION: #define _OPENMP 202111
+
// RUN: %clang %s -c -E -dM -fopenmp-version=1 | FileCheck --check-prefix=CHECK-VERSION %s
// RUN: %clang %s -c -E -dM -fopenmp-version=31 | FileCheck --check-prefix=CHECK-VERSION %s
// RUN: %clang %s -c -E -dM -fopenmp-version=40 | FileCheck --check-prefix=CHECK-VERSION %s
More information about the cfe-commits
mailing list