- With PGO, indirect call edges are constructed using value profiles, and the profile address is mapped to a function's PGO name. The PGO name is computed using a functions linkage before LTO internalization or global promotion. - With ThinLTO, local functions [could be promoted](2663d2cb9c/llvm/lib/Transforms/Utils/FunctionImportUtils.cpp (L288)) to have external linkage; and with [full](2663d2cb9c/llvm/lib/LTO/LTO.cpp (L1328)) or [thin](2663d2cb9c/llvm/lib/LTO/LTO.cpp (L448)) LTO, global functions could be internalized. Edge construction should use a function's PGO name before its linkage is updated.
3.7 KiB
3.7 KiB