[llvm] [MemProf] Avoid incorrect ICP symtab canonicalization (PR #115419)
Snehasish Kumar via llvm-commits
llvm-commits at lists.llvm.org
Thu Nov 7 20:18:21 PST 2024
================
@@ -4143,7 +4143,17 @@ bool MemProfContextDisambiguation::initializeIndirectCallPromotionInfo(
Module &M) {
ICallAnalysis = std::make_unique<ICallPromotionAnalysis>();
Symtab = std::make_unique<InstrProfSymtab>();
- if (Error E = Symtab->create(M, /*InLTO=*/true)) {
+ // Don't add canonical names, to avoid multiple functions to the symtab
+ // when they both have the same root name with "." suffixes stripped.
+ // If we pick the wrong one then this could lead to incorrect ICP and calling
+ // a memprof clone that we don't actually create (resulting in linker unsats).
+ // What this means is that the GUID of the function (or its PGOFuncName
+ // metadata) *must* match that in the VP metadata to allow promotion.
+ // In practice this should not be a limitation, since local functions should
+ // have PGOFuncName metadata and global function names shouldn't need any
+ // special handling (they should not get the ".llvm.*" suffix that the
----------------
snehasish wrote:
Parenthesis not closed?
https://github.com/llvm/llvm-project/pull/115419
More information about the llvm-commits
mailing list