[llvm-commits] [PATCH] No need to check SRetReturnReg again

Duncan Sands baldrick at free.fr
Tue May 25 07:09:48 PDT 2010


Hi Zhongxing Xu, this looks ok to me.  Was it applied?

Ciao,

Duncan.

> ping?
>
> The reason of this change is that in LowerFormalArguments() we have:
>
> if (Is64Bit && MF.getFunction()->hasStructRetAttr()) {
>      X86MachineFunctionInfo *FuncInfo =
> MF.getInfo<X86MachineFunctionInfo>();
>      unsigned Reg = FuncInfo->getSRetReturnReg();
>      if (!Reg) {
>        Reg =
> MF.getRegInfo().createVirtualRegister(getRegClassFor(MVT::i64));
>        FuncInfo->setSRetReturnReg(Reg);
>      }
>      SDValue Copy = DAG.getCopyToReg(DAG.getEntryNode(), dl, Reg,
> InVals[0]);
>      Chain = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Copy, Chain);
>    }
>
> On Fri, May 21, 2010 at 3:45 PM, Zhongxing Xu <xuzhongxing at gmail.com
> <mailto:xuzhongxing at gmail.com>> wrote:
>
>     Index: lib/Target/X86/X86ISelLowering.cpp
>     ===================================================================
>     --- lib/Target/X86/X86ISelLowering.cpp    (版本 104313)
>     +++ lib/Target/X86/X86ISelLowering.cpp    (工作副本)
>     @@ -1256,10 +1256,8 @@
>           MachineFunction &MF = DAG.getMachineFunction();
>           X86MachineFunctionInfo *FuncInfo =
>     MF.getInfo<X86MachineFunctionInfo>();
>           unsigned Reg = FuncInfo->getSRetReturnReg();
>     -    if (!Reg) {
>     -      Reg = MRI.createVirtualRegister(getRegClassFor(MVT::i64));
>     -      FuncInfo->setSRetReturnReg(Reg);
>     -    }
>     +    assert(Reg &&
>     + "SRetReturnReg should have been set in LowerFormalArguments().");
>           SDValue Val = DAG.getCopyFromReg(Chain, dl, Reg, getPointerTy());
>
>           Chain = DAG.getCopyToReg(Chain, dl, X86::RAX, Val, Flag);
>
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list