mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-25 21:18:19 +00:00
Fix infinite loop due to iteration
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16864 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -374,16 +374,22 @@ static bool ProcessInternalGlobal(GlobalVariable *GV, Module::giterator &GVI) {
|
||||
// Delete it now.
|
||||
if (!GS.isLoaded) {
|
||||
DEBUG(std::cerr << "GLOBAL NEVER LOADED: " << *GV);
|
||||
unsigned NumUsers = GV->use_size();
|
||||
|
||||
// Delete any stores we can find to the global. We may not be able to
|
||||
// make it completely dead though.
|
||||
CleanupConstantGlobalUsers(GV, GV->getInitializer());
|
||||
|
||||
// Did we delete any stores?
|
||||
bool Changed = NumUsers != GV->use_size();
|
||||
|
||||
// If the global is dead now, delete it.
|
||||
if (GV->use_empty()) {
|
||||
GV->getParent()->getGlobalList().erase(GV);
|
||||
++NumDeleted;
|
||||
Changed = true;
|
||||
}
|
||||
return true;
|
||||
return Changed;
|
||||
|
||||
} else if (GS.StoredType <= GlobalStatus::isInitializerStored) {
|
||||
DEBUG(std::cerr << "MARKING CONSTANT: " << *GV);
|
||||
|
||||
Reference in New Issue
Block a user