<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
We should probably have an "ops" that returns ArrayRef (ArrayRef being<br>
the iterator_range for contiguous in-memory sequences - and handy for<br>
other things).<br></blockquote><div><br></div><div>Agreed. It came up in a few places. I'll look into doing that.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
> Modified: llvm/trunk/lib/Target/Mips/MipsSEISelLowering.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsSEISelLowering.cpp?rev=207616&r1=207615&r2=207616&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsSEISelLowering.cpp?rev=207616&r1=207615&r2=207616&view=diff</a><br>

> ==============================================================================<br>
> --- llvm/trunk/lib/Target/Mips/MipsSEISelLowering.cpp (original)<br>
> +++ llvm/trunk/lib/Target/Mips/MipsSEISelLowering.cpp Wed Apr 30 02:17:30 2014<br>
> @@ -489,7 +489,7 @@ static SDValue performANDCombine(SDNode<br>
>        SDValue Ops[] = { Op0->getOperand(0), Op0->getOperand(1), Op0Op2 };<br>
>        DAG.MorphNodeTo(Op0.getNode(), MipsISD::VEXTRACT_ZEXT_ELT,<br>
>                        Op0->getVTList(),<br>
> -                      ArrayRef<SDValue>(Ops, Op0->getNumOperands()));<br>
> +                      makeArrayRef(Ops, Op0->getNumOperands()));<br>
<br>
Any idea what getNumOperands returns? Can it really return various<br>
values <= 3? (can't be more than 3, since Ops only has 3 things). If<br>
it's always 3, then you can just drop the makeArrayRef call entirely<br>
and rely on the implicit conversion from array to ArrayRef.<br></blockquote><div><br></div><div>It wasn't immediately obvious to me when I did the ArrayRef conversions which is why I made it explicit, but I think it might be 3.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
(similar comment for the next 3 changes \/)<br>
<br>
>        return Op0;<br>
>      }<br>
>    }<br>
> @@ -834,7 +834,7 @@ static SDValue performSRACombine(SDNode<br>
>                            Op0Op0->getOperand(2) };<br>
>          DAG.MorphNodeTo(Op0Op0.getNode(), MipsISD::VEXTRACT_SEXT_ELT,<br>
>                          Op0Op0->getVTList(),<br>
> -                        ArrayRef<SDValue>(Ops, Op0Op0->getNumOperands()));<br>
> +                        makeArrayRef(Ops, Op0Op0->getNumOperands()));<br>
>          return Op0Op0;<br>
>        }<br>
>      }<br>
> @@ -1284,7 +1284,7 @@ static SDValue lowerMSASplatZExt(SDValue<br>
>                        LaneA, LaneB, LaneA, LaneB, LaneA, LaneB, LaneA, LaneB };<br>
><br>
>    SDValue Result = DAG.getNode(ISD::BUILD_VECTOR, DL, ViaVecTy,<br>
> -                       ArrayRef<SDValue>(Ops, ViaVecTy.getVectorNumElements()));<br>
> +                       makeArrayRef(Ops, ViaVecTy.getVectorNumElements()));<br>
><br>
>    if (ViaVecTy != ResVecTy)<br>
>      Result = DAG.getNode(ISD::BITCAST, DL, ResVecTy, Result);<br>
> @@ -1324,7 +1324,7 @@ static SDValue getBuildVectorSplat(EVT V<br>
>                        SplatValueA, SplatValueB, SplatValueA, SplatValueB };<br>
><br>
>    SDValue Result = DAG.getNode(ISD::BUILD_VECTOR, DL, ViaVecTy,<br>
> -                       ArrayRef<SDValue>(Ops, ViaVecTy.getVectorNumElements()));<br>
> +                       makeArrayRef(Ops, ViaVecTy.getVectorNumElements()));<br>
><br>
>    if (VecTy != ViaVecTy)<br>
>      Result = DAG.getNode(ISD::BITCAST, DL, VecTy, Result);<br><br></blockquote><div><br></div><div>I think for at least the last two, there is a static array sized to the maximum vector size and the ViaVecTy.getVectorNumElements() determines how much of it is used. Could probably create a SmallVector there and explicitly push to the correct size.</div>
<div><br></div></div><br clear="all"><div><br></div>-- <br>~Craig
</div></div>