[PATCH] D25687: [PGO] fix bogus warning for merging empty llvm profile file
Rong Xu via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 18 11:39:54 PDT 2016
On Tue, Oct 18, 2016 at 11:38 AM, Vedant Kumar <vsk at apple.com> wrote:
>
> > On Oct 18, 2016, at 11:34 AM, Rong Xu <xur at google.com> wrote:
> >
> >
> >
> > On Tue, Oct 18, 2016 at 11:14 AM, Vedant Kumar <vsk at apple.com> wrote:
> > vsk added a comment.
> >
> > Thanks for splitting the patch up. Please upload diffs with more context
> in the future (e.g git diff -U1000).
> >
> > Sorry about this. Will add -U99999 later.
> >
> >
> >
> > ================
> > Comment at: include/llvm/ProfileData/InstrProfReader.h:108
> > + /// instrprof file. Nullptr will be returned for an empty profile
> file.
> > static Expected<std::unique_ptr<InstrProfReader>> create(const Twine
> &Path);
> >
> > ----------------
> > This breaks CoverageMapping::load(), and creates an inconsistency
> between the API's for InstrProfReader::create and
> IndexedInstrProfReader::create (one can successfully return nullptr, the
> other can't).
> >
> > I don't see why this breaks CoverageMapping::load() as this API is not
> referenced there.
> > It's only called in llvm-profiledata.cpp.
>
> Sorry, my mistake.
>
>
> >
> > The difference InstrProfReader::create and
> IndexedInstrProfReader::create are intentional as the later will be
> referenced in CoverageMapping, Clang PGO and IR PGO etc.
> >
> >
> > I'd prefer for this functionality to be implemented via a new
> instrprof_error. Clients can opt into handling this as a 'soft'/recoverable
> error, or fail with an appropriate diagnostic packaged up by the Error.
> >
> > yes. this also works.
>
> I still prefer this if only for the API consistency.
>
Sure. I'll update the patch with this approach.
thanks!
>
> thanks,
> vedant
>
> >
> >
> >
> > ================
> > Comment at: tools/llvm-profdata/llvm-profdata.cpp:149
> > + if (!Reader)
> > + return;
> > bool IsIRProfile = Reader->isIRLevelProfile();
> > ----------------
> > In llvm-profdata's loadInput, you could write:
> >
> > ```
> > if ((Error E = ReaderOrErr.takeError())) {
> > if (E != instrprof_error::empty_profile)
> > WC->Err = std::move(E);
> > return;
> > }
> > ```
> >
> >
> > https://reviews.llvm.org/D25687
> >
> >
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161018/a0d24c98/attachment.html>
More information about the llvm-commits
mailing list