[PATCH] D25339: [PGO] Create weak alias for the renamed Comdat function
Rong Xu via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 6 13:47:25 PDT 2016
This revision was automatically updated to reflect the committed changes.
Closed by commit rL283490: [PGO] Create weak alias for the renamed Comdat function (authored by xur).
Changed prior to commit:
https://reviews.llvm.org/D25339?vs=73827&id=73846#toc
Repository:
rL LLVM
https://reviews.llvm.org/D25339
Files:
llvm/trunk/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
llvm/trunk/test/Transforms/PGOProfile/comdat_rename.ll
Index: llvm/trunk/test/Transforms/PGOProfile/comdat_rename.ll
===================================================================
--- llvm/trunk/test/Transforms/PGOProfile/comdat_rename.ll
+++ llvm/trunk/test/Transforms/PGOProfile/comdat_rename.ll
@@ -50,6 +50,12 @@
; Rename AvailableExternallyLinkage functions
; ELFONLY-DAG: $aef.[[SINGLEBB_HASH]] = comdat any
+
+; ELFONLY: @f = weak alias void (), void ()* @f.[[SINGLEBB_HASH]]
+; ELFONLY: @f_with_alias = weak alias void (), void ()* @f_with_alias.[[SINGLEBB_HASH]]
+; ELFONLY: @af = weak alias void (...), void (...)* @af.[[SINGLEBB_HASH]]
+; ELFONLY: @aef = weak alias void (), void ()* @aef.[[SINGLEBB_HASH]]
+
define available_externally void @aef() {
; ELFONLY: define linkonce_odr void @aef.[[SINGLEBB_HASH]]() comdat {
; COFFONLY: define available_externally void @aef() {
Index: llvm/trunk/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
===================================================================
--- llvm/trunk/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
+++ llvm/trunk/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
@@ -439,9 +439,11 @@
void FuncPGOInstrumentation<Edge, BBInfo>::renameComdatFunction() {
if (!canRenameComdat(F, ComdatMembers))
return;
+ std::string OrigName = F.getName().str();
std::string NewFuncName =
Twine(F.getName() + "." + Twine(FunctionHash)).str();
F.setName(Twine(NewFuncName));
+ GlobalAlias::create(GlobalValue::WeakAnyLinkage, OrigName, &F);
FuncName = Twine(FuncName + "." + Twine(FunctionHash)).str();
Comdat *NewComdat;
Module *M = F.getParent();
@@ -467,7 +469,9 @@
if (GlobalAlias *GA = dyn_cast<GlobalAlias>(CM.second)) {
// For aliases, change the name directly.
assert(dyn_cast<Function>(GA->getAliasee()->stripPointerCasts()) == &F);
+ std::string OrigGAName = GA->getName().str();
GA->setName(Twine(GA->getName() + "." + Twine(FunctionHash)));
+ GlobalAlias::create(GlobalValue::WeakAnyLinkage, OrigGAName, GA);
continue;
}
// Must be a function.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D25339.73846.patch
Type: text/x-patch
Size: 2080 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161006/2441b1e8/attachment.bin>
More information about the llvm-commits
mailing list