Skip to content

Commit

Permalink
[AIX] Add a dummy variable in the __llvm_orderfile section (#81968)
Browse files Browse the repository at this point in the history
to satisfy the __start___llvm_orderfile reference when linking with
-bexpfull and -fprofile-generate on AIX.
  • Loading branch information
w2yehia committed Feb 16, 2024
1 parent f01ed3b commit 15cccc5
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 1 deletion.
4 changes: 3 additions & 1 deletion compiler-rt/lib/profile/InstrProfilingPlatformAIX.c
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,8 @@ static const int dummy_name[0] COMPILER_RT_SECTION(
COMPILER_RT_SEG INSTR_PROF_NAME_SECT_NAME);
static int dummy_vnds[0] COMPILER_RT_SECTION(
COMPILER_RT_SEG INSTR_PROF_VNODES_SECT_NAME);
static int dummy_orderfile[0] COMPILER_RT_SECTION(
COMPILER_RT_SEG INSTR_PROF_ORDERFILE_SECT_NAME);

// To avoid GC'ing of the dummy variables by the linker, reference them in an
// array and reference the array in the runtime registration code
Expand All @@ -206,7 +208,7 @@ static int dummy_vnds[0] COMPILER_RT_SECTION(
COMPILER_RT_VISIBILITY
void *__llvm_profile_keep[] = {(void *)&dummy_cnts, (void *)&dummy_bits,
(void *)&dummy_data, (void *)&dummy_name,
(void *)&dummy_vnds};
(void *)&dummy_vnds, (void *)&dummy_orderfile};
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif
Expand Down
7 changes: 7 additions & 0 deletions compiler-rt/test/profile/AIX/bexpfull-pgo.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// RUN: %clang_pgogen %s -bexpall
// RUN: %clang_pgogen %s -bexpfull

#include <string.h>
int ar[10];
int n;
int main() { memcpy(ar, ar + 1, n); };

0 comments on commit 15cccc5

Please sign in to comment.