@@ -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