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