Displaying 20 results from an estimated 4000 matches similar to: "[LLVMdev] fastcc, tail calls, and gcc"
2009 Feb 12
0
[LLVMdev] fastcc, tail calls, and gcc
On Thu, Feb 12, 2009 at 5:34 PM, Jeff Kuskin <jk500500 at yahoo.com> wrote:
> Two related questions.
> (2) Why does the x86-64 JIT backend generate a "ret $0x8" instruction
> to return from a fastcc function that is (a) marked as fastcc
> (CallingConv::Fast); but (b) takes no arguments and returns 'void'?
fastcc generated code ends with this:
> c20800
2009 Feb 12
0
[LLVMdev] fastcc, tail calls, and gcc
Jeff Kuskin wrote:
> Correct? If not, how do I call a LLVM JIT-generated fastcc function
> from a function statically compiled by GCC?
Well, you can always generate a little wrapper function with C calling
convention which just calls the fastcc function.
--
Dr. Albert Gr"af
Dept. of Music-Informatics, University of Mainz, Germany
Email: Dr.Graef at t-online.de, ag at
2009 Feb 13
1
[LLVMdev] fastcc, tail calls, and gcc
Albert Graef wrote:
> Jeff Kuskin wrote:
>> Correct? If not, how do I call a LLVM JIT-generated fastcc function
>> from a function statically compiled by GCC?
>
> Well, you can always generate a little wrapper function with C calling
> convention which just calls the fastcc function.
>
I use the fastcall convention all the time.
LLVM-jitted code calling GCC-compile
2007 Oct 05
6
[LLVMdev] RFC: Tail call optimization X86
On Oct 5, 2007, at 2:42 AM, Arnold Schwaighofer wrote:
> Hi Evan,
> I incoporated the changes you request but to the following i have got
> a question:
>
>> Also, moving the option
>> there will allow us to change fastcc ABI (callee popping arguments)
>> only when this option is on. See Chris' email:
>
> I am not to sure on that. because that would make
2007 Oct 05
0
[LLVMdev] RFC: Tail call optimization X86
Hi Evan,
I incoporated the changes you request but to the following i have got
a question:
> Also, moving the option
> there will allow us to change fastcc ABI (callee popping arguments)
> only when this option is on. See Chris' email:
I am not to sure on that. because that would make modules compiled
with the flag on incompatible with ones compiled without the flag off
as
2009 Feb 12
1
[LLVMdev] fastcc, tail calls, and gcc
On Feb 12, 2009, at 3:23 PM, Albert Graef wrote:
> Jeff Kuskin wrote:
>> Correct? If not, how do I call a LLVM JIT-generated fastcc function
>> from a function statically compiled by GCC?
>
> Well, you can always generate a little wrapper function with C calling
> convention which just calls the fastcc function.
You can do a quick bit of assembly code to make sure that
2007 Sep 24
2
[LLVMdev] RFC: Tail call optimization X86
On 24 Sep 2007, at 09:18, Evan Cheng wrote:
> +; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse2 -stats -info-
> output-file - | grep asm-printer | grep 9
> +; change preceeding line form ... | grep 8 to ..| grep 9 since
> +; with new fastcc has std call semantics causing a stack adjustment
> +; after the function call
>
> Not sure if I understand this. Can you illustrate
2008 Sep 12
3
[LLVMdev] Tail-calling
For marking a call site as a tail call you have to call void
setTailCall(bool isTC = true) on the CallInst. The calling convention
of the function needs to be CallingConv::Fast (currently only fastcc
calls are optimized) and the call has to be in tail position of
course.
To enable tail call optimization in an embedded vm i guess you would
include llvm/Target/TargetOptions.h and set the static
2007 Sep 24
0
[LLVMdev] RFC: Tail call optimization X86
On Sep 24, 2007, at 2:25 AM, Arnold Schwaighofer wrote:
>
> On 24 Sep 2007, at 09:18, Evan Cheng wrote:
>> +; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse2 -stats -info-
>> output-file - | grep asm-printer | grep 9
>> +; change preceeding line form ... | grep 8 to ..| grep 9 since
>> +; with new fastcc has std call semantics causing a stack adjustment
>>
2007 Sep 25
2
[LLVMdev] RFC: Tail call optimization X86
> > FastCC use to be caller pops arguments so there was no stack
> > adjustment after the
> > call to qux. Now FastCC has callee pops arguments on return semantics
> > so the
> > x86 backend inserts a stack adjustment after the call.
> >
> > _array:
> > subl $12, %esp
> > movss LCPI1_0, %xmm0
> > mulss
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
0
[LLVMdev] RFC: Tail call optimization X86
On Oct 5, 2007, at 10:41 AM, Evan Cheng wrote:
>
> On Oct 5, 2007, at 2:42 AM, Arnold Schwaighofer wrote:
>
>> Hi Evan,
>> I incoporated the changes you request but to the following i have got
>> a question:
>>
>>> Also, moving the option
>>> there will allow us to change fastcc ABI (callee popping arguments)
>>> only when this option is
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 Aug 11
1
[LLVMdev] Tail call optimization deeds
Okay so i implemented an(other :) initial version for X86-32 backend,
this time based on TOT:
It is not very generic at the moment. 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
2007 Aug 13
0
[LLVMdev] Tail call optimization deeds
Hi Arnold and Anton,
Sorry I have been ignoring your emails on this topic. It's an
important task and I really need sometime to think about it (and talk
to Chris about it!) But this has been an especially hectic week. I am
also going to vacation soon so I am not sure when I would get around
to it.
If Chris has time, I am sure he has lots to say on this topic. :-)
Otherwise, please
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 06
2
[LLVMdev] RFC: Tail call optimization X86
Hi Evan,
first off thanks to you and Chris for taking time.
On 6 Sep 2007, at 00:57, Evan Cheng wrote:
> We'd like to see tail call optimization to be similar to the target
> independent lowering of ISD::CALL nodes. These are auto-generated
> from ???CallingConv.td files. Some target specific details such as
> function address register (ECX in your example) should be coded in
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>
2007 Oct 05
0
[LLVMdev] RFC: Tail call optimization X86
On Fri, 5 Oct 2007, Arnold Schwaighofer wrote:
>> to me like llvm-gcc honors that. Certainly it should.
>
> This would imply one fastcc abi (callee pops args on return) to rule
> them all?
> That is only if fastcall translates to llvm fastcc of course.
fastcall != fastcc. fastcall is a well defined convention on x86 that has
very specific ABI requirements. fastcc, on the
2007 Oct 05
5
[LLVMdev] RFC: Tail call optimization X86
On 5 Oct 2007, at 20:00, Dale Johannesen wrote:
>>> I am not to sure on that. because that would make modules compiled
>>> with the flag on incompatible with ones compiled without the flag
>>> off
>>> as stack behaviour would mismatch.
>>> It would be no problem to make the behaviour dependent on the -tail-
>>> call-opt flag. i am not sure