diff --git a/lib/Linker/LinkModules.cpp b/lib/Linker/LinkModules.cpp index 5280c04565f..81d46ca3f44 100644 --- a/lib/Linker/LinkModules.cpp +++ b/lib/Linker/LinkModules.cpp @@ -79,7 +79,9 @@ static bool RecursiveResolveTypesI(const PATypeHolder &DestTy, switch (DestTyT->getPrimitiveID()) { case Type::FunctionTyID: { if (cast(DestTyT)->isVarArg() != - cast(SrcTyT)->isVarArg()) + cast(SrcTyT)->isVarArg() || + cast(DestTyT)->getNumContainedTypes() != + cast(SrcTyT)->getNumContainedTypes()) return true; for (unsigned i = 0, e = getFT(DestTy)->getNumContainedTypes(); i != e; ++i) if (RecursiveResolveTypesI(getFT(DestTy)->getContainedType(i), diff --git a/lib/Transforms/Utils/Linker.cpp b/lib/Transforms/Utils/Linker.cpp index 5280c04565f..81d46ca3f44 100644 --- a/lib/Transforms/Utils/Linker.cpp +++ b/lib/Transforms/Utils/Linker.cpp @@ -79,7 +79,9 @@ static bool RecursiveResolveTypesI(const PATypeHolder &DestTy, switch (DestTyT->getPrimitiveID()) { case Type::FunctionTyID: { if (cast(DestTyT)->isVarArg() != - cast(SrcTyT)->isVarArg()) + cast(SrcTyT)->isVarArg() || + cast(DestTyT)->getNumContainedTypes() != + cast(SrcTyT)->getNumContainedTypes()) return true; for (unsigned i = 0, e = getFT(DestTy)->getNumContainedTypes(); i != e; ++i) if (RecursiveResolveTypesI(getFT(DestTy)->getContainedType(i), diff --git a/lib/VMCore/Linker.cpp b/lib/VMCore/Linker.cpp index 5280c04565f..81d46ca3f44 100644 --- a/lib/VMCore/Linker.cpp +++ b/lib/VMCore/Linker.cpp @@ -79,7 +79,9 @@ static bool RecursiveResolveTypesI(const PATypeHolder &DestTy, switch (DestTyT->getPrimitiveID()) { case Type::FunctionTyID: { if (cast(DestTyT)->isVarArg() != - cast(SrcTyT)->isVarArg()) + cast(SrcTyT)->isVarArg() || + cast(DestTyT)->getNumContainedTypes() != + cast(SrcTyT)->getNumContainedTypes()) return true; for (unsigned i = 0, e = getFT(DestTy)->getNumContainedTypes(); i != e; ++i) if (RecursiveResolveTypesI(getFT(DestTy)->getContainedType(i),