For PGO on AIX, when we switch to the linux-style PGO variable access (via _start and _stop labels), we need the compiler to generate a .ref assembly for each of the three csects:
- __llvm_prf_data[RW]
- __llvm_prf_names[RO]
- __llvm_prf_vnds[RW]
We insert the .ref inside the __llvm_prf_cnts[RW] csect so that if it's live then the 3 csects are live.
For example, for a testcase with at least one function definition, when compiled with -fprofile-generate we should generate:
.csect __llvm_prf_cnts[RW],3 .ref __llvm_prf_data[RW] <<============ needs to be inserted .ref __llvm_prf_names[RO] <<===========
the __llvm_prf_vnds is not always present, so we reference it only when it's present.
clang-format: please reformat the code