diff options
author | Alexey Bataev <a.bataev@hotmail.com> | 2019-12-05 11:31:45 -0500 |
---|---|---|
committer | Alexey Bataev <a.bataev@hotmail.com> | 2019-12-05 11:32:33 -0500 |
commit | 5c517a6b13bfee99e054128231ddf64e70e5a6ab (patch) | |
tree | 533f9a4a5283185a75514d82fc5b67504bf92907 /clang/lib/Sema/SemaOpenMP.cpp | |
parent | d96ea47c75fdf4a62358eae49a0026bcf031bde6 (diff) | |
download | bcm5719-llvm-5c517a6b13bfee99e054128231ddf64e70e5a6ab.tar.gz bcm5719-llvm-5c517a6b13bfee99e054128231ddf64e70e5a6ab.zip |
[OPENMP50]Add support for if clause for simd part in parallel master taskloop simd directive.
According to OpenMP 5.0, the if clause can be applied to simd
subdirective in the combined directives.
Diffstat (limited to 'clang/lib/Sema/SemaOpenMP.cpp')
-rw-r--r-- | clang/lib/Sema/SemaOpenMP.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp index cacb81000ff..ff9fe4f10c1 100644 --- a/clang/lib/Sema/SemaOpenMP.cpp +++ b/clang/lib/Sema/SemaOpenMP.cpp @@ -4674,6 +4674,8 @@ StmtResult Sema::ActOnOpenMPExecutableDirective( ClausesWithImplicit, AStmt, StartLoc, EndLoc, VarsWithInheritedDSA); AllowedNameModifiers.push_back(OMPD_taskloop); AllowedNameModifiers.push_back(OMPD_parallel); + if (LangOpts.OpenMP >= 50) + AllowedNameModifiers.push_back(OMPD_simd); break; case OMPD_distribute: Res = ActOnOpenMPDistributeDirective(ClausesWithImplicit, AStmt, StartLoc, @@ -10679,10 +10681,20 @@ static OpenMPDirectiveKind getOpenMPCaptureRegionForClause( CaptureRegion = OMPD_task; break; case OMPD_parallel_master_taskloop: - case OMPD_parallel_master_taskloop_simd: if (NameModifier == OMPD_unknown || NameModifier == OMPD_taskloop) CaptureRegion = OMPD_parallel; break; + case OMPD_parallel_master_taskloop_simd: + if ((OpenMPVersion <= 45 && NameModifier == OMPD_unknown) || + NameModifier == OMPD_taskloop) { + CaptureRegion = OMPD_parallel; + break; + } + if (OpenMPVersion <= 45) + break; + if (NameModifier == OMPD_unknown || NameModifier == OMPD_simd) + CaptureRegion = OMPD_taskloop; + break; case OMPD_parallel_for_simd: if (OpenMPVersion <= 45) break; |