[AIX] Add a dummy variable in the __llvm_orderfile section (#81968)
to satisfy the __start___llvm_orderfile reference when linking with -bexpfull and -fprofile-generate on AIX. (cherry picked from commit 15cccc55919d27eb2e89379a65f6c7809f679fda)
This commit is contained in:
parent
82e17c1536
commit
b27f0b4fae
@ -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
|
||||
@ -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
|
||||
|
||||
7
compiler-rt/test/profile/AIX/bexpfull-pgo.c
Normal file
7
compiler-rt/test/profile/AIX/bexpfull-pgo.c
Normal file
@ -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); };
|
||||
Loading…
x
Reference in New Issue
Block a user