diff --git a/llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h b/llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h index 5962768c206c5..c56ccdcb747a1 100644 --- a/llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h +++ b/llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h @@ -894,9 +894,10 @@ class LegalizeRuleSet { Query.Types[TypeIdx].getSizeInBits(); }, [=](const LegalityQuery &Query) { - LLT T = Query.Types[LargeTypeIdx]; - return std::make_pair(TypeIdx, - T.isVector() ? T.getElementType() : T); + const LLT Ty = Query.Types[TypeIdx]; + const LLT LargeTy = Query.Types[LargeTypeIdx]; + LLT NewEltTy = LLT::scalar(LargeTy.getScalarSizeInBits()); + return std::make_pair(TypeIdx, Ty.changeElementType(NewEltTy)); }); }