davidxl added inline comments.

================
Comment at: lib/CodeGen/CodeGenPGO.cpp:758
@@ -757,1 +757,3 @@
 
+  // During instrumentation, function pointers are collected for the different
+  // indirect call targets.  Then as part of the conversion from raw to merged
----------------
anemet wrote:
> davidxl wrote:
> > CodeGenPGO::valueProfile is a common API which can also be used for other 
> > kinds of value profile, so the comments belong to the callsite of this 
> > method in CGCall.cpp.
> > 
> > Suggested wording:
> > 
> > For indirect function call value profiling, the addresses of the target 
> > functions are profiled by the instrumented code. The target addresses are 
> > written in the raw profile data and converted to target function name's MD5 
> > hash by the profile reader during deserialization.
> Hi David,
> 
> Thanks for taking a look.
> 
> I don't mind rewording the comment if you have some specific issues but your 
> version drops many of the details that was painful for me to discover.  I 
> carefully worded my comment to describe some of the design details for 
> indirect profiling that are not covered elsewhere:
> 
> 1) the remapping from function pointer to hashes of function names happens 
> during profdata merging
> 
>   It was surprisingly hard to figure out what the PGO file contained for 
> indirect call targets: function pointers or func name hashes?  And of course 
> as stated, the answer is -- it depends.
> 
> 2) the remapping happens pretty deep in the infrastructure code during 
> deserializing of the rawdata
> 
>   I was looking at several more logical places to find where this happens and 
> this was a bit unexpected location for this functionality.
> 
> 3) how do we know the function addresses necessary for the mapping from 
> function address -> func name -> hash
> 
>   The entire code to populate the FunctionAddr using macro magic in 
> InstrProfiling::getOrCreateRegionCounters is pretty hard to follow.  I much 
> rather have an overview of the logic somewhere centrally.
> 
> From the above list I feel that your version dropped 1 and 3 and only kept 2. 
>  Of course, feel free to add more context to my comments and fix 
> inaccuracies/oversimplifications but I would want want to drop any of the 
> points mentioned above.
> 
> Thanks.
Actually bullet 1 is not dropped from my suggested version: each time when a 
raw profile data is read, the reader interface will covert the address into MD5 
-- profile merging is simply a user of the reader. 

About bullet 3, it is ok to add it if you think it is useful. ( I did not 
suggest it because ProfData is needed here is not for the purpose of 
conversion, but to pass the context for the runtime to find/set the counter 
arrays.)


http://reviews.llvm.org/D18489



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to