From d08c056695a59fb1cfc7ccc9a2784bb9a6514551 Mon Sep 17 00:00:00 2001 From: Alexey Bataev Date: Tue, 19 Nov 2019 12:07:54 -0500 Subject: [OPENMP50]Add if clause in simd directive. According to OpenMP 5.0, if clause can be used in simd directive. If condition in the if clause if false, the non-vectorized version of the loop must be executed. --- clang/lib/Basic/OpenMPKinds.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'clang/lib/Basic') diff --git a/clang/lib/Basic/OpenMPKinds.cpp b/clang/lib/Basic/OpenMPKinds.cpp index 4e6c677f11d..b1e623b861d 100644 --- a/clang/lib/Basic/OpenMPKinds.cpp +++ b/clang/lib/Basic/OpenMPKinds.cpp @@ -447,7 +447,8 @@ const char *clang::getOpenMPSimpleClauseTypeName(OpenMPClauseKind Kind, } bool clang::isAllowedClauseForDirective(OpenMPDirectiveKind DKind, - OpenMPClauseKind CKind) { + OpenMPClauseKind CKind, + unsigned OpenMPVersion) { assert(DKind <= OMPD_unknown); assert(CKind <= OMPC_unknown); switch (DKind) { @@ -462,6 +463,8 @@ bool clang::isAllowedClauseForDirective(OpenMPDirectiveKind DKind, } break; case OMPD_simd: + if (OpenMPVersion < 50 && CKind == OMPC_if) + return false; switch (CKind) { #define OPENMP_SIMD_CLAUSE(Name) \ case OMPC_##Name: \ -- cgit v1.2.3