mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-11 16:37:42 +00:00
Make this more useful for cleaning up after the
one-definition-rule llvm-gcc changes (coming soon to a tree near you!). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64588 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7987e1a2c1
commit
a37d119f63
@ -2405,26 +2405,16 @@ bool GlobalOpt::ResolveAliases(Module &M) {
|
||||
if (J->hasInternalLinkage())
|
||||
continue;
|
||||
|
||||
// Be conservative and do not perform the transform if multiple aliases
|
||||
// potentially target the aliasee. TODO: Make this more aggressive.
|
||||
// Do not perform the transform if multiple aliases potentially target the
|
||||
// aliasee. This check also ensures that it is safe to replace the section
|
||||
// and other attributes of the aliasee with those of the alias.
|
||||
if (!hasOneUse)
|
||||
continue;
|
||||
|
||||
// Do not perform the transform if it would change the visibility.
|
||||
if (J->getVisibility() != Target->getVisibility())
|
||||
continue;
|
||||
|
||||
// Do not perform the transform if it would change the section.
|
||||
if (J->hasSection() != Target->hasSection() ||
|
||||
(J->hasSection() && J->getSection() != Target->getSection()))
|
||||
continue;
|
||||
|
||||
// Give the aliasee the name and linkage of the alias.
|
||||
// Give the aliasee the name, linkage and other attributes of the alias.
|
||||
Target->takeName(J);
|
||||
Target->setLinkage(J->getLinkage());
|
||||
|
||||
// The alignment is the only remaining attribute that may not match.
|
||||
Target->setAlignment(std::max(J->getAlignment(), Target->getAlignment()));
|
||||
Target->GlobalValue::copyAttributesFrom(J);
|
||||
|
||||
// Delete the alias.
|
||||
M.getAliasList().erase(J);
|
||||
|
Loading…
x
Reference in New Issue
Block a user