Displaying 10 results from an estimated 10 matches for "lowerx86_32fastcccallto".
2007 Sep 06
2
[LLVMdev] RFC: Tail call optimization X86
...ean bit :)
> As for what you described here. I am having a hard time following
> it. :-) Please send patch.
>
Okay here is a patch containing the tail call optimization code
for X86. It mostly does what i have described in preceeding
emails:
There is new code for lowering fastcc calls:
LowerX86_32FastCCCallTo
LowerX86_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 conventio...
2007 Sep 11
0
[LLVMdev] RFC: Tail call optimization X86
...match
and the
+// function CALL is immediatly followed by a RET
+bool X86TargetLowering::IsEligibleForTailCallElimination(SDOperand
Call, SelectionDAG& DAG, unsigned CalleeCC, SDOperand Callee) {
+ bool IsEligible = false;
+ SDNode * CallNode = Call.Val;
...
+SDOperand X86TargetLowering::LowerX86_32FastCCCallTo(SDOperand Op,
+ SelectionDAG &DAG,
+ unsigned CC) {
+ DOUT << "LowerX86_32FastCCCallTo\n";
+ SDOperand Chain = Op.getOperand(0);
+ bool isVarArg = cast<Constan...
2007 Aug 11
1
[LLVMdev] Tail call optimization deeds
...nt. Only functions with
callingconv::fastcc and the tail call attribute will be optimized.
Maybe the next step should be to integrate the code into the other
calling convention lowering. Here is what i have at the moment:
If callingconv::fastcc is used the function will be custom lowered.
(LowerX86_32FastCCCallTo and LowerX86_32FastCCArguments, the code is
based on the std calling convention minus ecx as inreg)
The lowering code decides whether the function call really is
eligible for tail call optimization tco (caller-callee agree, tail
call opt is enabled, tail position, TODO: check for PIC code).
I...
2007 Sep 11
2
[LLVMdev] RFC: Tail call optimization X86
...L is immediatly followed by a RET
> +bool X86TargetLowering::IsEligibleForTailCallElimination(SDOperand
> Call, SelectionDAG& DAG, unsigned CalleeCC, SDOperand Callee) {
> + bool IsEligible = false;
> + SDNode * CallNode = Call.Val;
> ...
>
> +SDOperand X86TargetLowering::LowerX86_32FastCCCallTo(SDOperand Op,
> + SelectionDAG
> &DAG,
> + unsigned CC) {
> + DOUT << "LowerX86_32FastCCCallTo\n";
> + SDOperand Chain = Op.getOperand(0);
> + bool...
2007 Aug 13
0
[LLVMdev] Tail call optimization deeds
...th
> callingconv::fastcc and the tail call attribute will be optimized.
> Maybe the next step should be to integrate the code into the other
> calling convention lowering. Here is what i have at the moment:
>
> If callingconv::fastcc is used the function will be custom lowered.
> (LowerX86_32FastCCCallTo and LowerX86_32FastCCArguments, the code is
> based on the std calling convention minus ecx as inreg)
> The lowering code decides whether the function call really is
> eligible for tail call optimization tco (caller-callee agree, tail
> call opt is enabled, tail position, TODO: check fo...
2007 Aug 09
4
[LLVMdev] Tail call optimization thoughts
Hello, Arnold.
Only quick comments, I'll try to make a full review a little bit later.
> 0.)a fast calling convention (maybe use the current
> CallingConv::Fast, or create a CallingConv::TailCall)
> 1.) lowering of formal arguments
> like for example x86_LowerCCCArguments in stdcall mode
> we need to make sure that later mentioned CALL_CLOBBERED_REG is
>
2007 Sep 24
2
[LLVMdev] RFC: Tail call optimization X86
...ote that I interpreted the following paragraph of you:
> IsEligibleForTailCallElimination() should be a target hook. This way
> TargetLowering::LowerCallTo() can determine whether a call is
> eligible for tail call elimination and insert the current ISD::CALL
> node. X86TargetLowering::LowerX86_32FastCCCallTo() will not have to
> handle non-tail calls.
in the following way:
I check in TargetLowering:LowerCallTo whether the call
IsEligibleForTailCallElimination
and insert a ISD:CALL node with the tailcall attribute set or not.
Then in X86TargetLowering::LowerCALL i can dispatch the right
lowerin...
2007 Sep 24
0
[LLVMdev] RFC: Tail call optimization X86
...preted the following paragraph of you:
>> IsEligibleForTailCallElimination() should be a target hook. This way
>> TargetLowering::LowerCallTo() can determine whether a call is
>> eligible for tail call elimination and insert the current ISD::CALL
>> node. X86TargetLowering::LowerX86_32FastCCCallTo() will not have to
>> handle non-tail calls.
>
> in the following way:
> I check in TargetLowering:LowerCallTo whether the call
> IsEligibleForTailCallElimination
> and insert a ISD:CALL node with the tailcall attribute set or not.
>
> Then in X86TargetLowering::LowerCALL...
2007 Sep 24
0
[LLVMdev] RFC: Tail call optimization X86
Hi Arnold,
This is a very good first step! Thanks! Comments below.
Evan
Index: test/CodeGen/X86/constant-pool-remat-0.ll
===================================================================
--- test/CodeGen/X86/constant-pool-remat-0.ll (revision 42247)
+++ test/CodeGen/X86/constant-pool-remat-0.ll (working copy)
@@ -1,8 +1,10 @@
; RUN: llvm-as < %s | llc -march=x86-64 | grep LCPI | count 3
;
2007 Sep 23
2
[LLVMdev] RFC: Tail call optimization X86
The patch is against revision 42247.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: tailcall-src.patch
Type: application/octet-stream
Size: 62639 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20070923/4770302f/attachment.obj>