[PGO] Compiler-rt cleanup -- introduces macros for various macros

This makes code more readable and be made more portable in the future.
There is no functional change.

llvm-svn: 253845
This commit is contained in:
Xinliang David Li 2015-11-23 04:38:17 +00:00
parent 970fe56e41
commit 6fe18f4fba
9 changed files with 75 additions and 88 deletions

View File

@ -17,7 +17,7 @@ typedef struct ValueProfNode {
struct ValueProfNode *Next;
} ValueProfNode;
__attribute__((visibility("hidden"))) uint64_t __llvm_profile_get_magic(void) {
LLVM_LIBRARY_VISIBILITY uint64_t __llvm_profile_get_magic(void) {
/* Magic number to detect file format and endianness.
*
* Use 255 at one end, since no UTF-8 file can use that character. Avoid 0,
@ -36,18 +36,17 @@ __attribute__((visibility("hidden"))) uint64_t __llvm_profile_get_magic(void) {
/* Return the number of bytes needed to add to SizeInBytes to make it
* the result a multiple of 8.
*/
__attribute__((visibility("hidden"))) uint8_t
LLVM_LIBRARY_VISIBILITY uint8_t
__llvm_profile_get_num_padding_bytes(uint64_t SizeInBytes) {
return 7 & (sizeof(uint64_t) - SizeInBytes % sizeof(uint64_t));
}
__attribute__((visibility("hidden"))) uint64_t
__llvm_profile_get_version(void) {
LLVM_LIBRARY_VISIBILITY uint64_t __llvm_profile_get_version(void) {
/* This should be bumped any time the output format changes. */
return 2;
}
__attribute__((visibility("hidden"))) void __llvm_profile_reset_counters(void) {
LLVM_LIBRARY_VISIBILITY void __llvm_profile_reset_counters(void) {
uint64_t *I = __llvm_profile_begin_counters();
uint64_t *E = __llvm_profile_end_counters();
@ -82,10 +81,9 @@ __attribute__((visibility("hidden"))) void __llvm_profile_reset_counters(void) {
static uint64_t TotalValueDataSize = 0;
#ifdef _MIPS_ARCH
__attribute__((visibility("hidden"))) void
LLVM_LIBRARY_VISIBILITY void
__llvm_profile_instrument_target(uint64_t TargetValue, void *Data_,
uint32_t CounterIndex) {
}
uint32_t CounterIndex) {}
#else
@ -119,7 +117,7 @@ static int allocateValueProfileCounters(__llvm_profile_data *Data) {
return 1;
}
__attribute__((visibility("hidden"))) void
LLVM_LIBRARY_VISIBILITY void
__llvm_profile_instrument_target(uint64_t TargetValue, void *Data,
uint32_t CounterIndex) {
@ -172,7 +170,7 @@ __llvm_profile_instrument_target(uint64_t TargetValue, void *Data,
}
#endif
__attribute__((visibility("hidden"))) uint64_t
LLVM_LIBRARY_VISIBILITY uint64_t
__llvm_profile_gather_value_data(uint8_t **VDataArray) {
if (!VDataArray || 0 == TotalValueDataSize)

View File

@ -13,9 +13,12 @@
#ifdef _MSC_VER
# define LLVM_ALIGNAS(x) __declspec(align(x))
#elif __GNUC__
# define LLVM_ALIGNAS(x) __attribute__((aligned(x)))
#define LLVM_ALIGNAS(x) __attribute__((aligned(x)))
#endif
#define LLVM_LIBRARY_VISIBILITY __attribute__((visibility("hidden")))
#define LLVM_SECTION(Sect) __attribute__((section(Sect)))
#if defined(__FreeBSD__) && defined(__i386__)
/* System headers define 'size_t' incorrectly on x64 FreeBSD (prior to

View File

@ -12,7 +12,7 @@
#include <string.h>
__attribute__((visibility("hidden")))
LLVM_LIBRARY_VISIBILITY
uint64_t __llvm_profile_get_size_for_buffer(void) {
const __llvm_profile_data *DataBegin = __llvm_profile_begin_data();
const __llvm_profile_data *DataEnd = __llvm_profile_end_data();
@ -27,12 +27,11 @@ uint64_t __llvm_profile_get_size_for_buffer(void) {
#define PROFILE_RANGE_SIZE(Range) (Range##End - Range##Begin)
__attribute__((visibility("hidden")))
LLVM_LIBRARY_VISIBILITY
uint64_t __llvm_profile_get_size_for_buffer_internal(
const __llvm_profile_data *DataBegin,
const __llvm_profile_data *DataEnd, const uint64_t *CountersBegin,
const uint64_t *CountersEnd, const char *NamesBegin,
const char *NamesEnd) {
const __llvm_profile_data *DataBegin, const __llvm_profile_data *DataEnd,
const uint64_t *CountersBegin, const uint64_t *CountersEnd,
const char *NamesBegin, const char *NamesEnd) {
/* Match logic in __llvm_profile_write_buffer(). */
const uint64_t NamesSize = PROFILE_RANGE_SIZE(Names) * sizeof(char);
const uint8_t Padding = __llvm_profile_get_num_padding_bytes(NamesSize);
@ -56,12 +55,12 @@ static uint32_t bufferWriter(ProfDataIOVec *IOVecs, uint32_t NumIOVecs,
return 0;
}
__attribute__((visibility("hidden"))) int
LLVM_LIBRARY_VISIBILITY
__llvm_profile_write_buffer(char *Buffer) {
return llvmWriteProfData(bufferWriter, Buffer, 0, 0);
}
__attribute__((visibility("hidden"))) int __llvm_profile_write_buffer_internal(
LLVM_LIBRARY_VISIBILITY int __llvm_profile_write_buffer_internal(
char *Buffer, const __llvm_profile_data *DataBegin,
const __llvm_profile_data *DataEnd, const uint64_t *CountersBegin,
const uint64_t *CountersEnd, const char *NamesBegin, const char *NamesEnd) {

View File

@ -164,7 +164,7 @@ static void setFilenameAutomatically(void) {
resetFilenameToDefault();
}
__attribute__((visibility("hidden")))
LLVM_LIBRARY_VISIBILITY
void __llvm_profile_initialize_file(void) {
/* Check if the filename has been initialized. */
if (__llvm_profile_CurrentFilename)
@ -174,12 +174,12 @@ void __llvm_profile_initialize_file(void) {
setFilenameAutomatically();
}
__attribute__((visibility("hidden")))
LLVM_LIBRARY_VISIBILITY
void __llvm_profile_set_filename(const char *Filename) {
setFilenamePossiblyWithPid(Filename);
}
__attribute__((visibility("hidden")))
LLVM_LIBRARY_VISIBILITY
void __llvm_profile_override_default_filename(const char *Filename) {
/* If the env var is set, skip setting filename from argument. */
const char *Env_Filename = getenv("LLVM_PROFILE_FILE");
@ -188,7 +188,7 @@ void __llvm_profile_override_default_filename(const char *Filename) {
setFilenamePossiblyWithPid(Filename);
}
__attribute__((visibility("hidden")))
LLVM_LIBRARY_VISIBILITY
int __llvm_profile_write_file(void) {
int rc;
@ -204,11 +204,9 @@ int __llvm_profile_write_file(void) {
return rc;
}
static void writeFileWithoutReturn(void) {
__llvm_profile_write_file();
}
static void writeFileWithoutReturn(void) { __llvm_profile_write_file(); }
__attribute__((visibility("hidden")))
LLVM_LIBRARY_VISIBILITY
int __llvm_profile_register_write_file_atexit(void) {
static int HasBeenRegistered = 0;

View File

@ -11,33 +11,32 @@
#if defined(__APPLE__)
/* Use linker magic to find the bounds of the Data section. */
__attribute__((visibility("hidden")))
extern __llvm_profile_data DataStart __asm("section$start$__DATA$__llvm_prf_data");
__attribute__((visibility("hidden")))
extern __llvm_profile_data DataEnd __asm("section$end$__DATA$__llvm_prf_data");
__attribute__((visibility("hidden")))
LLVM_LIBRARY_VISIBILITY
extern __llvm_profile_data
DataStart __asm("section$start$__DATA$__llvm_prf_data");
LLVM_LIBRARY_VISIBILITY
extern __llvm_profile_data DataEnd __asm("section$end$__DATA$__llvm_prf_data");
LLVM_LIBRARY_VISIBILITY
extern char NamesStart __asm("section$start$__DATA$__llvm_prf_names");
__attribute__((visibility("hidden")))
extern char NamesEnd __asm("section$end$__DATA$__llvm_prf_names");
__attribute__((visibility("hidden")))
LLVM_LIBRARY_VISIBILITY
extern char NamesEnd __asm("section$end$__DATA$__llvm_prf_names");
LLVM_LIBRARY_VISIBILITY
extern uint64_t CountersStart __asm("section$start$__DATA$__llvm_prf_cnts");
__attribute__((visibility("hidden")))
extern uint64_t CountersEnd __asm("section$end$__DATA$__llvm_prf_cnts");
LLVM_LIBRARY_VISIBILITY
extern uint64_t CountersEnd __asm("section$end$__DATA$__llvm_prf_cnts");
__attribute__((visibility("hidden")))
LLVM_LIBRARY_VISIBILITY
const __llvm_profile_data *__llvm_profile_begin_data(void) {
return &DataStart;
}
__attribute__((visibility("hidden")))
const __llvm_profile_data *__llvm_profile_end_data(void) {
return &DataEnd;
}
__attribute__((visibility("hidden")))
LLVM_LIBRARY_VISIBILITY
const __llvm_profile_data *__llvm_profile_end_data(void) { return &DataEnd; }
LLVM_LIBRARY_VISIBILITY
const char *__llvm_profile_begin_names(void) { return &NamesStart; }
__attribute__((visibility("hidden")))
LLVM_LIBRARY_VISIBILITY
const char *__llvm_profile_end_names(void) { return &NamesEnd; }
__attribute__((visibility("hidden")))
LLVM_LIBRARY_VISIBILITY
uint64_t *__llvm_profile_begin_counters(void) { return &CountersStart; }
__attribute__((visibility("hidden")))
LLVM_LIBRARY_VISIBILITY
uint64_t *__llvm_profile_end_counters(void) { return &CountersEnd; }
#endif

View File

@ -12,44 +12,36 @@
#if defined(__linux__) || defined(__FreeBSD__)
#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")));
extern __llvm_profile_data __start___llvm_prf_data LLVM_LIBRARY_VISIBILITY;
extern __llvm_profile_data __stop___llvm_prf_data LLVM_LIBRARY_VISIBILITY;
extern uint64_t __start___llvm_prf_cnts LLVM_LIBRARY_VISIBILITY;
extern uint64_t __stop___llvm_prf_cnts LLVM_LIBRARY_VISIBILITY;
extern char __start___llvm_prf_names LLVM_LIBRARY_VISIBILITY;
extern char __stop___llvm_prf_names LLVM_LIBRARY_VISIBILITY;
/* Add dummy data to ensure the section is always created. */
__llvm_profile_data __llvm_prof_sect_data[0]
__attribute__((section("__llvm_prf_data")));
uint64_t __llvm_prof_cnts_sect_data[0]
__attribute__((section("__llvm_prf_cnts")));
char __llvm_prof_nms_sect_data[0] __attribute__((section("__llvm_prf_names")));
__llvm_profile_data __llvm_prof_sect_data[0] LLVM_SECTION("__llvm_prf_data");
uint64_t __llvm_prof_cnts_sect_data[0] LLVM_SECTION("__llvm_prf_cnts");
char __llvm_prof_nms_sect_data[0] LLVM_SECTION("__llvm_prf_names");
__attribute__((visibility("hidden"))) const __llvm_profile_data *
LLVM_LIBRARY_VISIBILITY const __llvm_profile_data *
__llvm_profile_begin_data(void) {
return &__start___llvm_prf_data;
}
__attribute__((visibility("hidden"))) const __llvm_profile_data *
LLVM_LIBRARY_VISIBILITY const __llvm_profile_data *
__llvm_profile_end_data(void) {
return &__stop___llvm_prf_data;
}
__attribute__((visibility("hidden"))) const char *__llvm_profile_begin_names(
void) {
LLVM_LIBRARY_VISIBILITY const char *__llvm_profile_begin_names(void) {
return &__start___llvm_prf_names;
}
__attribute__((visibility("hidden"))) const char *__llvm_profile_end_names(
void) {
LLVM_LIBRARY_VISIBILITY const char *__llvm_profile_end_names(void) {
return &__stop___llvm_prf_names;
}
__attribute__((visibility("hidden"))) uint64_t *__llvm_profile_begin_counters(
void) {
LLVM_LIBRARY_VISIBILITY uint64_t *__llvm_profile_begin_counters(void) {
return &__start___llvm_prf_cnts;
}
__attribute__((visibility("hidden"))) uint64_t *__llvm_profile_end_counters(
void) {
LLVM_LIBRARY_VISIBILITY uint64_t *__llvm_profile_end_counters(void) {
return &__stop___llvm_prf_cnts;
}
#endif

View File

@ -26,10 +26,10 @@ static uint64_t *CountersLast = NULL;
* calls are only required (and only emitted) on targets where we haven't
* implemented linker magic to find the bounds of the sections.
*/
__attribute__((visibility("hidden")))
LLVM_LIBRARY_VISIBILITY
void __llvm_profile_register_function(void *Data_) {
/* TODO: Only emit this function if we can't use linker magic. */
const __llvm_profile_data *Data = (__llvm_profile_data*)Data_;
const __llvm_profile_data *Data = (__llvm_profile_data *)Data_;
if (!DataFirst) {
DataFirst = Data;
DataLast = Data + 1;
@ -55,20 +55,16 @@ void __llvm_profile_register_function(void *Data_) {
#undef UPDATE_LAST
}
__attribute__((visibility("hidden")))
const __llvm_profile_data *__llvm_profile_begin_data(void) {
return DataFirst;
}
__attribute__((visibility("hidden")))
const __llvm_profile_data *__llvm_profile_end_data(void) {
return DataLast;
}
__attribute__((visibility("hidden")))
LLVM_LIBRARY_VISIBILITY
const __llvm_profile_data *__llvm_profile_begin_data(void) { return DataFirst; }
LLVM_LIBRARY_VISIBILITY
const __llvm_profile_data *__llvm_profile_end_data(void) { return DataLast; }
LLVM_LIBRARY_VISIBILITY
const char *__llvm_profile_begin_names(void) { return NamesFirst; }
__attribute__((visibility("hidden")))
LLVM_LIBRARY_VISIBILITY
const char *__llvm_profile_end_names(void) { return NamesLast; }
__attribute__((visibility("hidden")))
LLVM_LIBRARY_VISIBILITY
uint64_t *__llvm_profile_begin_counters(void) { return CountersFirst; }
__attribute__((visibility("hidden")))
LLVM_LIBRARY_VISIBILITY
uint64_t *__llvm_profile_end_counters(void) { return CountersLast; }
#endif

View File

@ -8,6 +8,7 @@
\*===----------------------------------------------------------------------===*/
#include "InstrProfilingUtil.h"
#include "InstrProfiling.h"
#ifdef _WIN32
#include <direct.h>
@ -18,7 +19,7 @@ int mkdir(const char*, unsigned short);
#include <sys/types.h>
#endif
__attribute__((visibility("hidden")))
LLVM_LIBRARY_VISIBILITY
void __llvm_profile_recursive_mkdir(char *path) {
int i;

View File

@ -10,9 +10,10 @@
#include "InstrProfiling.h"
#include "InstrProfilingInternal.h"
__attribute__((visibility("hidden"))) int
llvmWriteProfData(WriterCallback Writer, void *WriterCtx,
const uint8_t *ValueDataBegin, const uint64_t ValueDataSize) {
LLVM_LIBRARY_VISIBILITY int llvmWriteProfData(WriterCallback Writer,
void *WriterCtx,
const uint8_t *ValueDataBegin,
const uint64_t ValueDataSize) {
/* Match logic in __llvm_profile_write_buffer(). */
const __llvm_profile_data *DataBegin = __llvm_profile_begin_data();
const __llvm_profile_data *DataEnd = __llvm_profile_end_data();
@ -25,7 +26,7 @@ llvmWriteProfData(WriterCallback Writer, void *WriterCtx,
ValueDataSize, NamesBegin, NamesEnd);
}
__attribute__((visibility("hidden"))) int llvmWriteProfDataImpl(
LLVM_LIBRARY_VISIBILITY int llvmWriteProfDataImpl(
WriterCallback Writer, void *WriterCtx,
const __llvm_profile_data *DataBegin, const __llvm_profile_data *DataEnd,
const uint64_t *CountersBegin, const uint64_t *CountersEnd,