mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-10 05:41:40 +00:00
Use range loop.
llvm-svn: 208346
This commit is contained in:
parent
119209fcfe
commit
96c7b0effe
@ -1209,20 +1209,18 @@ void ExecutionEngine::emitGlobals() {
|
||||
if (Modules.size() != 1) {
|
||||
for (unsigned m = 0, e = Modules.size(); m != e; ++m) {
|
||||
Module &M = *Modules[m];
|
||||
for (Module::const_global_iterator I = M.global_begin(),
|
||||
E = M.global_end(); I != E; ++I) {
|
||||
const GlobalValue *GV = I;
|
||||
if (GV->hasLocalLinkage() || GV->isDeclaration() ||
|
||||
GV->hasAppendingLinkage() || !GV->hasName())
|
||||
for (const auto &GV : M.globals()) {
|
||||
if (GV.hasLocalLinkage() || GV.isDeclaration() ||
|
||||
GV.hasAppendingLinkage() || !GV.hasName())
|
||||
continue;// Ignore external globals and globals with internal linkage.
|
||||
|
||||
const GlobalValue *&GVEntry =
|
||||
LinkedGlobalsMap[std::make_pair(GV->getName(), GV->getType())];
|
||||
LinkedGlobalsMap[std::make_pair(GV.getName(), GV.getType())];
|
||||
|
||||
// If this is the first time we've seen this global, it is the canonical
|
||||
// version.
|
||||
if (!GVEntry) {
|
||||
GVEntry = GV;
|
||||
GVEntry = &GV;
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -1232,8 +1230,8 @@ void ExecutionEngine::emitGlobals() {
|
||||
|
||||
// Otherwise, we know it's linkonce/weak, replace it if this is a strong
|
||||
// symbol. FIXME is this right for common?
|
||||
if (GV->hasExternalLinkage() || GVEntry->hasExternalWeakLinkage())
|
||||
GVEntry = GV;
|
||||
if (GV.hasExternalLinkage() || GVEntry->hasExternalWeakLinkage())
|
||||
GVEntry = &GV;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1241,31 +1239,30 @@ void ExecutionEngine::emitGlobals() {
|
||||
std::vector<const GlobalValue*> NonCanonicalGlobals;
|
||||
for (unsigned m = 0, e = Modules.size(); m != e; ++m) {
|
||||
Module &M = *Modules[m];
|
||||
for (Module::const_global_iterator I = M.global_begin(), E = M.global_end();
|
||||
I != E; ++I) {
|
||||
for (const auto &GV : M.globals()) {
|
||||
// In the multi-module case, see what this global maps to.
|
||||
if (!LinkedGlobalsMap.empty()) {
|
||||
if (const GlobalValue *GVEntry =
|
||||
LinkedGlobalsMap[std::make_pair(I->getName(), I->getType())]) {
|
||||
LinkedGlobalsMap[std::make_pair(GV.getName(), GV.getType())]) {
|
||||
// If something else is the canonical global, ignore this one.
|
||||
if (GVEntry != &*I) {
|
||||
NonCanonicalGlobals.push_back(I);
|
||||
if (GVEntry != &GV) {
|
||||
NonCanonicalGlobals.push_back(&GV);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!I->isDeclaration()) {
|
||||
addGlobalMapping(I, getMemoryForGV(I));
|
||||
if (!GV.isDeclaration()) {
|
||||
addGlobalMapping(&GV, getMemoryForGV(&GV));
|
||||
} else {
|
||||
// External variable reference. Try to use the dynamic loader to
|
||||
// get a pointer to it.
|
||||
if (void *SymAddr =
|
||||
sys::DynamicLibrary::SearchForAddressOfSymbol(I->getName()))
|
||||
addGlobalMapping(I, SymAddr);
|
||||
sys::DynamicLibrary::SearchForAddressOfSymbol(GV.getName()))
|
||||
addGlobalMapping(&GV, SymAddr);
|
||||
else {
|
||||
report_fatal_error("Could not resolve external global address: "
|
||||
+I->getName());
|
||||
+GV.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1285,16 +1282,15 @@ void ExecutionEngine::emitGlobals() {
|
||||
|
||||
// Now that all of the globals are set up in memory, loop through them all
|
||||
// and initialize their contents.
|
||||
for (Module::const_global_iterator I = M.global_begin(), E = M.global_end();
|
||||
I != E; ++I) {
|
||||
if (!I->isDeclaration()) {
|
||||
for (const auto &GV : M.globals()) {
|
||||
if (!GV.isDeclaration()) {
|
||||
if (!LinkedGlobalsMap.empty()) {
|
||||
if (const GlobalValue *GVEntry =
|
||||
LinkedGlobalsMap[std::make_pair(I->getName(), I->getType())])
|
||||
if (GVEntry != &*I) // Not the canonical variable.
|
||||
LinkedGlobalsMap[std::make_pair(GV.getName(), GV.getType())])
|
||||
if (GVEntry != &GV) // Not the canonical variable.
|
||||
continue;
|
||||
}
|
||||
EmitGlobalVariable(I);
|
||||
EmitGlobalVariable(&GV);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user