[PATCH] D13329: [PGO]: Eliminate __llvm_profile_register calls for Linux (compiler_rt)
David Li via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 6 11:33:46 PDT 2015
davidxl updated this revision to Diff 36641.
davidxl added a comment.
Make new change strictly limited to linux platform.
http://reviews.llvm.org/D13329
Files:
lib/profile/CMakeLists.txt
lib/profile/InstrProfilingPlatformLinux.c
lib/profile/InstrProfilingPlatformOther.c
Index: lib/profile/InstrProfilingPlatformOther.c
===================================================================
--- lib/profile/InstrProfilingPlatformOther.c
+++ lib/profile/InstrProfilingPlatformOther.c
@@ -9,7 +9,7 @@
#include "InstrProfiling.h"
-#if !defined(__APPLE__)
+#if !defined(__APPLE__) && !defined(__linux__)
#include <stdlib.h>
static const __llvm_profile_data *DataFirst = NULL;
Index: lib/profile/InstrProfilingPlatformLinux.c
===================================================================
--- /dev/null
+++ lib/profile/InstrProfilingPlatformLinux.c
@@ -0,0 +1,48 @@
+/*===- InstrProfilingPlatformLinux.c - Profile data Linux platform ------===*\
+|*
+|* The LLVM Compiler Infrastructure
+|*
+|* This file is distributed under the University of Illinois Open Source
+|* License. See LICENSE.TXT for details.
+|*
+\*===----------------------------------------------------------------------===*/
+
+#include "InstrProfiling.h"
+
+#if defined(__linux__)
+#include <stdlib.h>
+
+extern __llvm_profile_data __start___llvm_prf_data
+ __attribute__((visibility("hidden")));
+extern __llvm_profile_data __stop___llvm_prf_data
+ __attribute__((visibility("hidden")));
+extern uint64_t __start___llvm_prf_cnts __attribute__((visibility("hidden")));
+extern uint64_t __stop___llvm_prf_cnts __attribute__((visibility("hidden")));
+extern char __start___llvm_prf_names __attribute__((visibility("hidden")));
+extern char __stop___llvm_prf_names __attribute__((visibility("hidden")));
+
+__attribute__((visibility("hidden"))) const __llvm_profile_data *
+__llvm_profile_begin_data(void) {
+ return &__start___llvm_prf_data;
+}
+__attribute__((visibility("hidden"))) const __llvm_profile_data *
+__llvm_profile_end_data(void) {
+ return &__stop___llvm_prf_data;
+}
+__attribute__((visibility("hidden"))) const char *__llvm_profile_begin_names(
+ void) {
+ return &__start___llvm_prf_names;
+}
+__attribute__((visibility("hidden"))) const char *__llvm_profile_end_names(
+ void) {
+ return &__stop___llvm_prf_names;
+}
+__attribute__((visibility("hidden"))) uint64_t *__llvm_profile_begin_counters(
+ void) {
+ return &__start___llvm_prf_cnts;
+}
+__attribute__((visibility("hidden"))) uint64_t *__llvm_profile_end_counters(
+ void) {
+ return &__stop___llvm_prf_cnts;
+}
+#endif
Index: lib/profile/CMakeLists.txt
===================================================================
--- lib/profile/CMakeLists.txt
+++ lib/profile/CMakeLists.txt
@@ -6,6 +6,7 @@
InstrProfilingBuffer.c
InstrProfilingFile.c
InstrProfilingPlatformDarwin.c
+ InstrProfilingPlatformLinux.c
InstrProfilingPlatformOther.c
InstrProfilingRuntime.cc
InstrProfilingUtil.c)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D13329.36641.patch
Type: text/x-patch
Size: 2725 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151006/93b8c893/attachment.bin>
More information about the llvm-commits
mailing list