summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-04-05 23:02:46 +0000
committerChris Lattner <sabre@nondot.org>2002-04-05 23:02:46 +0000
commit70aa1c615cf0c14716eb3cd0cd7bde9626fd5f62 (patch)
treea245122b727391ee84aca388a6252c3b50339b27
parent7babb7cc661e2e1061c3c4f92b0de7e234fb535c (diff)
downloadbcm5719-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.cpp7
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!");
OpenPOWER on IntegriCloud