[PATCH] D18624: [PGO] PGOFuncName meta data if PGOFuncName is different from function's raw name.
Rong Xu via cfe-commits
cfe-commits at lists.llvm.org
Thu Apr 21 12:00:51 PDT 2016
xur added a comment.
I was using spec-run where the command line has the pathless filename.
The source in Atam's command-line has the absolute path.
In meta-data creation, we used Module's getSourceFileName() which has the
source name appeared in the command line (in this case, a full patch name).
While in Clang's setFuncName, it uses CGM.getCodeGenOpts().MainFileName.
This string strips the path from the source.
I can expand function createPGOFuncNameMetadata() to handle this (I mean
using the stripped name).
But I need to point out that stripping the patch may not a good idea as it
greatly increases the change name conflicts:
If we have
static bar() in dir1/foo.c
and
static bar() in dir2/foo.c
if the user compiler with:
> clang ... dir1/foo.c
> clang ... dir2/foo.c
With Clang's scheme, both functions would have PGOFuncName of foo.c:bar().
In IR instrumentation, we will have different name in this case:
dir1/foo.c:bar(), and dir2/foo.c:bar()
Of course, if the user compiles the code the following way:
> cd dir1; clang foo.c
> cd ../dir2; clang foo.c
we will have conflict for both instrumentation.
In this case, we can suggestion the user to have the relative path in the
build line.
http://reviews.llvm.org/D18624
More information about the cfe-commits
mailing list