Displaying 3 results from an estimated 3 matches for "cc_x86_32_tailcall".
2007 Sep 06
2
[LLVMdev] RFC: Tail call optimization X86
...werX86_32FastCCArguments
There is some code checking whether a TAIL CALL really is
eligible for tail call optimization.
I modified:
LowerRET
to create a TC_RETURN node. (used for adjusting stackpointer and
jumping to function in epilogue, similar to EH_RETURN)
There is a new calling convention:
CC_X86_32_TailCall
which is ~ CC_X86_32_C minus ECX.
There are some modifications in
X86InstrInfo.td
There are new X86 DAG nodes:
TRUETAILCALL
TC_RETURN
There is some voodoo in X86RegisterInfo.cpp to deal with the
RETADDR problem described in X86ISelLowering.cpp comments.
(callee has more args than caller -> t...
2007 Sep 11
0
[LLVMdev] RFC: Tail call optimization X86
...= Op.getOperand(4);
+ //unsigned NumOps = (Op.getNumOperands() - 5) / 2;
+
+ // Analyze operands of the call, assigning locations to each operand.
+ SmallVector<CCValAssign, 16> ArgLocs;
+ CCState CCInfo(CC, isVarArg, getTargetMachine(), ArgLocs);
+ CCInfo.AnalyzeCallOperands(Op.Val, CC_X86_32_TailCall);
+ if (isTailCall &&
+ IsEligibleForTailCallElimination(Op, DAG,CC, Callee) &&
+ PerformTailCallOpt) {
IsEligibleForTailCallElimination() should be a target hook. This way
TargetLowering::LowerCallTo() can determine whether a call is
eligible for tail call eliminat...
2007 Sep 11
2
[LLVMdev] RFC: Tail call optimization X86
...d NumOps = (Op.getNumOperands() - 5) / 2;
> +
> + // Analyze operands of the call, assigning locations to each
> operand.
> + SmallVector<CCValAssign, 16> ArgLocs;
> + CCState CCInfo(CC, isVarArg, getTargetMachine(), ArgLocs);
> + CCInfo.AnalyzeCallOperands(Op.Val, CC_X86_32_TailCall);
> + if (isTailCall &&
> + IsEligibleForTailCallElimination(Op, DAG,CC, Callee) &&
> + PerformTailCallOpt) {
>
>
> IsEligibleForTailCallElimination() should be a target hook. This way
> TargetLowering::LowerCallTo() can determine whether a call is
&g...