[llvm] [clang] [PGO][GlobalValue][LTO]In GlobalValues::getGlobalIdentifier, use semicolon as delimiter for local-linkage varibles. (PR #74008)
Mingming Liu via cfe-commits
cfe-commits at lists.llvm.org
Thu Nov 30 23:09:13 PST 2023
================
@@ -300,12 +316,8 @@ getIRPGONameForGlobalObject(const GlobalObject &GO,
GlobalValue::LinkageTypes Linkage,
StringRef FileName) {
SmallString<64> Name;
- if (llvm::GlobalValue::isLocalLinkage(Linkage)) {
- Name.append(FileName.empty() ? "<unknown>" : FileName);
- Name.append(";");
- }
Mangler().getNameWithPrefix(Name, &GO, /*CannotUsePrivateLabel=*/true);
----------------
minglotus-6 wrote:
I also thought it was feasible initially. Two kinds of rough edges came up when I tried the implementation. (added some comments to document them)
a) `getIRPGONameForGlobalObject` currently mangles names currently, by passing global values to `getNameWithPrefix`.`getNameWithPrefix` with [GlobalValue parameter](https://github.com/llvm/llvm-project/blob/cf1a979ccfa722c3f9fce28c66c13a222990eac4/llvm/include/llvm/IR/Mangler.h#L33-L39) makes use of other information (e.g., [linkage](https://github.com/llvm/llvm-project/blob/cf1a979ccfa722c3f9fce28c66c13a222990eac4/llvm/lib/IR/Mangler.cpp#L123-L127), [calling-conv](https://github.com/llvm/llvm-project/blob/cf1a979ccfa722c3f9fce28c66c13a222990eac4/llvm/lib/IR/Mangler.cpp#L148-L166) of functions, etc). `getNameWithPrefix` with stringified names as parameter just [use names](https://github.com/llvm/llvm-project/blob/cf1a979ccfa722c3f9fce28c66c13a222990eac4/llvm/lib/IR/Mangler.cpp#L69-L79). For parity we might need a `getGlobalIdentifier` that takes global values (not just stringified names).
b) `getGlobalIdentifier` gets called in many places, and the `\1` handling function in Mangler does [more than dropping `\1`](https://github.com/llvm/llvm-project/blob/cf1a979ccfa722c3f9fce28c66c13a222990eac4/llvm/lib/IR/Mangler.cpp#L33-L60), so embedding Mangler's way of handling `\1` might affect all callers.
https://github.com/llvm/llvm-project/pull/74008
More information about the cfe-commits
mailing list