[PATCH] D9009: Value profiling compiler-rt changes

David Li via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 11 16:57:13 PST 2015


davidxl added inline comments.

================
Comment at: lib/profile/InstrProfiling.c:81
@@ +80,3 @@
+void __llvm_profile_instrument_target(uint64_t TargetValue, void *Data_,
+  uint32_t CounterIndex) {
+
----------------
Can we make the CounterIndex relative to the value kind? Why is value kind parameter not passed in?

================
Comment at: lib/profile/InstrProfiling.c:87
@@ +86,3 @@
+
+  if (!Data->ValueCounters) {
+    uint64_t NumVSites = 0;
----------------
This part of the code is cold -- move it out of line into another routine.

================
Comment at: lib/profile/InstrProfiling.c:119
@@ +118,3 @@
+
+  if (VDataCount >= UCHAR_MAX)
+    return;
----------------
This may still be too large. If VDataCount is this large, the runtime overhead will be substantial. 

In the future, we should enhance it with the following algoithm:
1) reserve the first vdata node to do book keeping -- i.e. tracking number of time values get dropped due to too long a list
2) When the number of dropping times reaches a threshold, sort the existing linked list to make it in descending order, and zero out the last X entries.

Not needed for the first version.

================
Comment at: lib/profile/InstrProfiling.h:33
@@ +32,3 @@
+  VK_FIRST = VK_IndirectCallTarget,
+  VK_LAST = VK_IndirectCallTarget
+} __llvm_profile_value_kind;
----------------
Make the enumerators name the same as the LLVM counter part -- this allows future refactoring.


http://reviews.llvm.org/D9009





More information about the llvm-commits mailing list