diff --git a/llvm/include/llvm/CodeGen/BasicTTIImpl.h b/llvm/include/llvm/CodeGen/BasicTTIImpl.h index 21e3d93ded2298..0aca5cf3844b18 100644 --- a/llvm/include/llvm/CodeGen/BasicTTIImpl.h +++ b/llvm/include/llvm/CodeGen/BasicTTIImpl.h @@ -702,24 +702,25 @@ class BasicTTIImplBase : public TargetTransformInfoImplCRTPBase { case Instruction::ZExt: if (TLI->isZExtFree(SrcLT.second, DstLT.second)) return 0; - break; - case Instruction::AddrSpaceCast: - if (TLI->isFreeAddrSpaceCast(Src->getPointerAddressSpace(), - Dst->getPointerAddressSpace())) - return 0; - break; - } - - // If this is a zext/sext of a load, return 0 if the corresponding - // extending load exists on target. - if ((Opcode == Instruction::ZExt || Opcode == Instruction::SExt) && - I && isa(I->getOperand(0))) { + LLVM_FALLTHROUGH; + case Instruction::SExt: { + // If this is a zext/sext of a load, return 0 if the corresponding + // extending load exists on target. + if (I && isa(I->getOperand(0))) { EVT ExtVT = EVT::getEVT(Dst); EVT LoadVT = EVT::getEVT(Src); unsigned LType = ((Opcode == Instruction::ZExt) ? ISD::ZEXTLOAD : ISD::SEXTLOAD); if (TLI->isLoadExtLegal(LType, ExtVT, LoadVT)) return 0; + } + break; + } + case Instruction::AddrSpaceCast: + if (TLI->isFreeAddrSpaceCast(Src->getPointerAddressSpace(), + Dst->getPointerAddressSpace())) + return 0; + break; } // If the cast is marked as legal (or promote) then assume low cost.