From 2a674f0b0c31145b3ffd7a9fa6b09bd15895991e Mon Sep 17 00:00:00 2001 From: Simon Schuster <schuster+git@cs.fau.de> Date: Sun, 31 Jan 2021 20:26:19 +0100 Subject: [PATCH] Add new annotation type 'platina glet' --- include/clang/Basic/Attr.td | 1 + include/clang/Parse/Parser.h | 1 + lib/Parse/ParsePragma.cpp | 10 ++++++++++ 3 files changed, 12 insertions(+) diff --git a/include/clang/Basic/Attr.td b/include/clang/Basic/Attr.td index a37e19f9f32..c50c8831969 100644 --- a/include/clang/Basic/Attr.td +++ b/include/clang/Basic/Attr.td @@ -2862,6 +2862,7 @@ def Platina : Attr { , Pragma<"platina", "do"> , Pragma<"platina", "lbound"> , Pragma<"platina", "let"> + , Pragma<"platina", "glet"> ]; let Args = [IdentifierArgument<"Type">, StringArgument<"PlatinaExpr">]; diff --git a/include/clang/Parse/Parser.h b/include/clang/Parse/Parser.h index e0f46179d3b..ed9e191460b 100644 --- a/include/clang/Parse/Parser.h +++ b/include/clang/Parse/Parser.h @@ -189,6 +189,7 @@ class Parser : public CodeCompletionHandler { std::unique_ptr<PragmaHandler> PlatinaCalleeHandler; std::unique_ptr<PragmaHandler> PlatinaDoHandler; std::unique_ptr<PragmaHandler> PlatinaLetHandler; + std::unique_ptr<PragmaHandler> PlatinaGLetHandler; std::unique_ptr<PragmaHandler> PlatinaLoopboundHandler; std::unique_ptr<PragmaHandler> PlatinHandler; std::unique_ptr<PragmaHandler> LoopHintHandler; diff --git a/lib/Parse/ParsePragma.cpp b/lib/Parse/ParsePragma.cpp index 16d4bb03f35..72c181e09dc 100644 --- a/lib/Parse/ParsePragma.cpp +++ b/lib/Parse/ParsePragma.cpp @@ -229,6 +229,10 @@ struct PragmaPlatinaLetHandler : public PragmaPlatinaHandler { PragmaPlatinaLetHandler() : PragmaPlatinaHandler("let") {} }; +struct PragmaPlatinaGLetHandler : public PragmaPlatinaHandler { + PragmaPlatinaGLetHandler() : PragmaPlatinaHandler("glet") {} +}; + struct PragmaPlatinaLoopboundHandler : public PragmaPlatinaHandler { // Sorry, we have to settle for lbound here, as tablegen seems to ignore // pragma namespaces and bugs on the duplicated "loopbound" @@ -401,6 +405,9 @@ void Parser::initializePragmaHandlers() { PlatinaLetHandler.reset(new PragmaPlatinaLetHandler()); PP.AddPragmaHandler("platina", PlatinaLetHandler.get()); + PlatinaGLetHandler.reset(new PragmaPlatinaGLetHandler()); + PP.AddPragmaHandler("platina", PlatinaGLetHandler.get()); + PlatinaLoopboundHandler.reset(new PragmaPlatinaLoopboundHandler()); PP.AddPragmaHandler("platina", PlatinaLoopboundHandler.get()); @@ -524,6 +531,9 @@ void Parser::resetPragmaHandlers() { PP.RemovePragmaHandler("platina", PlatinaLetHandler.get()); PlatinaLetHandler.reset(); + PP.RemovePragmaHandler("platina", PlatinaGLetHandler.get()); + PlatinaGLetHandler.reset(); + PP.RemovePragmaHandler("platina", PlatinaLoopboundHandler.get()); PlatinaLoopboundHandler.reset(); -- GitLab