[clang] [OpenACC] Add 'clause' parsing infrastructure plus a few clauses (PR #75052)

via cfe-commits cfe-commits at lists.llvm.org
Wed Dec 13 01:32:56 PST 2023


================
@@ -69,6 +69,29 @@ OpenACCDirectiveKindEx getOpenACCDirectiveKind(Token Tok) {
       .Default(OpenACCDirectiveKindEx::Invalid);
 }
 
+// Translate single-token string representations to the OpenCC Clause Kind.
+OpenACCClauseKind getOpenACCClauseKind(Token Tok) {
+  // auto is a keyword in some language modes, so make sure we parse it
+  // correctly.
+  if (Tok.is(tok::kw_auto))
+    return OpenACCClauseKind::Auto;
+
+  if (!Tok.is(tok::identifier))
+    return OpenACCClauseKind::Invalid;
+
+  return llvm::StringSwitch<OpenACCClauseKind>(
+             Tok.getIdentifierInfo()->getName())
+      .Case("finalize", OpenACCClauseKind::Finalize)
+      .Case("if_present", OpenACCClauseKind::IfPresent)
+      .Case("seq", OpenACCClauseKind::Seq)
+      .Case("independent", OpenACCClauseKind::Independent)
+      .Case("auto", OpenACCClauseKind::Auto)
+      .Case("worker", OpenACCClauseKind::Worker)
+      .Case("vector", OpenACCClauseKind::Vector)
+      .Case("nohost", OpenACCClauseKind::NoHost)
+      .Default(OpenACCClauseKind::Invalid);
+}
----------------
cor3ntin wrote:

Can you sort alphabetically?

https://github.com/llvm/llvm-project/pull/75052


More information about the cfe-commits mailing list