зеркало из https://github.com/microsoft/clang-1.git
clang -cc1: Kill off -empty-input only, and replace with -init-only which is an
actual action. - This is easier to use, and more reliable for timing the thing this was actually meant to be useful for. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98978 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
a2936be04f
Коммит
2758595023
|
@ -227,8 +227,6 @@ def code_completion_macros : Flag<"-code-completion-macros">,
|
|||
HelpText<"Include macros in code-completion results">;
|
||||
def disable_free : Flag<"-disable-free">,
|
||||
HelpText<"Disable freeing of memory on exit">;
|
||||
def empty_input_only : Flag<"-empty-input-only">,
|
||||
HelpText<"Force running on an empty input file">;
|
||||
def help : Flag<"-help">,
|
||||
HelpText<"Print this help text">;
|
||||
def _help : Flag<"--help">, Alias<help>;
|
||||
|
@ -262,6 +260,8 @@ def analyze : Flag<"-analyze">,
|
|||
HelpText<"Run static analysis engine">;
|
||||
def dump_tokens : Flag<"-dump-tokens">,
|
||||
HelpText<"Run preprocessor, dump internal rep of tokens">;
|
||||
def init_only : Flag<"-init-only">,
|
||||
HelpText<"Only execute frontend initialization">;
|
||||
def parse_noop : Flag<"-parse-noop">,
|
||||
HelpText<"Run parser with noop callbacks (for timings)">;
|
||||
def fsyntax_only : Flag<"-fsyntax-only">,
|
||||
|
|
|
@ -17,6 +17,22 @@
|
|||
namespace clang {
|
||||
class FixItRewriter;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Custom Consumer Actions
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
class InitOnlyAction : public FrontendAction {
|
||||
virtual void ExecuteAction();
|
||||
|
||||
virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
|
||||
llvm::StringRef InFile);
|
||||
|
||||
public:
|
||||
// Don't claim to only use the preprocessor, we want to follow the AST path,
|
||||
// but do nothing.
|
||||
virtual bool usesPreprocessorOnly() const { return false; }
|
||||
};
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// AST Consumer Actions
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
|
@ -36,6 +36,7 @@ namespace frontend {
|
|||
GeneratePCH, ///< Generate pre-compiled header.
|
||||
GeneratePTH, ///< Generate pre-tokenized header.
|
||||
InheritanceView, ///< View C++ inheritance for a specified class.
|
||||
InitOnly, ///< Only execute frontend initialization.
|
||||
ParseNoop, ///< Parse with noop callbacks.
|
||||
ParsePrintCallbacks, ///< Parse and print each callback.
|
||||
ParseSyntaxOnly, ///< Parse and perform semantic analysis.
|
||||
|
@ -71,9 +72,6 @@ public:
|
|||
unsigned DebugCodeCompletionPrinter : 1; ///< Use the debug printer for code
|
||||
/// completion results.
|
||||
unsigned DisableFree : 1; ///< Disable memory freeing on exit.
|
||||
unsigned EmptyInputOnly : 1; ///< Force input files to be treated
|
||||
/// as if they were empty, for timing
|
||||
/// the frontend startup.
|
||||
unsigned RelocatablePCH : 1; ///< When generating PCH files,
|
||||
/// instruct the PCH writer to create
|
||||
/// relocatable PCH files.
|
||||
|
@ -117,7 +115,6 @@ public:
|
|||
FrontendOptions() {
|
||||
DebugCodeCompletionPrinter = 1;
|
||||
DisableFree = 0;
|
||||
EmptyInputOnly = 0;
|
||||
ProgramAction = frontend::ParseSyntaxOnly;
|
||||
ActionName = "";
|
||||
RelocatablePCH = 0;
|
||||
|
|
|
@ -429,12 +429,7 @@ bool CompilerInstance::InitializeSourceManager(llvm::StringRef InputFile,
|
|||
SourceManager &SourceMgr,
|
||||
const FrontendOptions &Opts) {
|
||||
// Figure out where to get and map in the main file.
|
||||
if (Opts.EmptyInputOnly) {
|
||||
const char *EmptyStr = "";
|
||||
llvm::MemoryBuffer *SB =
|
||||
llvm::MemoryBuffer::getMemBuffer(EmptyStr, EmptyStr, "<empty input>");
|
||||
SourceMgr.createMainFileIDForMemBuffer(SB);
|
||||
} else if (InputFile != "-") {
|
||||
if (InputFile != "-") {
|
||||
const FileEntry *File = FileMgr.getFile(InputFile);
|
||||
if (File) SourceMgr.createMainFileID(File, SourceLocation());
|
||||
if (SourceMgr.getMainFileID().isInvalid()) {
|
||||
|
|
|
@ -288,6 +288,7 @@ static const char *getActionName(frontend::ActionKind Kind) {
|
|||
case frontend::FixIt: return "-fixit";
|
||||
case frontend::GeneratePCH: return "-emit-pch";
|
||||
case frontend::GeneratePTH: return "-emit-pth";
|
||||
case frontend::InitOnly: return "-init-only";
|
||||
case frontend::ParseNoop: return "-parse-noop";
|
||||
case frontend::ParsePrintCallbacks: return "-parse-print-callbacks";
|
||||
case frontend::ParseSyntaxOnly: return "-fsyntax-only";
|
||||
|
@ -310,8 +311,6 @@ static void FrontendOptsToArgs(const FrontendOptions &Opts,
|
|||
Res.push_back("-no-code-completion-debug-printer");
|
||||
if (Opts.DisableFree)
|
||||
Res.push_back("-disable-free");
|
||||
if (Opts.EmptyInputOnly)
|
||||
Res.push_back("-empty-input-only");
|
||||
if (Opts.RelocatablePCH)
|
||||
Res.push_back("-relocatable-pch");
|
||||
if (Opts.ShowHelp)
|
||||
|
@ -878,6 +877,8 @@ ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args, Diagnostic &Diags) {
|
|||
Opts.ProgramAction = frontend::GeneratePCH; break;
|
||||
case OPT_emit_pth:
|
||||
Opts.ProgramAction = frontend::GeneratePTH; break;
|
||||
case OPT_init_only:
|
||||
Opts.ProgramAction = frontend::InitOnly; break;
|
||||
case OPT_parse_noop:
|
||||
Opts.ProgramAction = frontend::ParseNoop; break;
|
||||
case OPT_parse_print_callbacks:
|
||||
|
@ -915,7 +916,6 @@ ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args, Diagnostic &Diags) {
|
|||
Opts.DebugCodeCompletionPrinter =
|
||||
!Args.hasArg(OPT_no_code_completion_debug_printer);
|
||||
Opts.DisableFree = Args.hasArg(OPT_disable_free);
|
||||
Opts.EmptyInputOnly = Args.hasArg(OPT_empty_input_only);
|
||||
|
||||
Opts.FixItLocations.clear();
|
||||
for (arg_iterator it = Args.filtered_begin(OPT_fixit_at),
|
||||
|
|
|
@ -22,6 +22,18 @@
|
|||
#include "llvm/Support/raw_ostream.h"
|
||||
using namespace clang;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Custom Actions
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
ASTConsumer *InitOnlyAction::CreateASTConsumer(CompilerInstance &CI,
|
||||
llvm::StringRef InFile) {
|
||||
return new ASTConsumer();
|
||||
}
|
||||
|
||||
void InitOnlyAction::ExecuteAction() {
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// AST Consumer Actions
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
|
@ -74,6 +74,7 @@ static FrontendAction *CreateFrontendBaseAction(CompilerInstance &CI) {
|
|||
case GeneratePCH: return new GeneratePCHAction();
|
||||
case GeneratePTH: return new GeneratePTHAction();
|
||||
case InheritanceView: return new InheritanceViewAction();
|
||||
case InitOnly: return new InitOnlyAction();
|
||||
case ParseNoop: return new ParseOnlyAction();
|
||||
case ParsePrintCallbacks: return new PrintParseAction();
|
||||
case ParseSyntaxOnly: return new SyntaxOnlyAction();
|
||||
|
|
Загрузка…
Ссылка в новой задаче