mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
Change RequiresMerge to RequiresUnique. It's a better description of what this
fix is trying to accomplish. This code could still use some polishing. llvm-svn: 115759
This commit is contained in:
parent
faa847eb2b
commit
c44ee01ccc
@ -454,11 +454,12 @@ static void LinkNamedMDNodes(Module *Dest, Module *Src,
|
||||
}
|
||||
}
|
||||
|
||||
// RequiresMerge - Return true if the source global variable needs to be merged
|
||||
// with the destination global variable. I.e., there shouldn't be a new global
|
||||
// variable created in the destination Module, rather the initializers should be
|
||||
// merged in an intelligent fashion.
|
||||
static bool RequiresMerge(const GlobalVariable *SGV, const GlobalVariable *DGV){
|
||||
// RequiresUnique - Returns true if the global variable needs to be
|
||||
// unique. I.e., there shouldn't be a new global variable created in the
|
||||
// destination Module, rather the source variable's initializer needs to be
|
||||
// identical to the destination variable's initializer.
|
||||
static bool RequiresUnique(const GlobalVariable *SGV,
|
||||
const GlobalVariable *DGV) {
|
||||
const StringRef SrcSec(SGV->getSection());
|
||||
const StringRef DstSec(DGV->getSection());
|
||||
|
||||
@ -492,7 +493,7 @@ static bool LinkGlobals(Module *Dest, const Module *Src,
|
||||
// be merged instead of replaced.
|
||||
if (SymTabGV) {
|
||||
const GlobalVariable *GV = dyn_cast<GlobalVariable>(SymTabGV);
|
||||
if (GV && RequiresMerge(SGV, GV)) {
|
||||
if (GV && RequiresUnique(SGV, GV)) {
|
||||
// Make sure to remember this mapping.
|
||||
ValueMap[SGV] = SymTabGV;
|
||||
continue;
|
||||
@ -851,7 +852,7 @@ static bool LinkGlobalInits(Module *Dest, const Module *Src,
|
||||
// If dest is a global variable, check that initializers match.
|
||||
if (GlobalVariable *DGVar = dyn_cast<GlobalVariable>(DGV)) {
|
||||
if (DGVar->hasInitializer()) {
|
||||
if (SGV->hasExternalLinkage() || RequiresMerge(SGV, DGVar)) {
|
||||
if (SGV->hasExternalLinkage() || RequiresUnique(SGV, DGVar)) {
|
||||
if (DGVar->getInitializer() != SInit)
|
||||
return Error(Err, "Global Variable Collision on '" +
|
||||
SGV->getName() +
|
||||
|
Loading…
x
Reference in New Issue
Block a user