aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2011-01-29 21:21:49 +0000
committerNico Weber <nicolasweber@gmx.de>2011-01-29 21:21:49 +0000
commit741bf9d872dfe9bdbf5b7e65bc84b97fb17bb328 (patch)
tree22937669eb86bb8a890e6c4d16e00603305a6e6c /clang/lib/Frontend/CompilerInvocation.cpp
parent537fdceded86b5c4c06eb0ac0ff80189c82d7193 (diff)
downloadllvm-741bf9d872dfe9bdbf5b7e65bc84b97fb17bb328.zip
llvm-741bf9d872dfe9bdbf5b7e65bc84b97fb17bb328.tar.gz
llvm-741bf9d872dfe9bdbf5b7e65bc84b97fb17bb328.tar.bz2
Support for -plugin-arg- with -add-plugin
llvm-svn: 124551
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r--clang/lib/Frontend/CompilerInvocation.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
index 28cae64..3fdbc16 100644
--- a/clang/lib/Frontend/CompilerInvocation.cpp
+++ b/clang/lib/Frontend/CompilerInvocation.cpp
@@ -438,6 +438,10 @@ static void FrontendOptsToArgs(const FrontendOptions &Opts,
for (unsigned i = 0, e = Opts.AddPluginActions.size(); i != e; ++i) {
Res.push_back("-add-plugin");
Res.push_back(Opts.AddPluginActions[i]);
+ for(unsigned ai = 0, ae = Opts.AddPluginArgs.size(); ai != ae; ++ai) {
+ Res.push_back("-plugin-arg-" + Opts.AddPluginActions[i]);
+ Res.push_back(Opts.AddPluginArgs[i][ai]);
+ }
}
for (unsigned i = 0, e = Opts.ASTMergeFiles.size(); i != e; ++i) {
Res.push_back("-ast-merge");
@@ -1106,6 +1110,14 @@ static InputKind ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args,
}
Opts.AddPluginActions = Args.getAllArgValues(OPT_add_plugin);
+ Opts.AddPluginArgs.resize(Opts.AddPluginActions.size());
+ for (int i = 0, e = Opts.AddPluginActions.size(); i != e; ++i) {
+ for (arg_iterator it = Args.filtered_begin(OPT_plugin_arg),
+ end = Args.filtered_end(); it != end; ++it) {
+ if ((*it)->getValue(Args, 0) == Opts.AddPluginActions[i])
+ Opts.AddPluginArgs[i].push_back((*it)->getValue(Args, 1));
+ }
+ }
if (const Arg *A = Args.getLastArg(OPT_code_completion_at)) {
Opts.CodeCompletionAt =