Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. //===-- FrontendActions.h - Useful Frontend Actions -------------*- C++ -*-===//
  2. //
  3. // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
  4. // See https://llvm.org/LICENSE.txt for license information.
  5. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  6. //
  7. //===----------------------------------------------------------------------===//
  8.  
  9. #ifndef LLVM_CLANG_STATICANALYZER_FRONTEND_FRONTENDACTIONS_H
  10. #define LLVM_CLANG_STATICANALYZER_FRONTEND_FRONTENDACTIONS_H
  11.  
  12. #include "clang/Frontend/FrontendAction.h"
  13. #include "llvm/ADT/StringMap.h"
  14. #include "llvm/ADT/StringRef.h"
  15.  
  16. namespace clang {
  17.  
  18. class Stmt;
  19.  
  20. namespace ento {
  21.  
  22. //===----------------------------------------------------------------------===//
  23. // AST Consumer Actions
  24. //===----------------------------------------------------------------------===//
  25.  
  26. class AnalysisAction : public ASTFrontendAction {
  27. protected:
  28.   std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
  29.                                                  StringRef InFile) override;
  30. };
  31.  
  32. /// Frontend action to parse model files.
  33. ///
  34. /// This frontend action is responsible for parsing model files. Model files can
  35. /// not be parsed on their own, they rely on type information that is available
  36. /// in another translation unit. The parsing of model files is done by a
  37. /// separate compiler instance that reuses the ASTContext and othen information
  38. /// from the main translation unit that is being compiled. After a model file is
  39. /// parsed, the function definitions will be collected into a StringMap.
  40. class ParseModelFileAction : public ASTFrontendAction {
  41. public:
  42.   ParseModelFileAction(llvm::StringMap<Stmt *> &Bodies);
  43.   bool isModelParsingAction() const override { return true; }
  44.  
  45. protected:
  46.   std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
  47.                                                  StringRef InFile) override;
  48.  
  49. private:
  50.   llvm::StringMap<Stmt *> &Bodies;
  51. };
  52.  
  53. } // namespace ento
  54. } // end namespace clang
  55.  
  56. #endif
  57.