[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