summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/tools/clang/examples/AnnotateFunctions/AnnotateFunctions.cpp
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2020-08-03 15:06:44 +0000
committerpatrick <patrick@openbsd.org>2020-08-03 15:06:44 +0000
commitb64793999546ed8adebaeebd9d8345d18db8927d (patch)
tree4357c27b561d73b0e089727c6ed659f2ceff5f47 /gnu/llvm/tools/clang/examples/AnnotateFunctions/AnnotateFunctions.cpp
parentAdd support for UTF-8 DISPLAY-HINTs with octet length. For now only (diff)
downloadwireguard-openbsd-b64793999546ed8adebaeebd9d8345d18db8927d.tar.xz
wireguard-openbsd-b64793999546ed8adebaeebd9d8345d18db8927d.zip
Remove LLVM 8.0.1 files.
Diffstat (limited to 'gnu/llvm/tools/clang/examples/AnnotateFunctions/AnnotateFunctions.cpp')
-rw-r--r--gnu/llvm/tools/clang/examples/AnnotateFunctions/AnnotateFunctions.cpp88
1 files changed, 0 insertions, 88 deletions
diff --git a/gnu/llvm/tools/clang/examples/AnnotateFunctions/AnnotateFunctions.cpp b/gnu/llvm/tools/clang/examples/AnnotateFunctions/AnnotateFunctions.cpp
deleted file mode 100644
index 375f18f8e09..00000000000
--- a/gnu/llvm/tools/clang/examples/AnnotateFunctions/AnnotateFunctions.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-//===- AnnotateFunctions.cpp ----------------------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// Example clang plugin which adds an annotation to every function in
-// translation units that start with #pragma enable_annotate.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/Frontend/FrontendPluginRegistry.h"
-#include "clang/AST/AST.h"
-#include "clang/AST/ASTConsumer.h"
-#include "clang/Lex/Preprocessor.h"
-#include "clang/Lex/LexDiagnostic.h"
-using namespace clang;
-
-namespace {
-
-static bool EnableAnnotate = false;
-static bool HandledDecl = false;
-
-class AnnotateFunctionsConsumer : public ASTConsumer {
-public:
- bool HandleTopLevelDecl(DeclGroupRef DG) override {
- HandledDecl = true;
- if (!EnableAnnotate)
- return true;
- for (auto D : DG)
- if (FunctionDecl *FD = dyn_cast<FunctionDecl>(D))
- FD->addAttr(AnnotateAttr::CreateImplicit(FD->getASTContext(),
- "example_annotation"));
- return true;
- }
-};
-
-class AnnotateFunctionsAction : public PluginASTAction {
-public:
- std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
- llvm::StringRef) override {
- return llvm::make_unique<AnnotateFunctionsConsumer>();
- }
-
- bool ParseArgs(const CompilerInstance &CI,
- const std::vector<std::string> &args) override {
- return true;
- }
-
- PluginASTAction::ActionType getActionType() override {
- return AddBeforeMainAction;
- }
-};
-
-class PragmaAnnotateHandler : public PragmaHandler {
-public:
- PragmaAnnotateHandler() : PragmaHandler("enable_annotate") { }
-
- void HandlePragma(Preprocessor &PP, PragmaIntroducerKind Introducer,
- Token &PragmaTok) override {
-
- Token Tok;
- PP.LexUnexpandedToken(Tok);
- if (Tok.isNot(tok::eod))
- PP.Diag(Tok, diag::ext_pp_extra_tokens_at_eol) << "pragma";
-
- if (HandledDecl) {
- DiagnosticsEngine &D = PP.getDiagnostics();
- unsigned ID = D.getCustomDiagID(
- DiagnosticsEngine::Error,
- "#pragma enable_annotate not allowed after declarations");
- D.Report(PragmaTok.getLocation(), ID);
- }
-
- EnableAnnotate = true;
- }
-};
-
-}
-
-static FrontendPluginRegistry::Add<AnnotateFunctionsAction>
-X("annotate-fns", "annotate functions");
-
-static PragmaHandlerRegistry::Add<PragmaAnnotateHandler>
-Y("enable_annotate","enable annotation");