diff --git a/include/clang/Basic/Attr.td b/include/clang/Basic/Attr.td index a37e19f9f32979ffce59051d11aa1495c83a6e49..c50c8831969064a6b1fa5265a3e44047447192f6 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 e0f46179d3b297e8d0b171e76af42c79317fc1f2..ed9e191460bf8a2ff521dd2b054f97e2384d8bc2 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 16d4bb03f354d68fa355e30d5402b93a3a494ce5..72c181e09dce2fb411ec870c42fc97eec12fcf4e 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();