summaryrefslogtreecommitdiff
path: root/lib/VMCore/SymbolTable.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-01-25 03:56:34 +0000
committerChris Lattner <sabre@nondot.org>2002-01-25 03:56:34 +0000
commitd71cc4b518672d3b7a5d34e6bc62c3eab782c751 (patch)
treec8fe54c7488050a53739608fa93824232a2c7dd0 /lib/VMCore/SymbolTable.cpp
parent02d429d1dba1c990cdbda3dd69eba2a0f5cb8a4a (diff)
downloadllvm-d71cc4b518672d3b7a5d34e6bc62c3eab782c751.tar.gz
llvm-d71cc4b518672d3b7a5d34e6bc62c3eab782c751.tar.bz2
llvm-d71cc4b518672d3b7a5d34e6bc62c3eab782c751.tar.xz
This checkin fixes the bug described in:
test/Regression/Assembler/2002-01-24-BadSymbolTableAssert.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1583 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore/SymbolTable.cpp')
-rw-r--r--lib/VMCore/SymbolTable.cpp38
1 files changed, 19 insertions, 19 deletions
diff --git a/lib/VMCore/SymbolTable.cpp b/lib/VMCore/SymbolTable.cpp
index ab98a73184..ab15eb6eec 100644
--- a/lib/VMCore/SymbolTable.cpp
+++ b/lib/VMCore/SymbolTable.cpp
@@ -208,8 +208,8 @@ void SymbolTable::refineAbstractType(const DerivedType *OldType,
#if DEBUG_ABSTYPE
cerr << "[Added] refined to abstype: "<<NewType->getDescription()<<endl;
#endif
+ }
}
- }
VarMap &NewPlane = NewTypeIt->second;
VarMap &OldPlane = TPI->second;
@@ -283,29 +283,29 @@ void SymbolTable::refineAbstractType(const DerivedType *OldType,
}
TPI = find(Type::TypeTy);
- assert(TPI != end() &&"Type plane not in symbol table but we contain types!");
-
- // Loop over all of the types in the symbol table, replacing any references to
- // OldType with references to NewType. Note that there may be multiple
- // occurances, and although we only need to remove one at a time, it's faster
- // to remove them all in one pass.
- //
- VarMap &TyPlane = TPI->second;
- for (VarMap::iterator I = TyPlane.begin(), E = TyPlane.end(); I != E; ++I)
- if (I->second == (Value*)OldType) { // FIXME when Types aren't const.
+ if (TPI != end()) {
+ // Loop over all of the types in the symbol table, replacing any references to
+ // OldType with references to NewType. Note that there may be multiple
+ // occurances, and although we only need to remove one at a time, it's faster
+ // to remove them all in one pass.
+ //
+ VarMap &TyPlane = TPI->second;
+ for (VarMap::iterator I = TyPlane.begin(), E = TyPlane.end(); I != E; ++I)
+ if (I->second == (Value*)OldType) { // FIXME when Types aren't const.
#if DEBUG_ABSTYPE
- cerr << "Removing type " << OldType->getDescription() << endl;
+ cerr << "Removing type " << OldType->getDescription() << endl;
#endif
- OldType->removeAbstractTypeUser(this);
-
- I->second = (Value*)NewType; // TODO FIXME when types aren't const
- if (NewType->isAbstract()) {
+ OldType->removeAbstractTypeUser(this);
+
+ I->second = (Value*)NewType; // TODO FIXME when types aren't const
+ if (NewType->isAbstract()) {
#if DEBUG_ABSTYPE
- cerr << "Added type " << NewType->getDescription() << endl;
+ cerr << "Added type " << NewType->getDescription() << endl;
#endif
- cast<const DerivedType>(NewType)->addAbstractTypeUser(this);
+ cast<const DerivedType>(NewType)->addAbstractTypeUser(this);
+ }
}
- }
+ }
}