1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 11:02:59 +02:00

[PGO] Delete dead comdat renaming code related to GlobalAlias. NFC

A GlobalAlias is an address-taken user of its aliased function.
canRenameComdatFunc has excluded such cases.

Reviewed By: davidxl

Differential Revision: https://reviews.llvm.org/D85597
This commit is contained in:
Fangrui Song 2020-08-08 21:23:03 -07:00
parent 072343a35a
commit a32bcc8260
2 changed files with 11 additions and 14 deletions

View File

@ -693,7 +693,7 @@ static bool canRenameComdat(
return false;
// FIXME: Current only handle those Comdat groups that only containing one
// function and function aliases.
// function.
// (1) For a Comdat group containing multiple functions, we need to have a
// unique postfix based on the hashes for each function. There is a
// non-trivial code refactoring to do this efficiently.
@ -701,8 +701,7 @@ static bool canRenameComdat(
// group including global vars.
Comdat *C = F.getComdat();
for (auto &&CM : make_range(ComdatMembers.equal_range(C))) {
if (dyn_cast<GlobalAlias>(CM.second))
continue;
assert(!isa<GlobalAlias>(CM.second));
Function *FM = dyn_cast<Function>(CM.second);
if (FM != &F)
return false;
@ -742,18 +741,8 @@ void FuncPGOInstrumentation<Edge, BBInfo>::renameComdatFunction() {
NewComdat->setSelectionKind(OrigComdat->getSelectionKind());
for (auto &&CM : make_range(ComdatMembers.equal_range(OrigComdat))) {
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.
Function *CF = dyn_cast<Function>(CM.second);
assert(CF);
CF->setComdat(NewComdat);
cast<Function>(CM.second)->setComdat(NewComdat);
}
}

View File

@ -10,6 +10,14 @@ define linkonce_odr void @f() comdat($f) {
ret void
}
; Not rename Comdat with an alias (an alias is an address-taken user).
$f_with_alias = comdat any
; CHECK: $f_with_alias = comdat any
define linkonce_odr void @f_with_alias() comdat {
ret void
}
@f_alias = alias void (), void ()* @f_with_alias
; Not rename Comdat with right linkage.
$nf = comdat any
; CHECK: $nf = comdat any