[llvm] r269437 - [PGO] Add flags to control IRPGO warnings.
Vedant Kumar via llvm-commits
llvm-commits at lists.llvm.org
Fri May 13 11:11:52 PDT 2016
> On May 13, 2016, at 10:26 AM, Rong Xu via llvm-commits <llvm-commits at lists.llvm.org> wrote:
>
> Author: xur
> Date: Fri May 13 12:26:06 2016
> New Revision: 269437
>
> URL: http://llvm.org/viewvc/llvm-project?rev=269437&view=rev
> Log:
> [PGO] Add flags to control IRPGO warnings.
> Currently there is no reasonable way to control the warnings in the 'use' phase
> of the IRPGO pass. This is problematic because the output can be somewhat
> spammy. This patch adds some flags which allow us to optionally disable these
> warnings. The current upstream behavior will remain the default.
>
> Patch by Jake VanAdrighem (jvanadrighem at gmail.com)
>
> Differential Revision: http://reviews.llvm.org/D20195
>
> Modified:
> llvm/trunk/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
>
> Modified: llvm/trunk/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/PGOInstrumentation.cpp?rev=269437&r1=269436&r2=269437&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Instrumentation/PGOInstrumentation.cpp (original)
> +++ llvm/trunk/lib/Transforms/Instrumentation/PGOInstrumentation.cpp Fri May 13 12:26:06 2016
> @@ -111,6 +111,16 @@ static cl::opt<unsigned> MaxNumAnnotatio
> cl::desc("Max number of annotations for a single indirect "
> "call callsite"));
>
> +// Command line option to enable/disable the warning about missing profile
> +// information.
> +static cl::opt<bool> NoPGOWarnMissing("no-pgo-warn-missing", cl::init(false),
> + cl::Hidden);
> +
> +// Command line option to enable/disable the warning about a hash mismatch in
> +// the profile data.
> +static cl::opt<bool> NoPGOWarnMismatch("no-pgo-warn-mismatch", cl::init(false),
> + cl::Hidden);
> +
> namespace {
> class PGOInstrumentationGenLegacyPass : public ModulePass {
> public:
> @@ -575,11 +585,16 @@ bool PGOUseFunc::readCounters(IndexedIns
> ErrorOr<InstrProfRecord> Result =
> PGOReader->getInstrProfRecord(FuncInfo.FuncName, FuncInfo.FunctionHash);
> if (std::error_code EC = Result.getError()) {
> - if (EC == instrprof_error::unknown_function)
> + if (EC == instrprof_error::unknown_function) {
> NumOfPGOMissing++;
> - else if (EC == instrprof_error::hash_mismatch ||
> - EC == llvm::instrprof_error::malformed)
> + if (NoPGOWarnMissing)
> + return false;
> + } else if (EC == instrprof_error::hash_mismatch ||
> + EC == llvm::instrprof_error::malformed) {
Now that I'm taking a closer look at this, this ^ seems weird.
We can only see "malformed" here if InstrProfReaderIndex<HashTableImpl>::getRecords() finds `FuncName` in its table, but can't find any records for the corresponding function.
Is this really a recoverable error?
vedant
> NumOfPGOMismatch++;
> + if (NoPGOWarnMismatch)
> + return false;
> + }
>
> std::string Msg = EC.message() + std::string(" ") + F.getName().str();
> Ctx.diagnose(
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list