[llvm] r269437 - [PGO] Add flags to control IRPGO warnings.
Vedant Kumar via llvm-commits
llvm-commits at lists.llvm.org
Fri May 13 11:49:14 PDT 2016
> On May 13, 2016, at 11:47 AM, Rong Xu <xur at google.com> wrote:
>
>
>
> On Fri, May 13, 2016 at 11:11 AM, Vedant Kumar <vsk at apple.com> wrote:
>
> > 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.
>
> You are right. The same error_code that emitted from reading the value profile records is not propagated back to getRecords().
>
>
> Is this really a recoverable error?
>
> So we just skip the pgo-use for this function. I don't see a problem here. Could you explain the concern?
Ok. I wasn't sure if this meant that the profile is too damaged to use or not. This seems fine.
thanks,
vedant
>
>
> 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