[PGO] More comments how function pointers for indirect calls are mapped
authorAdam Nemet <anemet@apple.com>
Mon, 28 Mar 2016 22:16:29 +0000 (22:16 +0000)
committerAdam Nemet <anemet@apple.com>
Mon, 28 Mar 2016 22:16:29 +0000 (22:16 +0000)
to function names

Summary:
Hopefully this will make it easier for the next person to figure all
this out...

Reviewers: bogner, davidxl

Subscribers: davidxl, cfe-commits

Differential Revision: http://reviews.llvm.org/D18489

llvm-svn: 264680

compiler-rt/lib/profile/InstrProfData.inc

index c4a7052..6cd9450 100644 (file)
@@ -133,6 +133,15 @@ VALUE_PROF_FUNC_PARAM(uint32_t, CounterIndex, Type::getInt32Ty(Ctx))
 #else
 #define INSTR_PROF_DATA_DEFINED
 #endif
+/* For indirect function call value profiling, the address 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.  Typically, this happens
+ * when the the raw profile data is read during profile merging.
+ *
+ * For this remapping the ProfData is used.  ProfData contains both the function
+ * name hash and the function address.
+ */
 VALUE_PROF_KIND(IPVK_IndirectCallTarget, 0)
 /* These two kinds must be the last to be
  * declared. This is to make sure the string