search for: numbytesforcalleetopush

Displaying 7 results from an estimated 7 matches for "numbytesforcalleetopush".

2007 Oct 05
0
[LLVMdev] RFC: Tail call optimization X86
...er/callee cleans arguments off the stack" is not controlled by the .td. It's controlled in code by the operands of CALLSEQ_END. for example in SDOperand X86TargetLowering::LowerCCCCallTo: ... if (CC == CallingConv::X86_StdCall || CC == CallingConv::Fast) { if (isVarArg) NumBytesForCalleeToPush = isSRet ? 4 : 0; else NumBytesForCalleeToPush = NumBytes; assert(!(isVarArg && CC==CallingConv::Fast) && "CallingConv::Fast does not support varargs."); } else { // If this is is a call to a struct-return function, the callee //...
2007 Oct 04
3
[LLVMdev] RFC: Tail call optimization X86
Comments: CheckDAGForTailCallsAndFixThem - 1. for (SelectionDAG::allnodes_iterator BE = DAG.allnodes_begin(), + BI = prior(DAG.allnodes_end()); BI != BE; BI--) { Please use pre-decrement instead of post-decrement. 2. The function is slower than it should be. You are scanning all the nodes in the DAG twice. You should just examine DAG.getRoot() to make determine whether it's a
2007 Oct 05
6
[LLVMdev] RFC: Tail call optimization X86
...rands of CALLSEQ_END. Ok, that's even easier to have it be controlled by the command line option. Evan > > for example in SDOperand X86TargetLowering::LowerCCCCallTo: > ... > if (CC == CallingConv::X86_StdCall || CC == CallingConv::Fast) { > if (isVarArg) > NumBytesForCalleeToPush = isSRet ? 4 : 0; > else > NumBytesForCalleeToPush = NumBytes; > assert(!(isVarArg && CC==CallingConv::Fast) && > "CallingConv::Fast does not support varargs."); > } else { > // If this is is a call to a struct-return...
2007 Oct 05
0
[LLVMdev] RFC: Tail call optimization X86
...en easier to have it be controlled by the command line > option. > > Evan > >> >> for example in SDOperand X86TargetLowering::LowerCCCCallTo: >> ... >> if (CC == CallingConv::X86_StdCall || CC == CallingConv::Fast) { >> if (isVarArg) >> NumBytesForCalleeToPush = isSRet ? 4 : 0; >> else >> NumBytesForCalleeToPush = NumBytes; >> assert(!(isVarArg && CC==CallingConv::Fast) && >> "CallingConv::Fast does not support varargs."); >> } else { >> // If this is is a...
2010 Mar 03
0
[LLVMdev] [PATCH] New calling convention for use by GHC
...llingConv::Fast) && "Var args not supported with calling convention fastcc"); + assert(!(isVarArg && CallConv == CallingConv::GHC) && + "Var args not supported with calling convention ghc"); Likewise. @@ -2151,7 +2168,8 @@ unsigned NumBytesForCalleeToPush; if (IsCalleePop(isVarArg, CallConv)) NumBytesForCalleeToPush = NumBytes; // Callee pops everything - else if (!Is64Bit && CallConv != CallingConv::Fast && IsStructRet) + else if (!Is64Bit && CallConv != CallingConv::Fast && + CallConv != Cal...
2010 Mar 07
1
[LLVMdev] [PATCH] New calling convention for use by GHC
..."Var args not supported with calling convention fastcc"); > + assert(!(isVarArg&& CallConv == CallingConv::GHC)&& > + "Var args not supported with calling convention ghc"); > > Likewise. > > @@ -2151,7 +2168,8 @@ > unsigned NumBytesForCalleeToPush; > if (IsCalleePop(isVarArg, CallConv)) > NumBytesForCalleeToPush = NumBytes; // Callee pops everything > - else if (!Is64Bit&& CallConv != CallingConv::Fast&& IsStructRet) > + else if (!Is64Bit&& CallConv != CallingConv::Fast&& > +...
2010 Mar 03
2
[LLVMdev] [PATCH] New calling convention for use by GHC
Hi all, As previously mentioned on this list the Haskell compiler GHC has a new LLVM based back-end. The back-end needs a new calling convention to efficiently use LLVM and that is what this patch does, just for X86 at the moment. Breakdown: 1) Need actual calling convention Touches: - include/llvm/CallingConv.h - lib/Target/X86/X86CallingConv.td 2) Handling new calling