[clang] [OpenMP][TR12] change property of map-type modifier. (PR #90499)

2024-05-02 Thread via cfe-commits

jyu2-git wrote:

I put a possible fix in https://github.com/llvm/llvm-project/pull/90800   I am 
waiting for test to finish.

https://github.com/llvm/llvm-project/pull/90499
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [OpenMP][TR12] change property of map-type modifier. (PR #90499)

2024-05-02 Thread Vitaly Buka via cfe-commits

vitalybuka wrote:

I am not sure what should be a correct fix, so I'll revert?

https://github.com/llvm/llvm-project/pull/90499
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [OpenMP][TR12] change property of map-type modifier. (PR #90499)

2024-05-02 Thread Vitaly Buka via cfe-commits

vitalybuka wrote:

Breaks https://lab.llvm.org/buildbot/#/builders/5/builds/43086


https://github.com/llvm/llvm-project/pull/90499
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [OpenMP][TR12] change property of map-type modifier. (PR #90499)

2024-05-01 Thread via cfe-commits

https://github.com/jyu2-git closed 
https://github.com/llvm/llvm-project/pull/90499
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [OpenMP][TR12] change property of map-type modifier. (PR #90499)

2024-04-30 Thread via cfe-commits

jyu2-git wrote:

> LG

Thanks Alexey!

https://github.com/llvm/llvm-project/pull/90499
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [OpenMP][TR12] change property of map-type modifier. (PR #90499)

2024-04-30 Thread Alexey Bataev via cfe-commits

https://github.com/alexey-bataev approved this pull request.

LG

https://github.com/llvm/llvm-project/pull/90499
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [OpenMP][TR12] change property of map-type modifier. (PR #90499)

2024-04-30 Thread via cfe-commits


@@ -4675,8 +4709,10 @@ bool Parser::ParseOpenMPVarList(OpenMPDirectiveKind 
DKind,
 // Only parse map-type-modifier[s] and map-type if a colon is present in
 // the map clause.
 if (ColonPresent) {
+  if (getLangOpts().OpenMP >= 60 && getCurToken().is(tok::colon))

jyu2-git wrote:

parseMapTypeModifiers is recursive function.  I don't I have good place to 
added that. 

https://github.com/llvm/llvm-project/pull/90499
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [OpenMP][TR12] change property of map-type modifier. (PR #90499)

2024-04-30 Thread Alexey Bataev via cfe-commits


@@ -4675,8 +4709,10 @@ bool Parser::ParseOpenMPVarList(OpenMPDirectiveKind 
DKind,
 // Only parse map-type-modifier[s] and map-type if a colon is present in
 // the map clause.
 if (ColonPresent) {
+  if (getLangOpts().OpenMP >= 60 && getCurToken().is(tok::colon))

alexey-bataev wrote:

Maybe emit then the error in parseMapTypeModifiers too?

https://github.com/llvm/llvm-project/pull/90499
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [OpenMP][TR12] change property of map-type modifier. (PR #90499)

2024-04-30 Thread via cfe-commits


@@ -4675,8 +4709,10 @@ bool Parser::ParseOpenMPVarList(OpenMPDirectiveKind 
DKind,
 // Only parse map-type-modifier[s] and map-type if a colon is present in
 // the map clause.
 if (ColonPresent) {
+  if (getLangOpts().OpenMP >= 60 && getCurToken().is(tok::colon))

jyu2-git wrote:

I only need to emit error for map(: a),   I don't need emit error like map(,,: 
a), since the error already emit during parseMapTypeModifiers. 

The ColonPresent will be set for when ":" exist for map clause.

https://github.com/llvm/llvm-project/pull/90499
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [OpenMP][TR12] change property of map-type modifier. (PR #90499)

2024-04-30 Thread Alexey Bataev via cfe-commits


@@ -113,7 +114,7 @@ struct SA {
 #pragma omp target map(b[true:true])
 {}
 
-#pragma omp target map(: c,f) // expected-error {{missing map type}}
+#pragma omp target map(: c,f) // lt60-error {{missing map type}}

alexey-bataev wrote:

Yes, if you have dangling `:` without modifier list

https://github.com/llvm/llvm-project/pull/90499
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [OpenMP][TR12] change property of map-type modifier. (PR #90499)

2024-04-30 Thread via cfe-commits


@@ -113,7 +114,7 @@ struct SA {
 #pragma omp target map(b[true:true])
 {}
 
-#pragma omp target map(: c,f) // expected-error {{missing map type}}
+#pragma omp target map(: c,f) // lt60-error {{missing map type}}

jyu2-git wrote:

All those can be omitted, but error is needed for empty modifier-list?


https://github.com/llvm/llvm-project/pull/90499
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [OpenMP][TR12] change property of map-type modifier. (PR #90499)

2024-04-30 Thread Alexey Bataev via cfe-commits


@@ -113,7 +114,7 @@ struct SA {
 #pragma omp target map(b[true:true])
 {}
 
-#pragma omp target map(: c,f) // expected-error {{missing map type}}
+#pragma omp target map(: c,f) // lt60-error {{missing map type}}

alexey-bataev wrote:

Check page 100, the supported format is `[modifier-specification-list 
:]clause-argument-list`

https://github.com/llvm/llvm-project/pull/90499
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [OpenMP][TR12] change property of map-type modifier. (PR #90499)

2024-04-29 Thread via cfe-commits

https://github.com/jyu2-git edited 
https://github.com/llvm/llvm-project/pull/90499
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [OpenMP][TR12] change property of map-type modifier. (PR #90499)

2024-04-29 Thread via cfe-commits


@@ -113,7 +114,7 @@ struct SA {
 #pragma omp target map(b[true:true])
 {}
 
-#pragma omp target map(: c,f) // expected-error {{missing map type}}
+#pragma omp target map(: c,f) // lt60-error {{missing map type}}

jyu2-git wrote:

Hi Alexey, could you specify where 4.2 says that.  I back look at 6.8.3

map-type locator-list Keyword: alloc, delete,
from, release, to, tofrom
default

Thanks.



https://github.com/llvm/llvm-project/pull/90499
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [OpenMP][TR12] change property of map-type modifier. (PR #90499)

2024-04-29 Thread Alexey Bataev via cfe-commits


@@ -113,7 +114,7 @@ struct SA {
 #pragma omp target map(b[true:true])
 {}
 
-#pragma omp target map(: c,f) // expected-error {{missing map type}}
+#pragma omp target map(: c,f) // lt60-error {{missing map type}}

alexey-bataev wrote:

Hm,, I see in 4.2 Clause Format that it is not allowed

https://github.com/llvm/llvm-project/pull/90499
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [OpenMP][TR12] change property of map-type modifier. (PR #90499)

2024-04-29 Thread via cfe-commits


@@ -113,7 +114,7 @@ struct SA {
 #pragma omp target map(b[true:true])
 {}
 
-#pragma omp target map(: c,f) // expected-error {{missing map type}}
+#pragma omp target map(: c,f) // lt60-error {{missing map type}}

jyu2-git wrote:

Yes.


https://github.com/llvm/llvm-project/pull/90499
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [OpenMP][TR12] change property of map-type modifier. (PR #90499)

2024-04-29 Thread via cfe-commits

https://github.com/jyu2-git updated 
https://github.com/llvm/llvm-project/pull/90499

>From 20904df466de953880ca6af4afd72d7dfae33224 Mon Sep 17 00:00:00 2001
From: Jennifer Yu 
Date: Mon, 29 Apr 2024 10:01:12 -0700
Subject: [PATCH 1/2] [OpenMP][TR12] change proerty of map-type modifer.

map-type change to "default" instead "ultimate" from [OpenMP5.2]

The change is allowed map-type to be placed any locations within map
modifiers, besides the last location in the modifiers-list, also
map-type can be omitted afterward.
---
 .../clang/Basic/DiagnosticParseKinds.td   |   3 +
 clang/lib/Parse/ParseOpenMP.cpp   |  35 +-
 clang/test/OpenMP/target_ast_print.cpp|  58 ++
 clang/test/OpenMP/target_map_messages.cpp | 105 ++
 4 files changed, 153 insertions(+), 48 deletions(-)

diff --git a/clang/include/clang/Basic/DiagnosticParseKinds.td 
b/clang/include/clang/Basic/DiagnosticParseKinds.td
index fdffb35ea0d955..c3b50d59da6e36 100644
--- a/clang/include/clang/Basic/DiagnosticParseKinds.td
+++ b/clang/include/clang/Basic/DiagnosticParseKinds.td
@@ -1438,6 +1438,9 @@ def err_omp_decl_in_declare_simd_variant : Error<
 def err_omp_sink_and_source_iteration_not_allowd: Error<" '%0 
%select{sink:|source:}1' must be with '%select{omp_cur_iteration - 
1|omp_cur_iteration}1'">;
 def err_omp_unknown_map_type : Error<
   "incorrect map type, expected one of 'to', 'from', 'tofrom', 'alloc', 
'release', or 'delete'">;
+def err_omp_more_one_map_type : Error<"map type is already specified">;
+def note_previous_map_type_specified_here
+: Note<"map type '%0' is previous specified here">;
 def err_omp_unknown_map_type_modifier : Error<
   "incorrect map type modifier, expected one of: 'always', 'close', 'mapper'"
   "%select{|, 'present'|, 'present', 'iterator'}0%select{|, 'ompx_hold'}1">;
diff --git a/clang/lib/Parse/ParseOpenMP.cpp b/clang/lib/Parse/ParseOpenMP.cpp
index 480201bc06f613..ad1cda161eaf06 100644
--- a/clang/lib/Parse/ParseOpenMP.cpp
+++ b/clang/lib/Parse/ParseOpenMP.cpp
@@ -4228,13 +4228,19 @@ bool 
Parser::parseMapperModifier(SemaOpenMP::OpenMPVarListDataTy &Data) {
   return T.consumeClose();
 }
 
+static OpenMPMapClauseKind isMapType(Parser &P);
+
 /// Parse map-type-modifiers in map clause.
 /// map([ [map-type-modifier[,] [map-type-modifier[,] ...] map-type : ] list)
 /// where, map-type-modifier ::= always | close | mapper(mapper-identifier) |
 /// present
 bool Parser::parseMapTypeModifiers(SemaOpenMP::OpenMPVarListDataTy &Data) {
+  bool HasMapType = false;
+  SourceLocation PreMapLoc = Tok.getLocation();
+  StringRef PreMapName = "";
   while (getCurToken().isNot(tok::colon)) {
 OpenMPMapModifierKind TypeModifier = isMapModifier(*this);
+OpenMPMapClauseKind MapKind = isMapType(*this);
 if (TypeModifier == OMPC_MAP_MODIFIER_always ||
 TypeModifier == OMPC_MAP_MODIFIER_close ||
 TypeModifier == OMPC_MAP_MODIFIER_present ||
@@ -4257,6 +4263,19 @@ bool 
Parser::parseMapTypeModifiers(SemaOpenMP::OpenMPVarListDataTy &Data) {
 Diag(Data.MapTypeModifiersLoc.back(), diag::err_omp_missing_comma)
 << "map type modifier";
 
+} else if (getLangOpts().OpenMP >= 60 && MapKind != OMPC_MAP_unknown) {
+  if (!HasMapType) {
+HasMapType = true;
+Data.ExtraModifier = MapKind;
+MapKind = OMPC_MAP_unknown;
+PreMapLoc = Tok.getLocation();
+PreMapName = Tok.getIdentifierInfo()->getName();
+  } else {
+Diag(Tok, diag::err_omp_more_one_map_type);
+Diag(PreMapLoc, diag::note_previous_map_type_specified_here)
+<< PreMapName;
+  }
+  ConsumeToken();
 } else {
   // For the case of unknown map-type-modifier or a map-type.
   // Map-type is followed by a colon; the function returns when it
@@ -4268,7 +4287,11 @@ bool 
Parser::parseMapTypeModifiers(SemaOpenMP::OpenMPVarListDataTy &Data) {
   }
   // Potential map-type token as it is followed by a colon.
   if (PP.LookAhead(0).is(tok::colon))
-return false;
+if (getLangOpts().OpenMP >= 60)
+  break;
+else
+  return false;
+
   Diag(Tok, diag::err_omp_unknown_map_type_modifier)
   << (getLangOpts().OpenMP >= 51 ? (getLangOpts().OpenMP >= 52 ? 2 : 1)
  : 0)
@@ -4278,6 +4301,14 @@ bool 
Parser::parseMapTypeModifiers(SemaOpenMP::OpenMPVarListDataTy &Data) {
 if (getCurToken().is(tok::comma))
   ConsumeToken();
   }
+  if (getLangOpts().OpenMP >= 60 && !HasMapType) {
+if (!Tok.is(tok::colon)) {
+  Diag(Tok, diag::err_omp_unknown_map_type);
+  ConsumeToken();
+} else {
+  Data.ExtraModifier = OMPC_MAP_unknown;
+}
+  }
   return false;
 }
 
@@ -4676,7 +4707,7 @@ bool Parser::ParseOpenMPVarList(OpenMPDirectiveKind DKind,
 // the map clause.
 if (ColonPresent) {
   IsInvalidMapperModifier = parseMapTypeModifiers(Data);
-  if (!IsInvalidMapperModifier

[clang] [OpenMP][TR12] change property of map-type modifier. (PR #90499)

2024-04-29 Thread Alexey Bataev via cfe-commits

https://github.com/alexey-bataev edited 
https://github.com/llvm/llvm-project/pull/90499
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [OpenMP][TR12] change property of map-type modifier. (PR #90499)

2024-04-29 Thread Alexey Bataev via cfe-commits


@@ -113,7 +114,7 @@ struct SA {
 #pragma omp target map(b[true:true])
 {}
 
-#pragma omp target map(: c,f) // expected-error {{missing map type}}
+#pragma omp target map(: c,f) // lt60-error {{missing map type}}

alexey-bataev wrote:

So, does hanging `:` is allowed?

https://github.com/llvm/llvm-project/pull/90499
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [OpenMP][TR12] change property of map-type modifier. (PR #90499)

2024-04-29 Thread via cfe-commits


@@ -113,7 +114,7 @@ struct SA {
 #pragma omp target map(b[true:true])
 {}
 
-#pragma omp target map(: c,f) // expected-error {{missing map type}}
+#pragma omp target map(: c,f) // lt60-error {{missing map type}}

jyu2-git wrote:

In OMP60, the map-type can be omitted.  Will be default tofrom.

https://github.com/llvm/llvm-project/pull/90499
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [OpenMP][TR12] change property of map-type modifier. (PR #90499)

2024-04-29 Thread Alexey Bataev via cfe-commits


@@ -113,7 +114,7 @@ struct SA {
 #pragma omp target map(b[true:true])
 {}
 
-#pragma omp target map(: c,f) // expected-error {{missing map type}}
+#pragma omp target map(: c,f) // lt60-error {{missing map type}}

alexey-bataev wrote:

I assume this also must be reported as an error for 6.0, no?

https://github.com/llvm/llvm-project/pull/90499
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [OpenMP][TR12] change property of map-type modifier. (PR #90499)

2024-04-29 Thread Alexey Bataev via cfe-commits


@@ -4268,7 +4287,11 @@ bool 
Parser::parseMapTypeModifiers(SemaOpenMP::OpenMPVarListDataTy &Data) {
   }
   // Potential map-type token as it is followed by a colon.
   if (PP.LookAhead(0).is(tok::colon))
-return false;
+if (getLangOpts().OpenMP >= 60)
+  break;
+else
+  return false;
+

alexey-bataev wrote:

Need extra braces here to correctly handle else

https://github.com/llvm/llvm-project/pull/90499
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [OpenMP][TR12] change property of map-type modifier. (PR #90499)

2024-04-29 Thread Alexey Bataev via cfe-commits

https://github.com/alexey-bataev edited 
https://github.com/llvm/llvm-project/pull/90499
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits