mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-27 07:31:28 +00:00
Break Frontend's dependency on Rewrite, Checker and CodeGen in shared library configuration
Currently, all AST consumers are located in the Frontend library, meaning that in a shared library configuration, Frontend has a dependency on Rewrite, Checker and CodeGen. This is suboptimal for clients which only wish to make use of the frontend. CodeGen in particular introduces a large number of unwanted dependencies. This patch breaks the dependency by moving all AST consumers with dependencies on Rewrite, Checker and/or CodeGen to their respective libraries. The patch therefore introduces dependencies in the other direction (i.e. from Rewrite, Checker and CodeGen to Frontend). After applying this patch, Clang builds correctly using CMake and shared libraries ("cmake -DBUILD_SHARED_LIBS=ON"). N.B. This patch includes file renames which are indicated in the patch body. Changes in this revision of the patch: - Fixed some copy-paste mistakes in the header files - Modified certain aspects of the coding to comply with the LLVM Coding Standards llvm-svn: 106010
This commit is contained in:
parent
a8b941c21b
commit
c1b1729b66
@ -7,10 +7,10 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/CodeGen/CodeGenAction.h"
|
||||
#include "clang/Driver/Compilation.h"
|
||||
#include "clang/Driver/Driver.h"
|
||||
#include "clang/Driver/Tool.h"
|
||||
#include "clang/Frontend/CodeGenAction.h"
|
||||
#include "clang/Frontend/CompilerInvocation.h"
|
||||
#include "clang/Frontend/CompilerInstance.h"
|
||||
#include "clang/Frontend/DiagnosticOptions.h"
|
||||
|
35
clang/include/clang/Checker/AnalysisConsumer.h
Normal file
35
clang/include/clang/Checker/AnalysisConsumer.h
Normal file
@ -0,0 +1,35 @@
|
||||
//===--- AnalysisConsumer.h - Front-end Analysis Engine Hooks ---*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This header contains the functions necessary for a front-end to run various
|
||||
// analyses.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_CLANG_CHECKER_ANALYSISCONSUMER_H
|
||||
#define LLVM_CLANG_CHECKER_ANALYSISCONSUMER_H
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace clang {
|
||||
|
||||
class AnalyzerOptions;
|
||||
class ASTConsumer;
|
||||
class Preprocessor;
|
||||
|
||||
/// CreateAnalysisConsumer - Creates an ASTConsumer to run various code
|
||||
/// analysis passes. (The set of analyses run is controlled by command-line
|
||||
/// options.)
|
||||
ASTConsumer* CreateAnalysisConsumer(const Preprocessor &pp,
|
||||
const std::string &output,
|
||||
const AnalyzerOptions& Opts);
|
||||
|
||||
}
|
||||
|
||||
#endif
|
29
clang/include/clang/Checker/FrontendActions.h
Normal file
29
clang/include/clang/Checker/FrontendActions.h
Normal file
@ -0,0 +1,29 @@
|
||||
//===-- FrontendActions.h - Useful Frontend Actions -------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_CLANG_CHECKER_FRONTENDACTIONS_H
|
||||
#define LLVM_CLANG_CHECKER_FRONTENDACTIONS_H
|
||||
|
||||
#include "clang/Frontend/FrontendAction.h"
|
||||
|
||||
namespace clang {
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// AST Consumer Actions
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
class AnalysisAction : public ASTFrontendAction {
|
||||
protected:
|
||||
virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
|
||||
llvm::StringRef InFile);
|
||||
};
|
||||
|
||||
} // end namespace clang
|
||||
|
||||
#endif
|
@ -11,8 +11,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_CLANG_FRONTEND_PATH_DIAGNOSTIC_CLIENTS_H
|
||||
#define LLVM_CLANG_FRONTEND_PATH_DIAGNOSTIC_CLiENTS_H
|
||||
#ifndef LLVM_CLANG_CHECKER_PATH_DIAGNOSTIC_CLIENTS_H
|
||||
#define LLVM_CLANG_CHECKER_PATH_DIAGNOSTIC_CLiENTS_H
|
||||
|
||||
#include <string>
|
||||
|
@ -7,6 +7,9 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_CLANG_CODEGEN_BACKEND_UTIL_H
|
||||
#define LLVM_CLANG_CODEGEN_BACKEND_UTIL_H
|
||||
|
||||
namespace llvm {
|
||||
class Module;
|
||||
class raw_ostream;
|
||||
@ -30,3 +33,5 @@ namespace clang {
|
||||
const TargetOptions &TOpts, llvm::Module *M,
|
||||
BackendAction Action, llvm::raw_ostream *OS);
|
||||
}
|
||||
|
||||
#endif
|
@ -7,6 +7,9 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_CLANG_CODEGEN_CODE_GEN_ACTION_H
|
||||
#define LLVM_CLANG_CODEGEN_CODE_GEN_ACTION_H
|
||||
|
||||
#include "clang/Frontend/FrontendAction.h"
|
||||
#include "llvm/ADT/OwningPtr.h"
|
||||
|
||||
@ -72,3 +75,5 @@ public:
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
@ -57,20 +57,6 @@ ASTConsumer *CreateASTViewer();
|
||||
// to stderr; this is intended for debugging.
|
||||
ASTConsumer *CreateDeclContextPrinter();
|
||||
|
||||
// ObjC rewriter: attempts tp rewrite ObjC constructs into pure C code.
|
||||
// This is considered experimental, and only works with Apple's ObjC runtime.
|
||||
ASTConsumer *CreateObjCRewriter(const std::string &InFile,
|
||||
llvm::raw_ostream *OS,
|
||||
Diagnostic &Diags,
|
||||
const LangOptions &LOpts,
|
||||
bool SilenceRewriteMacroWarning);
|
||||
|
||||
/// CreateHTMLPrinter - Create an AST consumer which rewrites source code to
|
||||
/// HTML with syntax highlighting suitable for viewing in a web-browser.
|
||||
ASTConsumer *CreateHTMLPrinter(llvm::raw_ostream *OS, Preprocessor &PP,
|
||||
bool SyntaxHighlight = true,
|
||||
bool HighlightMacros = true);
|
||||
|
||||
// PCH generator: generates a precompiled header file; this file can be used
|
||||
// later with the PCHReader (clang -cc1 option -include-pch) to speed up compile
|
||||
// times.
|
||||
|
@ -1,4 +1,4 @@
|
||||
//===--- AnalysisConsumer.h - Front-end Analysis Engine Hooks ---*- C++ -*-===//
|
||||
//===--- AnalyzerOptions.h - Analysis Engine Options ------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
@ -7,13 +7,13 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This header contains the functions necessary for a front-end to run various
|
||||
// analyses.
|
||||
// This header contains the structures necessary for a front-end to specify
|
||||
// various analyses.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_CLANG_FRONTEND_ANALYSISCONSUMER_H
|
||||
#define LLVM_CLANG_FRONTEND_ANALYSISCONSUMER_H
|
||||
#ifndef LLVM_CLANG_FRONTEND_ANALYZEROPTIONS_H
|
||||
#define LLVM_CLANG_FRONTEND_ANALYZEROPTIONS_H
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
@ -92,13 +92,6 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
/// CreateAnalysisConsumer - Creates an ASTConsumer to run various code
|
||||
/// analysis passes. (The set of analyses run is controlled by command-line
|
||||
/// options.)
|
||||
ASTConsumer* CreateAnalysisConsumer(const Preprocessor &pp,
|
||||
const std::string &output,
|
||||
const AnalyzerOptions& Opts);
|
||||
|
||||
}
|
||||
|
||||
#endif
|
@ -13,7 +13,7 @@
|
||||
#include "clang/Basic/LangOptions.h"
|
||||
#include "clang/Basic/TargetOptions.h"
|
||||
#include "clang/CodeGen/CodeGenOptions.h"
|
||||
#include "clang/Frontend/AnalysisConsumer.h"
|
||||
#include "clang/Frontend/AnalyzerOptions.h"
|
||||
#include "clang/Frontend/DependencyOutputOptions.h"
|
||||
#include "clang/Frontend/DiagnosticOptions.h"
|
||||
#include "clang/Frontend/FrontendOptions.h"
|
||||
|
@ -15,8 +15,6 @@
|
||||
#include <vector>
|
||||
|
||||
namespace clang {
|
||||
class FixItRewriter;
|
||||
class FixItPathRewriter;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Custom Consumer Actions
|
||||
@ -38,12 +36,6 @@ public:
|
||||
// AST Consumer Actions
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
class AnalysisAction : public ASTFrontendAction {
|
||||
protected:
|
||||
virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
|
||||
llvm::StringRef InFile);
|
||||
};
|
||||
|
||||
class ASTPrintAction : public ASTFrontendAction {
|
||||
protected:
|
||||
virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
|
||||
@ -74,26 +66,6 @@ protected:
|
||||
llvm::StringRef InFile);
|
||||
};
|
||||
|
||||
class FixItAction : public ASTFrontendAction {
|
||||
protected:
|
||||
llvm::OwningPtr<FixItRewriter> Rewriter;
|
||||
llvm::OwningPtr<FixItPathRewriter> PathRewriter;
|
||||
|
||||
virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
|
||||
llvm::StringRef InFile);
|
||||
|
||||
virtual bool BeginSourceFileAction(CompilerInstance &CI,
|
||||
llvm::StringRef Filename);
|
||||
|
||||
virtual void EndSourceFileAction();
|
||||
|
||||
virtual bool hasASTFileSupport() const { return false; }
|
||||
|
||||
public:
|
||||
FixItAction();
|
||||
~FixItAction();
|
||||
};
|
||||
|
||||
class GeneratePCHAction : public ASTFrontendAction {
|
||||
protected:
|
||||
virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
|
||||
@ -104,24 +76,12 @@ protected:
|
||||
virtual bool hasASTFileSupport() const { return false; }
|
||||
};
|
||||
|
||||
class HTMLPrintAction : public ASTFrontendAction {
|
||||
protected:
|
||||
virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
|
||||
llvm::StringRef InFile);
|
||||
};
|
||||
|
||||
class InheritanceViewAction : public ASTFrontendAction {
|
||||
protected:
|
||||
virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
|
||||
llvm::StringRef InFile);
|
||||
};
|
||||
|
||||
class RewriteObjCAction : public ASTFrontendAction {
|
||||
protected:
|
||||
virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
|
||||
llvm::StringRef InFile);
|
||||
};
|
||||
|
||||
class SyntaxOnlyAction : public ASTFrontendAction {
|
||||
protected:
|
||||
virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
|
||||
@ -215,16 +175,6 @@ protected:
|
||||
virtual bool hasPCHSupport() const { return true; }
|
||||
};
|
||||
|
||||
class RewriteMacrosAction : public PreprocessorFrontendAction {
|
||||
protected:
|
||||
void ExecuteAction();
|
||||
};
|
||||
|
||||
class RewriteTestAction : public PreprocessorFrontendAction {
|
||||
protected:
|
||||
void ExecuteAction();
|
||||
};
|
||||
|
||||
} // end namespace clang
|
||||
|
||||
#endif
|
||||
|
@ -65,12 +65,6 @@ void ProcessWarningOptions(Diagnostic &Diags, const DiagnosticOptions &Opts);
|
||||
void DoPrintPreprocessedInput(Preprocessor &PP, llvm::raw_ostream* OS,
|
||||
const PreprocessorOutputOptions &Opts);
|
||||
|
||||
/// RewriteMacrosInInput - Implement -rewrite-macros mode.
|
||||
void RewriteMacrosInInput(Preprocessor &PP, llvm::raw_ostream* OS);
|
||||
|
||||
/// RewriteMacrosInInput - A simple test for the TokenRewriter class.
|
||||
void DoRewriteTest(Preprocessor &PP, llvm::raw_ostream* OS);
|
||||
|
||||
/// CreatePrintParserActionsAction - Return the actions implementation that
|
||||
/// implements the -parse-print-callbacks option.
|
||||
MinimalAction *CreatePrintParserActionsAction(Preprocessor &PP,
|
||||
|
45
clang/include/clang/Rewrite/ASTConsumers.h
Normal file
45
clang/include/clang/Rewrite/ASTConsumers.h
Normal file
@ -0,0 +1,45 @@
|
||||
//===--- ASTConsumers.h - ASTConsumer implementations -----------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// AST Consumers.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef REWRITE_ASTCONSUMERS_H
|
||||
#define REWRITE_ASTCONSUMERS_H
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace llvm {
|
||||
class raw_ostream;
|
||||
}
|
||||
namespace clang {
|
||||
|
||||
class ASTConsumer;
|
||||
class Diagnostic;
|
||||
class LangOptions;
|
||||
class Preprocessor;
|
||||
|
||||
// ObjC rewriter: attempts tp rewrite ObjC constructs into pure C code.
|
||||
// This is considered experimental, and only works with Apple's ObjC runtime.
|
||||
ASTConsumer *CreateObjCRewriter(const std::string &InFile,
|
||||
llvm::raw_ostream *OS,
|
||||
Diagnostic &Diags,
|
||||
const LangOptions &LOpts,
|
||||
bool SilenceRewriteMacroWarning);
|
||||
|
||||
/// CreateHTMLPrinter - Create an AST consumer which rewrites source code to
|
||||
/// HTML with syntax highlighting suitable for viewing in a web-browser.
|
||||
ASTConsumer *CreateHTMLPrinter(llvm::raw_ostream *OS, Preprocessor &PP,
|
||||
bool SyntaxHighlight = true,
|
||||
bool HighlightMacros = true);
|
||||
|
||||
} // end clang namespace
|
||||
|
||||
#endif
|
@ -12,8 +12,8 @@
|
||||
// then forwards any diagnostics to the adapted diagnostic client.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
#ifndef LLVM_CLANG_FRONTEND_FIX_IT_REWRITER_H
|
||||
#define LLVM_CLANG_FRONTEND_FIX_IT_REWRITER_H
|
||||
#ifndef LLVM_CLANG_REWRITE_FIX_IT_REWRITER_H
|
||||
#define LLVM_CLANG_REWRITE_FIX_IT_REWRITER_H
|
||||
|
||||
#include "clang/Basic/Diagnostic.h"
|
||||
#include "clang/Basic/SourceLocation.h"
|
||||
@ -101,4 +101,4 @@ public:
|
||||
|
||||
}
|
||||
|
||||
#endif // LLVM_CLANG_FRONTEND_FIX_IT_REWRITER_H
|
||||
#endif // LLVM_CLANG_REWRITE_FIX_IT_REWRITER_H
|
69
clang/include/clang/Rewrite/FrontendActions.h
Normal file
69
clang/include/clang/Rewrite/FrontendActions.h
Normal file
@ -0,0 +1,69 @@
|
||||
//===-- FrontendActions.h - Useful Frontend Actions -------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_CLANG_REWRITE_FRONTENDACTIONS_H
|
||||
#define LLVM_CLANG_REWRITE_FRONTENDACTIONS_H
|
||||
|
||||
#include "clang/Frontend/FrontendAction.h"
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
namespace clang {
|
||||
class FixItRewriter;
|
||||
class FixItPathRewriter;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// AST Consumer Actions
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
class HTMLPrintAction : public ASTFrontendAction {
|
||||
protected:
|
||||
virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
|
||||
llvm::StringRef InFile);
|
||||
};
|
||||
|
||||
class FixItAction : public ASTFrontendAction {
|
||||
protected:
|
||||
llvm::OwningPtr<FixItRewriter> Rewriter;
|
||||
llvm::OwningPtr<FixItPathRewriter> PathRewriter;
|
||||
|
||||
virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
|
||||
llvm::StringRef InFile);
|
||||
|
||||
virtual bool BeginSourceFileAction(CompilerInstance &CI,
|
||||
llvm::StringRef Filename);
|
||||
|
||||
virtual void EndSourceFileAction();
|
||||
|
||||
virtual bool hasASTFileSupport() const { return false; }
|
||||
|
||||
public:
|
||||
FixItAction();
|
||||
~FixItAction();
|
||||
};
|
||||
|
||||
class RewriteObjCAction : public ASTFrontendAction {
|
||||
protected:
|
||||
virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
|
||||
llvm::StringRef InFile);
|
||||
};
|
||||
|
||||
class RewriteMacrosAction : public PreprocessorFrontendAction {
|
||||
protected:
|
||||
void ExecuteAction();
|
||||
};
|
||||
|
||||
class RewriteTestAction : public PreprocessorFrontendAction {
|
||||
protected:
|
||||
void ExecuteAction();
|
||||
};
|
||||
|
||||
} // end namespace clang
|
||||
|
||||
#endif
|
31
clang/include/clang/Rewrite/Rewriters.h
Normal file
31
clang/include/clang/Rewrite/Rewriters.h
Normal file
@ -0,0 +1,31 @@
|
||||
//===--- Rewriters.h - Rewriter implementations -------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This header contains miscellaneous utilities for various front-end actions.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_CLANG_REWRITE_REWRITERS_H
|
||||
#define LLVM_CLANG_REWRITE_REWRITERS_H
|
||||
|
||||
#include "llvm/ADT/StringRef.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
|
||||
namespace clang {
|
||||
class Preprocessor;
|
||||
|
||||
/// RewriteMacrosInInput - Implement -rewrite-macros mode.
|
||||
void RewriteMacrosInInput(Preprocessor &PP, llvm::raw_ostream* OS);
|
||||
|
||||
/// DoRewriteTest - A simple test for the TokenRewriter class.
|
||||
void DoRewriteTest(Preprocessor &PP, llvm::raw_ostream* OS);
|
||||
|
||||
} // end namespace clang
|
||||
|
||||
#endif
|
@ -11,7 +11,7 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/Frontend/AnalysisConsumer.h"
|
||||
#include "clang/Checker/AnalysisConsumer.h"
|
||||
#include "clang/AST/ASTConsumer.h"
|
||||
#include "clang/AST/Decl.h"
|
||||
#include "clang/AST/DeclCXX.h"
|
||||
@ -27,9 +27,10 @@
|
||||
#include "clang/Checker/BugReporter/BugReporter.h"
|
||||
#include "clang/Checker/PathSensitive/GRExprEngine.h"
|
||||
#include "clang/Checker/PathSensitive/GRTransferFuncs.h"
|
||||
#include "clang/Checker/PathDiagnosticClients.h"
|
||||
#include "clang/Basic/FileManager.h"
|
||||
#include "clang/Basic/SourceManager.h"
|
||||
#include "clang/Frontend/PathDiagnosticClients.h"
|
||||
#include "clang/Frontend/AnalyzerOptions.h"
|
||||
#include "clang/Lex/Preprocessor.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/System/Path.h"
|
@ -3,6 +3,7 @@ set(LLVM_NO_RTTI 1)
|
||||
add_clang_library(clangChecker
|
||||
AdjustedReturnValueChecker.cpp
|
||||
AggExprVisitor.cpp
|
||||
AnalysisConsumer.cpp
|
||||
ArrayBoundChecker.cpp
|
||||
AttrNonNullChecker.cpp
|
||||
BasicConstraintManager.cpp
|
||||
@ -30,12 +31,14 @@ add_clang_library(clangChecker
|
||||
ExplodedGraph.cpp
|
||||
FixedAddressChecker.cpp
|
||||
FlatStore.cpp
|
||||
FrontendActions.cpp
|
||||
GRBlockCounter.cpp
|
||||
GRCoreEngine.cpp
|
||||
GRCXXExprEngine.cpp
|
||||
GRExprEngine.cpp
|
||||
GRExprEngineExperimentalChecks.cpp
|
||||
GRState.cpp
|
||||
HTMLDiagnostics.cpp
|
||||
LLVMConventionsChecker.cpp
|
||||
MacOSXAPIChecker.cpp
|
||||
MallocChecker.cpp
|
||||
@ -47,6 +50,7 @@ add_clang_library(clangChecker
|
||||
ObjCUnusedIVarsChecker.cpp
|
||||
OSAtomicChecker.cpp
|
||||
PathDiagnostic.cpp
|
||||
PlistDiagnostics.cpp
|
||||
PointerArithChecker.cpp
|
||||
PointerSubChecker.cpp
|
||||
PthreadLockChecker.cpp
|
||||
|
21
clang/lib/Checker/FrontendActions.cpp
Normal file
21
clang/lib/Checker/FrontendActions.cpp
Normal file
@ -0,0 +1,21 @@
|
||||
//===--- FrontendActions.cpp ----------------------------------------------===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/Checker/FrontendActions.h"
|
||||
#include "clang/Frontend/CompilerInstance.h"
|
||||
#include "clang/Checker/AnalysisConsumer.h"
|
||||
using namespace clang;
|
||||
|
||||
ASTConsumer *AnalysisAction::CreateASTConsumer(CompilerInstance &CI,
|
||||
llvm::StringRef InFile) {
|
||||
return CreateAnalysisConsumer(CI.getPreprocessor(),
|
||||
CI.getFrontendOpts().OutputFile,
|
||||
CI.getAnalyzerOpts());
|
||||
}
|
||||
|
@ -11,7 +11,7 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/Frontend/PathDiagnosticClients.h"
|
||||
#include "clang/Checker/PathDiagnosticClients.h"
|
||||
#include "clang/Checker/BugReporter/PathDiagnostic.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/Decl.h"
|
@ -11,7 +11,7 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/Frontend/PathDiagnosticClients.h"
|
||||
#include "clang/Checker/PathDiagnosticClients.h"
|
||||
#include "clang/Checker/BugReporter/PathDiagnostic.h"
|
||||
#include "clang/Basic/SourceManager.h"
|
||||
#include "clang/Basic/FileManager.h"
|
@ -7,7 +7,7 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/Frontend/BackendUtil.h"
|
||||
#include "clang/CodeGen/BackendUtil.h"
|
||||
#include "clang/Basic/Diagnostic.h"
|
||||
#include "clang/Basic/TargetOptions.h"
|
||||
#include "clang/CodeGen/CodeGenOptions.h"
|
@ -1,6 +1,7 @@
|
||||
set(LLVM_NO_RTTI 1)
|
||||
|
||||
add_clang_library(clangCodeGen
|
||||
BackendUtil.cpp
|
||||
CGBlocks.cpp
|
||||
CGBuiltin.cpp
|
||||
CGCall.cpp
|
||||
@ -25,6 +26,7 @@ add_clang_library(clangCodeGen
|
||||
CGTemporaries.cpp
|
||||
CGVTables.cpp
|
||||
CGVTT.cpp
|
||||
CodeGenAction.cpp
|
||||
CodeGenFunction.cpp
|
||||
CodeGenModule.cpp
|
||||
CodeGenTypes.cpp
|
||||
|
@ -7,15 +7,14 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/Frontend/CodeGenAction.h"
|
||||
#include "clang/CodeGen/CodeGenAction.h"
|
||||
#include "clang/Basic/SourceManager.h"
|
||||
#include "clang/Basic/TargetInfo.h"
|
||||
#include "clang/AST/ASTConsumer.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/DeclGroup.h"
|
||||
#include "clang/CodeGen/BackendUtil.h"
|
||||
#include "clang/CodeGen/ModuleBuilder.h"
|
||||
#include "clang/Frontend/ASTConsumers.h"
|
||||
#include "clang/Frontend/BackendUtil.h"
|
||||
#include "clang/Frontend/CompilerInstance.h"
|
||||
#include "clang/Frontend/FrontendDiagnostic.h"
|
||||
#include "llvm/LLVMContext.h"
|
@ -13,7 +13,6 @@
|
||||
|
||||
#include "clang/Frontend/ASTConsumers.h"
|
||||
#include "clang/Frontend/DocumentXML.h"
|
||||
#include "clang/Frontend/PathDiagnosticClients.h"
|
||||
#include "clang/Basic/Diagnostic.h"
|
||||
#include "clang/Basic/SourceManager.h"
|
||||
#include "clang/Basic/FileManager.h"
|
||||
@ -22,7 +21,6 @@
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/RecordLayout.h"
|
||||
#include "clang/AST/PrettyPrinter.h"
|
||||
#include "clang/CodeGen/ModuleBuilder.h"
|
||||
#include "llvm/Module.h"
|
||||
#include "llvm/Support/Timer.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
|
@ -4,24 +4,18 @@ add_clang_library(clangFrontend
|
||||
ASTConsumers.cpp
|
||||
ASTMerge.cpp
|
||||
ASTUnit.cpp
|
||||
AnalysisConsumer.cpp
|
||||
BackendUtil.cpp
|
||||
BoostConAction.cpp
|
||||
CacheTokens.cpp
|
||||
CodeGenAction.cpp
|
||||
CompilerInstance.cpp
|
||||
CompilerInvocation.cpp
|
||||
DeclXML.cpp
|
||||
DependencyFile.cpp
|
||||
DiagChecker.cpp
|
||||
DocumentXML.cpp
|
||||
FixItRewriter.cpp
|
||||
FrontendAction.cpp
|
||||
FrontendActions.cpp
|
||||
FrontendOptions.cpp
|
||||
GeneratePCH.cpp
|
||||
HTMLDiagnostics.cpp
|
||||
HTMLPrint.cpp
|
||||
InitHeaderSearch.cpp
|
||||
InitPreprocessor.cpp
|
||||
LangStandards.cpp
|
||||
@ -31,12 +25,8 @@ add_clang_library(clangFrontend
|
||||
PCHWriter.cpp
|
||||
PCHWriterDecl.cpp
|
||||
PCHWriterStmt.cpp
|
||||
PlistDiagnostics.cpp
|
||||
PrintParserCallbacks.cpp
|
||||
PrintPreprocessedOutput.cpp
|
||||
RewriteMacros.cpp
|
||||
RewriteObjC.cpp
|
||||
RewriteTest.cpp
|
||||
StmtXML.cpp
|
||||
TextDiagnosticBuffer.cpp
|
||||
TextDiagnosticPrinter.cpp
|
||||
|
@ -13,11 +13,9 @@
|
||||
#include "clang/Lex/Preprocessor.h"
|
||||
#include "clang/Parse/Parser.h"
|
||||
#include "clang/Basic/FileManager.h"
|
||||
#include "clang/Frontend/AnalysisConsumer.h"
|
||||
#include "clang/Frontend/ASTConsumers.h"
|
||||
#include "clang/Frontend/ASTUnit.h"
|
||||
#include "clang/Frontend/CompilerInstance.h"
|
||||
#include "clang/Frontend/FixItRewriter.h"
|
||||
#include "clang/Frontend/FrontendDiagnostic.h"
|
||||
#include "clang/Frontend/Utils.h"
|
||||
#include "llvm/ADT/OwningPtr.h"
|
||||
@ -40,13 +38,6 @@ void InitOnlyAction::ExecuteAction() {
|
||||
// AST Consumer Actions
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
ASTConsumer *AnalysisAction::CreateASTConsumer(CompilerInstance &CI,
|
||||
llvm::StringRef InFile) {
|
||||
return CreateAnalysisConsumer(CI.getPreprocessor(),
|
||||
CI.getFrontendOpts().OutputFile,
|
||||
CI.getAnalyzerOpts());
|
||||
}
|
||||
|
||||
ASTConsumer *ASTPrintAction::CreateASTConsumer(CompilerInstance &CI,
|
||||
llvm::StringRef InFile) {
|
||||
if (llvm::raw_ostream *OS = CI.createDefaultOutputFile(false, InFile))
|
||||
@ -95,69 +86,11 @@ ASTConsumer *GeneratePCHAction::CreateASTConsumer(CompilerInstance &CI,
|
||||
return CreatePCHGenerator(CI.getPreprocessor(), OS);
|
||||
}
|
||||
|
||||
ASTConsumer *HTMLPrintAction::CreateASTConsumer(CompilerInstance &CI,
|
||||
llvm::StringRef InFile) {
|
||||
if (llvm::raw_ostream *OS = CI.createDefaultOutputFile(false, InFile))
|
||||
return CreateHTMLPrinter(OS, CI.getPreprocessor());
|
||||
return 0;
|
||||
}
|
||||
|
||||
ASTConsumer *InheritanceViewAction::CreateASTConsumer(CompilerInstance &CI,
|
||||
llvm::StringRef InFile) {
|
||||
return CreateInheritanceViewer(CI.getFrontendOpts().ViewClassInheritance);
|
||||
}
|
||||
|
||||
FixItAction::FixItAction() {}
|
||||
FixItAction::~FixItAction() {}
|
||||
|
||||
ASTConsumer *FixItAction::CreateASTConsumer(CompilerInstance &CI,
|
||||
llvm::StringRef InFile) {
|
||||
return new ASTConsumer();
|
||||
}
|
||||
|
||||
class FixItActionSuffixInserter : public FixItPathRewriter {
|
||||
std::string NewSuffix;
|
||||
|
||||
public:
|
||||
explicit FixItActionSuffixInserter(std::string NewSuffix)
|
||||
: NewSuffix(NewSuffix) {}
|
||||
|
||||
std::string RewriteFilename(const std::string &Filename) {
|
||||
llvm::sys::Path Path(Filename);
|
||||
std::string Suffix = Path.getSuffix();
|
||||
Path.eraseSuffix();
|
||||
Path.appendSuffix(NewSuffix + "." + Suffix);
|
||||
return Path.c_str();
|
||||
}
|
||||
};
|
||||
|
||||
bool FixItAction::BeginSourceFileAction(CompilerInstance &CI,
|
||||
llvm::StringRef Filename) {
|
||||
const FrontendOptions &FEOpts = getCompilerInstance().getFrontendOpts();
|
||||
if (!FEOpts.FixItSuffix.empty()) {
|
||||
PathRewriter.reset(new FixItActionSuffixInserter(FEOpts.FixItSuffix));
|
||||
} else {
|
||||
PathRewriter.reset();
|
||||
}
|
||||
Rewriter.reset(new FixItRewriter(CI.getDiagnostics(), CI.getSourceManager(),
|
||||
CI.getLangOpts(), PathRewriter.get()));
|
||||
return true;
|
||||
}
|
||||
|
||||
void FixItAction::EndSourceFileAction() {
|
||||
// Otherwise rewrite all files.
|
||||
Rewriter->WriteFixedFiles();
|
||||
}
|
||||
|
||||
ASTConsumer *RewriteObjCAction::CreateASTConsumer(CompilerInstance &CI,
|
||||
llvm::StringRef InFile) {
|
||||
if (llvm::raw_ostream *OS = CI.createDefaultOutputFile(false, InFile, "cpp"))
|
||||
return CreateObjCRewriter(InFile, OS,
|
||||
CI.getDiagnostics(), CI.getLangOpts(),
|
||||
CI.getDiagnosticOpts().NoRewriteMacros);
|
||||
return 0;
|
||||
}
|
||||
|
||||
ASTConsumer *SyntaxOnlyAction::CreateASTConsumer(CompilerInstance &CI,
|
||||
llvm::StringRef InFile) {
|
||||
return new ASTConsumer();
|
||||
@ -258,19 +191,3 @@ void PrintPreprocessedAction::ExecuteAction() {
|
||||
DoPrintPreprocessedInput(CI.getPreprocessor(), OS,
|
||||
CI.getPreprocessorOutputOpts());
|
||||
}
|
||||
|
||||
void RewriteMacrosAction::ExecuteAction() {
|
||||
CompilerInstance &CI = getCompilerInstance();
|
||||
llvm::raw_ostream *OS = CI.createDefaultOutputFile(true, getCurrentFile());
|
||||
if (!OS) return;
|
||||
|
||||
RewriteMacrosInInput(CI.getPreprocessor(), OS);
|
||||
}
|
||||
|
||||
void RewriteTestAction::ExecuteAction() {
|
||||
CompilerInstance &CI = getCompilerInstance();
|
||||
llvm::raw_ostream *OS = CI.createDefaultOutputFile(false, getCurrentFile());
|
||||
if (!OS) return;
|
||||
|
||||
DoRewriteTest(CI.getPreprocessor(), OS);
|
||||
}
|
||||
|
@ -2,8 +2,14 @@ set(LLVM_NO_RTTI 1)
|
||||
|
||||
add_clang_library(clangRewrite
|
||||
DeltaTree.cpp
|
||||
FixItRewriter.cpp
|
||||
FrontendActions.cpp
|
||||
HTMLPrint.cpp
|
||||
HTMLRewrite.cpp
|
||||
RewriteMacros.cpp
|
||||
RewriteObjC.cpp
|
||||
RewriteRope.cpp
|
||||
RewriteTest.cpp
|
||||
Rewriter.cpp
|
||||
TokenRewriter.cpp
|
||||
)
|
||||
|
@ -13,7 +13,7 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/Frontend/FixItRewriter.h"
|
||||
#include "clang/Rewrite/FixItRewriter.h"
|
||||
#include "clang/Basic/FileManager.h"
|
||||
#include "clang/Basic/SourceLocation.h"
|
||||
#include "clang/Basic/SourceManager.h"
|
106
clang/lib/Rewrite/FrontendActions.cpp
Normal file
106
clang/lib/Rewrite/FrontendActions.cpp
Normal file
@ -0,0 +1,106 @@
|
||||
//===--- FrontendActions.cpp ----------------------------------------------===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/Rewrite/FrontendActions.h"
|
||||
#include "clang/AST/ASTConsumer.h"
|
||||
#include "clang/Lex/Preprocessor.h"
|
||||
#include "clang/Parse/Parser.h"
|
||||
#include "clang/Basic/FileManager.h"
|
||||
#include "clang/Frontend/CompilerInstance.h"
|
||||
#include "clang/Frontend/FrontendDiagnostic.h"
|
||||
#include "clang/Frontend/Utils.h"
|
||||
#include "clang/Rewrite/ASTConsumers.h"
|
||||
#include "clang/Rewrite/FixItRewriter.h"
|
||||
#include "clang/Rewrite/Rewriters.h"
|
||||
#include "llvm/ADT/OwningPtr.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/System/Path.h"
|
||||
using namespace clang;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// AST Consumer Actions
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
ASTConsumer *HTMLPrintAction::CreateASTConsumer(CompilerInstance &CI,
|
||||
llvm::StringRef InFile) {
|
||||
if (llvm::raw_ostream *OS = CI.createDefaultOutputFile(false, InFile))
|
||||
return CreateHTMLPrinter(OS, CI.getPreprocessor());
|
||||
return 0;
|
||||
}
|
||||
|
||||
FixItAction::FixItAction() {}
|
||||
FixItAction::~FixItAction() {}
|
||||
|
||||
ASTConsumer *FixItAction::CreateASTConsumer(CompilerInstance &CI,
|
||||
llvm::StringRef InFile) {
|
||||
return new ASTConsumer();
|
||||
}
|
||||
|
||||
class FixItActionSuffixInserter : public FixItPathRewriter {
|
||||
std::string NewSuffix;
|
||||
|
||||
public:
|
||||
explicit FixItActionSuffixInserter(std::string NewSuffix)
|
||||
: NewSuffix(NewSuffix) {}
|
||||
|
||||
std::string RewriteFilename(const std::string &Filename) {
|
||||
llvm::sys::Path Path(Filename);
|
||||
std::string Suffix = Path.getSuffix();
|
||||
Path.eraseSuffix();
|
||||
Path.appendSuffix(NewSuffix + "." + Suffix);
|
||||
return Path.c_str();
|
||||
}
|
||||
};
|
||||
|
||||
bool FixItAction::BeginSourceFileAction(CompilerInstance &CI,
|
||||
llvm::StringRef Filename) {
|
||||
const FrontendOptions &FEOpts = getCompilerInstance().getFrontendOpts();
|
||||
if (!FEOpts.FixItSuffix.empty()) {
|
||||
PathRewriter.reset(new FixItActionSuffixInserter(FEOpts.FixItSuffix));
|
||||
} else {
|
||||
PathRewriter.reset();
|
||||
}
|
||||
Rewriter.reset(new FixItRewriter(CI.getDiagnostics(), CI.getSourceManager(),
|
||||
CI.getLangOpts(), PathRewriter.get()));
|
||||
return true;
|
||||
}
|
||||
|
||||
void FixItAction::EndSourceFileAction() {
|
||||
// Otherwise rewrite all files.
|
||||
Rewriter->WriteFixedFiles();
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Preprocessor Actions
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
ASTConsumer *RewriteObjCAction::CreateASTConsumer(CompilerInstance &CI,
|
||||
llvm::StringRef InFile) {
|
||||
if (llvm::raw_ostream *OS = CI.createDefaultOutputFile(false, InFile, "cpp"))
|
||||
return CreateObjCRewriter(InFile, OS,
|
||||
CI.getDiagnostics(), CI.getLangOpts(),
|
||||
CI.getDiagnosticOpts().NoRewriteMacros);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void RewriteMacrosAction::ExecuteAction() {
|
||||
CompilerInstance &CI = getCompilerInstance();
|
||||
llvm::raw_ostream *OS = CI.createDefaultOutputFile(true, getCurrentFile());
|
||||
if (!OS) return;
|
||||
|
||||
RewriteMacrosInInput(CI.getPreprocessor(), OS);
|
||||
}
|
||||
|
||||
void RewriteTestAction::ExecuteAction() {
|
||||
CompilerInstance &CI = getCompilerInstance();
|
||||
llvm::raw_ostream *OS = CI.createDefaultOutputFile(false, getCurrentFile());
|
||||
if (!OS) return;
|
||||
|
||||
DoRewriteTest(CI.getPreprocessor(), OS);
|
||||
}
|
@ -11,7 +11,7 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/Frontend/ASTConsumers.h"
|
||||
#include "clang/Rewrite/ASTConsumers.h"
|
||||
#include "clang/AST/ASTConsumer.h"
|
||||
#include "clang/AST/ASTContext.h"
|
||||
#include "clang/AST/Decl.h"
|
@ -12,7 +12,7 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/Frontend/Utils.h"
|
||||
#include "clang/Rewrite/Rewriters.h"
|
||||
#include "clang/Rewrite/Rewriter.h"
|
||||
#include "clang/Lex/Preprocessor.h"
|
||||
#include "clang/Basic/SourceManager.h"
|
@ -11,7 +11,7 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/Frontend/ASTConsumers.h"
|
||||
#include "clang/Rewrite/ASTConsumers.h"
|
||||
#include "clang/Rewrite/Rewriter.h"
|
||||
#include "clang/AST/AST.h"
|
||||
#include "clang/AST/ASTConsumer.h"
|
@ -11,7 +11,7 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/Frontend/Utils.h"
|
||||
#include "clang/Rewrite/Rewriters.h"
|
||||
#include "clang/Lex/Preprocessor.h"
|
||||
#include "clang/Rewrite/TokenRewriter.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
@ -14,12 +14,13 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "clang/Basic/Diagnostic.h"
|
||||
#include "clang/Checker/FrontendActions.h"
|
||||
#include "clang/CodeGen/CodeGenAction.h"
|
||||
#include "clang/Driver/Arg.h"
|
||||
#include "clang/Driver/ArgList.h"
|
||||
#include "clang/Driver/CC1Options.h"
|
||||
#include "clang/Driver/DriverDiagnostic.h"
|
||||
#include "clang/Driver/OptTable.h"
|
||||
#include "clang/Frontend/CodeGenAction.h"
|
||||
#include "clang/Frontend/CompilerInstance.h"
|
||||
#include "clang/Frontend/CompilerInvocation.h"
|
||||
#include "clang/Frontend/FrontendActions.h"
|
||||
@ -27,6 +28,7 @@
|
||||
#include "clang/Frontend/FrontendPluginRegistry.h"
|
||||
#include "clang/Frontend/TextDiagnosticBuffer.h"
|
||||
#include "clang/Frontend/TextDiagnosticPrinter.h"
|
||||
#include "clang/Rewrite/FrontendActions.h"
|
||||
#include "llvm/LLVMContext.h"
|
||||
#include "llvm/ADT/OwningPtr.h"
|
||||
#include "llvm/ADT/Statistic.h"
|
||||
|
Loading…
Reference in New Issue
Block a user