mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-04 21:31:03 +00:00
During module cloning copy aliases too. This fixes PR1544
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38505 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
06b6e82f79
commit
a289511090
@ -69,6 +69,12 @@ Module *llvm::CloneModule(const Module *M,
|
|||||||
ValueMap[I]= NF;
|
ValueMap[I]= NF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Loop over the aliases in the module
|
||||||
|
for (Module::const_alias_iterator I = M->alias_begin(), E = M->alias_end();
|
||||||
|
I != E; ++I)
|
||||||
|
ValueMap[I] = new GlobalAlias(I->getType(), GlobalAlias::ExternalLinkage,
|
||||||
|
I->getName(), NULL, New);
|
||||||
|
|
||||||
// Now that all of the things that global variable initializer can refer to
|
// Now that all of the things that global variable initializer can refer to
|
||||||
// have been created, loop through and copy the global variable referrers
|
// have been created, loop through and copy the global variable referrers
|
||||||
// over... We also set the attributes on the global now.
|
// over... We also set the attributes on the global now.
|
||||||
@ -103,6 +109,15 @@ Module *llvm::CloneModule(const Module *M,
|
|||||||
F->setLinkage(I->getLinkage());
|
F->setLinkage(I->getLinkage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// And aliases
|
||||||
|
for (Module::const_alias_iterator I = M->alias_begin(), E = M->alias_end();
|
||||||
|
I != E; ++I) {
|
||||||
|
GlobalAlias *GA = cast<GlobalAlias>(ValueMap[I]);
|
||||||
|
GA->setLinkage(I->getLinkage());
|
||||||
|
if (const Constant* C = I->getAliasee())
|
||||||
|
GA->setAliasee(cast<Constant>(MapValue(C, ValueMap)));
|
||||||
|
}
|
||||||
|
|
||||||
return New;
|
return New;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user