diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 9be3b39ce16fa..cc45067fbf300 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -56715,7 +56715,8 @@ static SDValue combineGatherScatter(SDNode *N, SelectionDAG &DAG, if (DCI.isBeforeLegalize()) { // Attempt to move shifted index into the address scale, allows further // index truncation below. - if (Index.getOpcode() == ISD::SHL && isa(Scale)) { + if (Index.getOpcode() == ISD::SHL && IndexSVT == PtrVT && + isa(Scale)) { unsigned ScaleAmt = Scale->getAsZExtVal(); assert(isPowerOf2_32(ScaleAmt) && "Scale must be a power of 2"); unsigned Log2ScaleAmt = Log2_32(ScaleAmt);