]> granicus.if.org Git - clang/commit
[OpenMP] Permit map with DSA on combined directive
authorJoel E. Denny <jdenny.ornl@gmail.com>
Thu, 22 Aug 2019 03:34:30 +0000 (03:34 +0000)
committerJoel E. Denny <jdenny.ornl@gmail.com>
Thu, 22 Aug 2019 03:34:30 +0000 (03:34 +0000)
commit848e96cec7210d528c75fe4cc1e935fd9a6f24df
tree833532f876205acc3c1d56d4ad25f70807e99a95
parent6e9fcdecd279536a60e6807e33b6d1208151fd6e
[OpenMP] Permit map with DSA on combined directive

For `map`, the following restriction changed in OpenMP 5.0:

* OpenMP 4.5 [2.15.5.1, Restrictions]: "A list item cannot appear in
  both a map clause and a data-sharing attribute clause on the same
  construct.

* OpenMP 5.0 [2.19.7.1, Restrictions]: "A list item cannot appear in
  both a map clause and a data-sharing attribute clause on the same
  construct unless the construct is a combined construct."

This patch removes this restriction in the case of combined constructs
and OpenMP 5.0, and it updates Sema not to capture a scalar by copy in
the target region when `firstprivate` and `map` appear for that scalar
on a combined target construct.

This patch also adds a fixme to a test that now reveals that a
diagnostic about loop iteration variables is dropped in the case of
OpenMP 5.0.  That bug exists regardless of this patch's changes.

Reviewed By: ABataev, jdoerfert, hfinkel, kkwli0

Differential Revision: https://reviews.llvm.org/D65835

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369619 91177308-0d34-0410-b5e6-96231b3b80d8
13 files changed:
include/clang/Sema/ScopeInfo.h
include/clang/Sema/Sema.h
lib/Sema/Sema.cpp
lib/Sema/SemaExpr.cpp
lib/Sema/SemaOpenMP.cpp
lib/Sema/SemaStmt.cpp
test/OpenMP/target_teams_distribute_parallel_for_lastprivate_messages.cpp
test/OpenMP/target_teams_distribute_parallel_for_simd_lastprivate_messages.cpp
test/OpenMP/target_teams_distribute_simd_firstprivate_messages.cpp
test/OpenMP/target_teams_distribute_simd_lastprivate_messages.cpp
test/OpenMP/target_teams_distribute_simd_private_messages.cpp
test/OpenMP/target_teams_map_codegen.cpp [new file with mode: 0644]
test/OpenMP/target_teams_map_messages.cpp