diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Transforms/Scalar/InstructionCombining.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/Transforms/Scalar/InstructionCombining.cpp b/lib/Transforms/Scalar/InstructionCombining.cpp index 0e6c1b1f2d..6961806bcb 100644 --- a/lib/Transforms/Scalar/InstructionCombining.cpp +++ b/lib/Transforms/Scalar/InstructionCombining.cpp @@ -5187,7 +5187,8 @@ Instruction *InstCombiner::visitCastInst(CastInst &CI) { Constant *ZeroUInt = Constant::getNullValue(Type::UIntTy); unsigned NumZeros = 0; while (SrcTy != DstTy && - isa<CompositeType>(SrcTy) && !isa<PointerType>(SrcTy)) { + isa<CompositeType>(SrcTy) && !isa<PointerType>(SrcTy) && + SrcTy->getNumContainedTypes() /* not "{}" */) { SrcTy = cast<CompositeType>(SrcTy)->getTypeAtIndex(ZeroUInt); ++NumZeros; } |