Fix bug: Linker/2003-06-02-TypeResolveProblem.ll
authorChris Lattner <sabre@nondot.org>
Mon, 2 Jun 2003 17:25:46 +0000 (17:25 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 2 Jun 2003 17:25:46 +0000 (17:25 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6542 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/Constants.cpp

index 8fa5342ff3b45a87a63e22471370826f3ec88d5a..5c2f73e0017e66d8d70c30fe3cab4037869531fe 100644 (file)
@@ -556,6 +556,7 @@ void ConstantArray::destroyConstant() {
 void ConstantArray::refineAbstractType(const DerivedType *OldTy,
                                        const Type *NewTy) {
   Value::refineAbstractType(OldTy, NewTy);
+  if (OldTy == NewTy) return;
 
   // Make everyone now use a constant of the new type...
   std::vector<Constant*> C;
@@ -625,6 +626,7 @@ void ConstantStruct::destroyConstant() {
 void ConstantStruct::refineAbstractType(const DerivedType *OldTy,
                                         const Type *NewTy) {
   Value::refineAbstractType(OldTy, NewTy);
+  if (OldTy == NewTy) return;
 
   // Make everyone now use a constant of the new type...
   std::vector<Constant*> C;
@@ -666,6 +668,7 @@ void ConstantPointerNull::destroyConstant() {
 void ConstantPointerNull::refineAbstractType(const DerivedType *OldTy,
                                              const Type *NewTy) {
   Value::refineAbstractType(OldTy, NewTy);
+  if (OldTy == NewTy) return;
 
   // Make everyone now use a constant of the new type...
   if (NewTy != OldTy) {
@@ -798,6 +801,7 @@ void ConstantExpr::destroyConstant() {
 void ConstantExpr::refineAbstractType(const DerivedType *OldTy,
                                       const Type *NewTy) {
   Value::refineAbstractType(OldTy, NewTy);
+  if (OldTy == NewTy) return;
 
   // FIXME: These need to use a lower-level implementation method, because the
   // ::get methods intuit the type of the result based on the types of the