diff options
author | Chris Lattner <sabre@nondot.org> | 2002-04-05 23:02:46 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-04-05 23:02:46 +0000 |
commit | 70aa1c615cf0c14716eb3cd0cd7bde9626fd5f62 (patch) | |
tree | a245122b727391ee84aca388a6252c3b50339b27 | |
parent | 7babb7cc661e2e1061c3c4f92b0de7e234fb535c (diff) | |
download | bcm5719-llvm-70aa1c615cf0c14716eb3cd0cd7bde9626fd5f62.tar.gz bcm5719-llvm-70aa1c615cf0c14716eb3cd0cd7bde9626fd5f62.zip |
* FIX: test/Regression/Assembler/2002-02-19-TypeParsing.ll
That was due to the StructType object not getting called multiple times
to remove itself from the ATU list for an object, because it stopped
getting queried due to this wrong test
* Improve debug output when DEBUG_MERGE_TYPES is on
llvm-svn: 2124
-rw-r--r-- | llvm/lib/VMCore/Type.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/llvm/lib/VMCore/Type.cpp b/llvm/lib/VMCore/Type.cpp index cd1cb442e63..1af616f8663 100644 --- a/llvm/lib/VMCore/Type.cpp +++ b/llvm/lib/VMCore/Type.cpp @@ -927,12 +927,12 @@ void DerivedType::typeIsRefined() { cerr << " typeIsREFINED user " << i << "[" << ATU << "] of abstract type [" << (void*)this << " " << getDescription() << "]\n"; #endif + unsigned OldSize = AbstractTypeUsers.size(); ATU->refineAbstractType(this, this); // If the user didn't remove itself from the list, continue... - if (AbstractTypeUsers.size() > i && AbstractTypeUsers[i] == ATU) { + if (AbstractTypeUsers.size() == OldSize && AbstractTypeUsers[i] == ATU) ++i; - } } --isRefining; @@ -942,8 +942,9 @@ void DerivedType::typeIsRefined() { for (unsigned i = 0; i < AbstractTypeUsers.size(); ++i) { if (AbstractTypeUsers[i] != this) { // Debugging hook - cerr << "FOUND FAILURE\n"; + cerr << "FOUND FAILURE\nUser: "; AbstractTypeUsers[i]->dump(); + cerr << "\nCatch:\n"; AbstractTypeUsers[i]->refineAbstractType(this, this); assert(0 && "Type became concrete," " but it still has abstract type users hanging around!"); |