Skip to content

Commit 742de5f

Browse files
authored
Merge pull request #34 from vjayathirtha-nv/release_60
Add -Minfo, -Mneginfo flags.
2 parents 79937ec + 1dd735e commit 742de5f

File tree

3 files changed

+66
-0
lines changed

3 files changed

+66
-0
lines changed

include/clang/Basic/DiagnosticDriverKinds.td

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,8 @@ def warn_drv_omp_offload_target_duplicate : Warning<
202202
InGroup<OpenMPTarget>;
203203
def err_drv_bitcode_unsupported_on_toolchain : Error<
204204
"-fembed-bitcode is not supported on versions of iOS prior to 6.0">;
205+
def err_drv_clang_unsupported_minfo_arg : Error<
206+
"'%0' option does not support '%1' value">;
205207

206208
def warn_O4_is_O3 : Warning<"-O4 is equivalent to -O3">, InGroup<Deprecated>;
207209
def warn_drv_optimization_value : Warning<"optimization level '%0' is not supported; using '%1%2' instead">,

include/clang/Driver/Options.td

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2846,6 +2846,16 @@ def Mfreeform_off: Flag<["-"], "Mnofreeform">, Group<fortran_format_Group>,
28462846
HelpText<"Disable free-form format for Fortran">,
28472847
Flags<[HelpHidden]>;
28482848

2849+
def Minfo_EQ : CommaJoined<["-"], "Minfo=">,
2850+
HelpText<"Diagnostic information about successful optimizations">,
2851+
Values<"all,vect,inline">;
2852+
def Minfoall : Flag<["-"], "Minfo">,
2853+
HelpText<"Diagnostic information about all successful optimizations">;
2854+
def Mneginfo_EQ : CommaJoined<["-"], "Mneginfo=">,
2855+
HelpText<"Diagnostic information about missed optimizations">,
2856+
Values<"all,vect,inline">;
2857+
def Mneginfoall : Flag<["-"], "Mneginfo">,
2858+
HelpText<"Diagnostic information about all missed optimizations">;
28492859
def Mipa: Joined<["-"], "Mipa">, Group<pgi_fortran_Group>;
28502860
def Mstackarrays: Joined<["-"], "Mstack_arrays">, Group<pgi_fortran_Group>;
28512861
def pc: JoinedOrSeparate<["-"], "pc">, Group<pgi_fortran_Group>;

lib/Driver/ToolChains/Clang.cpp

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3295,6 +3295,60 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
32953295
Args.AddLastArg(CmdArgs, options::OPT_fveclib);
32963296
#endif
32973297

3298+
std::string PassRemarkVal(""), PassRemarkOpt("");
3299+
if (Args.getLastArg(options::OPT_Minfoall)) {
3300+
PassRemarkVal = ".*";
3301+
Args.ClaimAllArgs(options::OPT_Minfoall);
3302+
} else if (Arg *A = Args.getLastArg(options::OPT_Minfo_EQ)) {
3303+
for (const StringRef &val : A->getValues()) {
3304+
if(val.equals("all")) {
3305+
PassRemarkVal = ".*";
3306+
break;
3307+
} else if(val.equals("inline") || val.equals("vect")) {
3308+
PassRemarkVal += PassRemarkVal.empty() ? "" : "|";
3309+
PassRemarkVal += val;
3310+
} else {
3311+
D.Diag(diag::err_drv_clang_unsupported_minfo_arg)
3312+
<< A->getOption().getName()
3313+
<< val.str();
3314+
break;
3315+
}
3316+
}
3317+
}
3318+
PassRemarkOpt = "-pass-remarks=" + PassRemarkVal;
3319+
CmdArgs.push_back("-mllvm");
3320+
CmdArgs.push_back(Args.MakeArgString(PassRemarkOpt));
3321+
Args.ClaimAllArgs(options::OPT_Minfo_EQ);
3322+
PassRemarkVal.clear();
3323+
PassRemarkOpt.clear();
3324+
3325+
if (Args.getLastArg(options::OPT_Mneginfoall)) {
3326+
PassRemarkVal = ".*";
3327+
Args.ClaimAllArgs(options::OPT_Mneginfoall);
3328+
} else if (Arg *A = Args.getLastArg(options::OPT_Mneginfo_EQ)) {
3329+
for (const StringRef &val : A->getValues()) {
3330+
if(val.equals("all")) {
3331+
PassRemarkVal = ".*";
3332+
break;
3333+
} else if(val.equals("inline") || val.equals("vect")) {
3334+
PassRemarkVal += PassRemarkVal.empty() ? "" : "|";
3335+
PassRemarkVal += val;
3336+
} else {
3337+
D.Diag(diag::err_drv_clang_unsupported_minfo_arg)
3338+
<< A->getOption().getName()
3339+
<< val.str();
3340+
break;
3341+
}
3342+
}
3343+
}
3344+
PassRemarkOpt = "-pass-remarks-missed=" + PassRemarkVal;
3345+
CmdArgs.push_back("-mllvm");
3346+
CmdArgs.push_back(Args.MakeArgString(PassRemarkOpt));
3347+
PassRemarkOpt = "-pass-remarks-analysis=" + PassRemarkVal;
3348+
CmdArgs.push_back("-mllvm");
3349+
CmdArgs.push_back(Args.MakeArgString(PassRemarkOpt));
3350+
Args.ClaimAllArgs(options::OPT_Mneginfo_EQ);
3351+
32983352
if (Args.hasFlag(options::OPT_fmerge_all_constants,
32993353
options::OPT_fno_merge_all_constants, false))
33003354
CmdArgs.push_back("-fmerge-all-constants");

0 commit comments

Comments
 (0)