[LLVMdev] RFH: passing options from clang down to opt
Diego Novillo
dnovillo at google.com
Tue Oct 1 12:31:11 PDT 2013
I'm trying to add a new option to clang to enable my auto profile
pass. I've added this to Options.td and Driver/Tools.cpp, but I'm not
getting the option -auto-profile in cc1's invocation. I've checked
that the code to push -auto-profile is executed, but if use -v, I
don't see -auto-profile in the cc1 invocation.
Can anyone point me to some document that explains how to pass clang's
options down to opt? Failing that, what option could I look at
copying? I've tried doing what the vectorizer flags do, but they are
used to build the module pass manager, and my pass is just a function
pass.
Do I need to modify the pass manager as well?
Thanks. Diego.
diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td
index a2be903..da932e2 100644
--- a/include/clang/Driver/Options.td
+++ b/include/clang/Driver/Options.td
@@ -351,6 +351,10 @@ def fno_autolink : Flag <["-"], "fno-autolink">,
Group<f_Group>,
Flags<[DriverOption, CC1Option]>,
HelpText<"Disable generation of linker directives for automatic
library linking">;
+def fauto_profile : Flag<["-"], "fauto-profile">, Group<f_Group>,
+ Flags<[DriverOption, CC1Option]>,
+ HelpText<"Enable automatic profile guided optimizations">;
+
def fblocks : Flag<["-"], "fblocks">, Group<f_Group>, Flags<[CC1Option]>,
HelpText<"Enable the 'blocks' language feature">;
def fbootclasspath_EQ : Joined<["-"], "fbootclasspath=">, Group<f_Group>;
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index dd48bc1..729da37 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -3594,6 +3594,11 @@ void Clang::ConstructJob(Compilation &C, const
JobAction &JA,
D.Diag(diag::err_drv_argument_not_allowed_with)
<< "-fomit-frame-pointer" << A->getAsString(Args);
+ if (Args.hasArg(options::OPT_fauto_profile)) {
+ CmdArgs.push_back("-auto-profile");
+ }
+
// Claim some arguments which clang supports automatically.
// -fpch-preprocess is used with gcc to add a special marker in the output to
More information about the llvm-dev
mailing list