Index: lib/Driver/Tools.cpp =================================================================== --- lib/Driver/Tools.cpp +++ lib/Driver/Tools.cpp @@ -6102,10 +6102,14 @@ if (SplitDwarf && Output.getType() == types::TY_Object) SplitDebugInfo(getToolChain(), C, *this, JA, Args, Output, SplitDwarfOut); - if (Arg *A = Args.getLastArg(options::OPT_pg)) + if (Arg *A = Args.getLastArg(options::OPT_pg)) { if (Args.hasArg(options::OPT_fomit_frame_pointer)) D.Diag(diag::err_drv_argument_not_allowed_with) << "-fomit-frame-pointer" << A->getAsString(Args); + if (Args.hasArg(options::OPT_finline_functions)) + D.Diag(diag::err_drv_argument_not_allowed_with) << "-finline-functions" + << A->getAsString(Args); + } // Claim some arguments which clang supports automatically. Index: lib/Frontend/CompilerInvocation.cpp =================================================================== --- lib/Frontend/CompilerInvocation.cpp +++ lib/Frontend/CompilerInvocation.cpp @@ -442,7 +442,7 @@ (Opts.OptimizationLevel > 1) ? CodeGenOptions::NormalInlining : CodeGenOptions::OnlyAlwaysInlining); // -fno-inline-functions overrides OptimizationLevel > 1. - Opts.NoInline = Args.hasArg(OPT_fno_inline); + Opts.NoInline = Args.hasArg(OPT_fno_inline) || Args.hasArg(OPT_pg); if (Arg* InlineArg = Args.getLastArg(options::OPT_finline_functions, options::OPT_finline_hint_functions, options::OPT_fno_inline_functions)) {