david-xl wrote:

> > > > > > David says the itanium remapper file was only used once during gcc 
> > > > > > to llvm transition, so not relevant here.
> > > > > 
> > > > > 
> > > > > I believe it was actually for the libstdc++ to libc++ transition (see 
> > > > > https://reviews.llvm.org/D51247 and https://reviews.llvm.org/D51240).
> > > > > If it is broken we'll at least want to add a FIXME there.
> > > > 
> > > > 
> > > > Yes, I meant libstdc++ to libc++ transition. Why source line is this 
> > > > comment addressing? I take take a look the changes/comments there.
> > > 
> > > 
> > > Sorry for the misinformation, and thanks for the Phab links.
> > > I think the itanium remapper needs a `:` -> `;` update (going to update 
> > > this PR and related tests), since (for local-linkage functions) the 
> > > function name used to look up profiles should use `;` delimiter.
> > 
> > 
> > > > > > David says the itanium remapper file was only used once during gcc 
> > > > > > to llvm transition, so not relevant here.
> > > > > 
> > > > > 
> > > > > I believe it was actually for the libstdc++ to libc++ transition (see 
> > > > > https://reviews.llvm.org/D51247 and https://reviews.llvm.org/D51240).
> > > > > If it is broken we'll at least want to add a FIXME there.
> > > > 
> > > > 
> > > > Yes, I meant libstdc++ to libc++ transition. Why source line is this 
> > > > comment addressing? I take take a look the changes/comments there.
> > > 
> > > 
> > > Sorry for the misinformation, and thanks for the Phab links.
> > > I think the itanium remapper needs a `:` -> `;` update (going to update 
> > > this PR and related tests), since (for local-linkage functions) the 
> > > function name used to look up profiles should use `;` delimiter.
> > 
> > 
> > The remapper is not aware of any internal symbol mangling scheme, so those 
> > entires won't be tracked by it. In other words, there is no need to change 
> > anything there, I think.
> 
> Not updating Itanium remapper should work for PGO counter matching until the 
> next transition (details below); for consistency I just updated Itanium 
> remapper's `extractName` to use semicolon.
> 
> The details
> 
> * For PGO counter matching, instr prof reader 
> [asks](https://github.com/llvm/llvm-project/blob/32ec5fbfed32f37aa070ee38e9b038bd84ca6479/llvm/lib/ProfileData/InstrProfReader.cpp#L1339)
>  read remapper for a record.
> * Only with a remapping file provided (specified by 
> `-fprofile-remapping-file`), a itanium remap reader is constructed. And when 
> remapping file is not specified, a no-op remap reader is constructed. [source 
> code](https://github.com/llvm/llvm-project/blob/32ec5fbfed32f37aa070ee38e9b038bd84ca6479/llvm/lib/ProfileData/InstrProfReader.cpp#L1306-L1314)
> * When remapping file is specified, remap reader tries to extract the mangled 
> name (removing `filename` prefix`) by finding a `:`(no longer used as 
> delimiter for newer profiles) and remaps the mangled name. If`:`is not 
> updated to`;`, the name is remapped to itself (irpgo func format) and 
> profiles could still be found. However, not updating means remapping becomes 
> no-op for local-linkage functions, which is fine after the transition 
> complete but doesn't work for new transitions (if it happens..)

Sounds good.  I checked the history of remapping for instrProfile. For IR PGO, 
there is basically no need to do so as the instrumentation and profile-use 
should be in-sync. For front-end instrumentation, there seem to be some use 
cases to use out of sync profile: https://reviews.llvm.org/D51240. The 
remapping is also best effort -- i.e. not guarantee to keep all the old profile 
e.g. icall targets are not supported. 

https://github.com/llvm/llvm-project/pull/74008
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to