Two things:
authorChris Lattner <sabre@nondot.org>
Wed, 24 Oct 2001 05:12:04 +0000 (05:12 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 24 Oct 2001 05:12:04 +0000 (05:12 +0000)
1. Forward propogate a loaded constant to make debugging slightly less annoying
2. Fix an extremely nasty hard to find bug that really irritated me for the better
   part of 6 hours and was causing linking to die and bizarre and mysterious ways.
   Things should be much more stable now that this one liner has been fixed. GRR

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@971 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/Type.cpp

index fb4063a5ca54446f010dcfa1e3e10a7ead2cfce5..c25bdf02f85d9b801008f6e10f855603e7d61573 100644 (file)
@@ -300,6 +300,8 @@ static bool TypesEqual(const Type *Ty, const Type *Ty2,
   if (Ty == Ty2) return true;
   if (Ty->getPrimitiveID() != Ty2->getPrimitiveID()) return false;
   if (Ty->isPrimitiveType()) return true;
+  if (isa<OpaqueType>(Ty))
+    return false;  // Two nonequal opaque types are never equal
 
   if (Ty != Ty2) {
     map<const Type*, const Type*>::iterator I = EqTypes.find(Ty);
@@ -744,7 +746,7 @@ void DerivedType::refineAbstractTypeTo(const Type *NewType) {
           << (void*)this << " " << getDescription() << "] to [" 
           << (void*)NewTy.get() << " " << NewTy->getDescription() << "]!\n";
 #endif
-      AbstractTypeUsers.back()->refineAbstractType(this, NewTy);
+      User->refineAbstractType(this, NewTy);
 
       assert(AbstractTypeUsers.size() != OldSize &&
             "AbsTyUser did not remove self from user list!");