Add two options for playing with modules.
llvm-svn: 111166
This commit is contained in:
parent
b61c07aca0
commit
6ebb51a41d
|
@ -350,8 +350,13 @@ def rewrite_objc : Flag<"-rewrite-objc">,
|
||||||
def rewrite_macros : Flag<"-rewrite-macros">,
|
def rewrite_macros : Flag<"-rewrite-macros">,
|
||||||
HelpText<"Expand macros without full preprocessing">;
|
HelpText<"Expand macros without full preprocessing">;
|
||||||
|
|
||||||
|
def create_module : Flag<"-create-module">,
|
||||||
|
HelpText<"Create a module definition file">;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def import_module : Separate<"-import-module">,
|
||||||
|
HelpText<"Import a module definition file">;
|
||||||
|
|
||||||
def relocatable_pch : Flag<"-relocatable-pch">,
|
def relocatable_pch : Flag<"-relocatable-pch">,
|
||||||
HelpText<"Whether to build a relocatable precompiled header">;
|
HelpText<"Whether to build a relocatable precompiled header">;
|
||||||
def chained_pch : Flag<"-chained-pch">,
|
def chained_pch : Flag<"-chained-pch">,
|
||||||
|
|
|
@ -25,6 +25,7 @@ namespace frontend {
|
||||||
ASTPrintXML, ///< Parse ASTs and print them in XML.
|
ASTPrintXML, ///< Parse ASTs and print them in XML.
|
||||||
ASTView, ///< Parse ASTs and view them in Graphviz.
|
ASTView, ///< Parse ASTs and view them in Graphviz.
|
||||||
BoostCon, ///< BoostCon mode.
|
BoostCon, ///< BoostCon mode.
|
||||||
|
CreateModule, ///< Create module definition
|
||||||
DumpRawTokens, ///< Dump out raw tokens.
|
DumpRawTokens, ///< Dump out raw tokens.
|
||||||
DumpTokens, ///< Dump out preprocessed tokens.
|
DumpTokens, ///< Dump out preprocessed tokens.
|
||||||
EmitAssembly, ///< Emit a .s file.
|
EmitAssembly, ///< Emit a .s file.
|
||||||
|
@ -109,6 +110,9 @@ public:
|
||||||
/// \brief The list of AST files to merge.
|
/// \brief The list of AST files to merge.
|
||||||
std::vector<std::string> ASTMergeFiles;
|
std::vector<std::string> ASTMergeFiles;
|
||||||
|
|
||||||
|
/// \brief The list of modules to import.
|
||||||
|
std::vector<std::string> Modules;
|
||||||
|
|
||||||
/// \brief A list of arguments to forward to LLVM's option processing; this
|
/// \brief A list of arguments to forward to LLVM's option processing; this
|
||||||
/// should only be used for debugging and experimental features.
|
/// should only be used for debugging and experimental features.
|
||||||
std::vector<std::string> LLVMArgs;
|
std::vector<std::string> LLVMArgs;
|
||||||
|
|
|
@ -319,6 +319,7 @@ static const char *getActionName(frontend::ActionKind Kind) {
|
||||||
case frontend::ASTPrintXML: return "-ast-print-xml";
|
case frontend::ASTPrintXML: return "-ast-print-xml";
|
||||||
case frontend::ASTView: return "-ast-view";
|
case frontend::ASTView: return "-ast-view";
|
||||||
case frontend::BoostCon: return "-boostcon";
|
case frontend::BoostCon: return "-boostcon";
|
||||||
|
case frontend::CreateModule: return "-create-module";
|
||||||
case frontend::DumpRawTokens: return "-dump-raw-tokens";
|
case frontend::DumpRawTokens: return "-dump-raw-tokens";
|
||||||
case frontend::DumpTokens: return "-dump-tokens";
|
case frontend::DumpTokens: return "-dump-tokens";
|
||||||
case frontend::EmitAssembly: return "-S";
|
case frontend::EmitAssembly: return "-S";
|
||||||
|
@ -422,6 +423,10 @@ static void FrontendOptsToArgs(const FrontendOptions &Opts,
|
||||||
Res.push_back("-ast-merge");
|
Res.push_back("-ast-merge");
|
||||||
Res.push_back(Opts.ASTMergeFiles[i]);
|
Res.push_back(Opts.ASTMergeFiles[i]);
|
||||||
}
|
}
|
||||||
|
for (unsigned i = 0, e = Opts.Modules.size(); i != e; ++i) {
|
||||||
|
Res.push_back("-import-module");
|
||||||
|
Res.push_back(Opts.Modules[i]);
|
||||||
|
}
|
||||||
for (unsigned i = 0, e = Opts.LLVMArgs.size(); i != e; ++i) {
|
for (unsigned i = 0, e = Opts.LLVMArgs.size(); i != e; ++i) {
|
||||||
Res.push_back("-mllvm");
|
Res.push_back("-mllvm");
|
||||||
Res.push_back(Opts.LLVMArgs[i]);
|
Res.push_back(Opts.LLVMArgs[i]);
|
||||||
|
@ -1015,6 +1020,8 @@ static InputKind ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args,
|
||||||
Opts.ProgramAction = frontend::RunAnalysis; break;
|
Opts.ProgramAction = frontend::RunAnalysis; break;
|
||||||
case OPT_Eonly:
|
case OPT_Eonly:
|
||||||
Opts.ProgramAction = frontend::RunPreprocessorOnly; break;
|
Opts.ProgramAction = frontend::RunPreprocessorOnly; break;
|
||||||
|
case OPT_create_module:
|
||||||
|
Opts.ProgramAction = frontend::CreateModule; break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1058,6 +1065,7 @@ static InputKind ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args,
|
||||||
Opts.ASTMergeFiles = Args.getAllArgValues(OPT_ast_merge);
|
Opts.ASTMergeFiles = Args.getAllArgValues(OPT_ast_merge);
|
||||||
Opts.LLVMArgs = Args.getAllArgValues(OPT_mllvm);
|
Opts.LLVMArgs = Args.getAllArgValues(OPT_mllvm);
|
||||||
Opts.FixWhatYouCan = Args.hasArg(OPT_fix_what_you_can);
|
Opts.FixWhatYouCan = Args.hasArg(OPT_fix_what_you_can);
|
||||||
|
Opts.Modules = Args.getAllArgValues(OPT_import_module);
|
||||||
|
|
||||||
InputKind DashX = IK_None;
|
InputKind DashX = IK_None;
|
||||||
if (const Arg *A = Args.getLastArg(OPT_x)) {
|
if (const Arg *A = Args.getLastArg(OPT_x)) {
|
||||||
|
|
|
@ -39,6 +39,7 @@ static FrontendAction *CreateFrontendBaseAction(CompilerInstance &CI) {
|
||||||
case ASTPrintXML: return new ASTPrintXMLAction();
|
case ASTPrintXML: return new ASTPrintXMLAction();
|
||||||
case ASTView: return new ASTViewAction();
|
case ASTView: return new ASTViewAction();
|
||||||
case BoostCon: return new BoostConAction();
|
case BoostCon: return new BoostConAction();
|
||||||
|
case CreateModule: return 0;
|
||||||
case DumpRawTokens: return new DumpRawTokensAction();
|
case DumpRawTokens: return new DumpRawTokensAction();
|
||||||
case DumpTokens: return new DumpTokensAction();
|
case DumpTokens: return new DumpTokensAction();
|
||||||
case EmitAssembly: return new EmitAssemblyAction();
|
case EmitAssembly: return new EmitAssemblyAction();
|
||||||
|
|
Loading…
Reference in New Issue