summaryrefslogtreecommitdiff
path: root/lib/profile/InstrProfiling.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/profile/InstrProfiling.c')
-rw-r--r--lib/profile/InstrProfiling.c37
1 files changed, 2 insertions, 35 deletions
diff --git a/lib/profile/InstrProfiling.c b/lib/profile/InstrProfiling.c
index 41818ab8a..c897052d8 100644
--- a/lib/profile/InstrProfiling.c
+++ b/lib/profile/InstrProfiling.c
@@ -9,40 +9,6 @@
#include "InstrProfiling.h"
-/* TODO: Calculate these with linker magic. */
-static const __llvm_pgo_data *First = NULL;
-static const __llvm_pgo_data *Last = NULL;
-
-/*!
- * \brief Register an instrumented function.
- *
- * Calls to this are emitted by clang with -fprofile-instr-generate. Such
- * calls are only required (and only emitted) on targets where we haven't
- * implemented linker magic to find the bounds of the section.
- *
- * For now, that's all targets.
- */
-void __llvm_pgo_register_function(void *Data_) {
- /* TODO: Only emit this function if we can't use linker magic. */
- const __llvm_pgo_data *Data = (__llvm_pgo_data*)Data_;
- if (!First || Data < First)
- First = Data;
- if (!Last || Data >= Last)
- Last = Data + 1;
-}
-
-/*! \brief Get the first instrumentation record. */
-static const __llvm_pgo_data *getFirst() {
- /* TODO: Use extern + linker magic instead of a static variable. */
- return First;
-}
-
-/*! \brief Get the last instrumentation record. */
-static const __llvm_pgo_data *getLast() {
- /* TODO: Use extern + linker magic instead of a static variable. */
- return Last;
-}
-
/* TODO: void __llvm_pgo_get_size_for_buffer(void); */
static void writeFunction(FILE *OutputFile, const __llvm_pgo_data *Data) {
@@ -64,6 +30,7 @@ void __llvm_pgo_write_buffer(FILE *OutputFile) {
*/
const __llvm_pgo_data *I, *E;
- for (I = getFirst(), E = getLast(); I != E; ++I)
+ for (I = __llvm_pgo_data_begin(), E = __llvm_pgo_data_end();
+ I != E; ++I)
writeFunction(OutputFile, I);
}