summaryrefslogtreecommitdiff
path: root/lib/Linker
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-06-16 18:27:53 +0000
committerChris Lattner <sabre@nondot.org>2008-06-16 18:27:53 +0000
commitf6f4f7a149e2864cc0441afcbed5fd99ff4b9587 (patch)
treeb82cb2a918a0a9ab0ead50c1bc11f1c6c434ef6c /lib/Linker
parentbc1c82a0f73eda86cf24416cebc83b4690fcd76a (diff)
downloadllvm-f6f4f7a149e2864cc0441afcbed5fd99ff4b9587.tar.gz
llvm-f6f4f7a149e2864cc0441afcbed5fd99ff4b9587.tar.bz2
llvm-f6f4f7a149e2864cc0441afcbed5fd99ff4b9587.tar.xz
handle vectors. Any integers that got here would necessarily be different already.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52341 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Linker')
-rw-r--r--lib/Linker/LinkModules.cpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/lib/Linker/LinkModules.cpp b/lib/Linker/LinkModules.cpp
index e36fbafc6f..14fe9959db 100644
--- a/lib/Linker/LinkModules.cpp
+++ b/lib/Linker/LinkModules.cpp
@@ -102,12 +102,8 @@ static bool RecursiveResolveTypesI(const PATypeHolder &DestTy,
// Otherwise, resolve the used type used by this derived type...
switch (DestTyT->getTypeID()) {
- case Type::IntegerTyID: {
- if (cast<IntegerType>(DestTyT)->getBitWidth() !=
- cast<IntegerType>(SrcTyT)->getBitWidth())
- return true;
- return false;
- }
+ default:
+ return true;
case Type::FunctionTyID: {
if (cast<FunctionType>(DestTyT)->isVarArg() !=
cast<FunctionType>(SrcTyT)->isVarArg() ||
@@ -122,7 +118,8 @@ static bool RecursiveResolveTypesI(const PATypeHolder &DestTy,
}
case Type::StructTyID: {
if (getST(DestTy)->getNumContainedTypes() !=
- getST(SrcTy)->getNumContainedTypes()) return 1;
+ getST(SrcTy)->getNumContainedTypes())
+ return true;
for (unsigned i = 0, e = getST(DestTy)->getNumContainedTypes(); i != e; ++i)
if (RecursiveResolveTypesI(getST(DestTy)->getContainedType(i),
getST(SrcTy)->getContainedType(i), Pointers))
@@ -136,6 +133,13 @@ static bool RecursiveResolveTypesI(const PATypeHolder &DestTy,
return RecursiveResolveTypesI(DAT->getElementType(), SAT->getElementType(),
Pointers);
}
+ case Type::VectorTyID: {
+ const VectorType *DVT = cast<VectorType>(DestTy.get());
+ const VectorType *SVT = cast<VectorType>(SrcTy.get());
+ if (DVT->getNumElements() != SVT->getNumElements()) return true;
+ return RecursiveResolveTypesI(DVT->getElementType(), SVT->getElementType(),
+ Pointers);
+ }
case Type::PointerTyID: {
// If this is a pointer type, check to see if we have already seen it. If
// so, we are in a recursive branch. Cut off the search now. We cannot use
@@ -155,7 +159,6 @@ static bool RecursiveResolveTypesI(const PATypeHolder &DestTy,
Pointers.pop_back();
return Result;
}
- default: assert(0 && "Unexpected type!"); return true;
}
}