diff options
| author | Chris Lattner <sabre@nondot.org> | 2003-10-21 22:46:38 +0000 | 
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2003-10-21 22:46:38 +0000 | 
| commit | aeb18ce9c012f8554f48bae9bb32351c6eeaa26c (patch) | |
| tree | 570c8db8d519fd784f9a2d7e65f12bd9c3c0acfd /lib/Transforms/Utils/Linker.cpp | |
| parent | 3d6a08d131a77cef94d59637705f1f0afe6e0483 (diff) | |
Fix bug: Linker/2003-10-21-ConflictingTypesTolerance.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9357 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Utils/Linker.cpp')
| -rw-r--r-- | lib/Transforms/Utils/Linker.cpp | 23 | 
1 files changed, 10 insertions, 13 deletions
diff --git a/lib/Transforms/Utils/Linker.cpp b/lib/Transforms/Utils/Linker.cpp index 0e7d887044..1d002c5821 100644 --- a/lib/Transforms/Utils/Linker.cpp +++ b/lib/Transforms/Utils/Linker.cpp @@ -215,20 +215,17 @@ static bool LinkTypes(Module *Dest, const Module *Src, std::string *Err) {        }        // If we STILL cannot resolve the types, then there is something wrong. -      // Report the error. +      // Report the warning and delete one of the names.        if (DelayedTypesToResolve.size() == OldSize) { -        // Build up an error message of all of the mismatched types. -        std::string ErrorMessage; -        for (unsigned i = 0, e = DelayedTypesToResolve.size(); i != e; ++i) { -          const std::string &Name = DelayedTypesToResolve[i]; -          const Type *T1 = cast<Type>(VM.find(Name)->second); -          const Type *T2 = cast<Type>(DestST->lookup(Type::TypeTy, Name)); -          ErrorMessage += "  Type named '" + Name +  -                          "' conflicts.\n    Src='" + T1->getDescription() + -                          "'.\n   Dest='" + T2->getDescription() + "'\n"; -        } -        return Error(Err, "Type conflict between types in modules:\n" + -                     ErrorMessage); +        const std::string &Name = DelayedTypesToResolve.back(); +         +        const Type *T1 = cast<Type>(VM.find(Name)->second); +        const Type *T2 = cast<Type>(DestST->lookup(Type::TypeTy, Name)); +        std::cerr << "WARNING: Type conflict between types named '" << Name +                  <<  "'.\n    Src='" << *T1 << "'.\n   Dest='" << *T2 << "'\n"; + +        // Remove the symbol name from the destination. +        DelayedTypesToResolve.pop_back();        }      }    }  | 
