[llvm-commits] New FastCC breaks struct return

Duncan Sands baldrick at free.fr
Wed Sep 10 07:41:49 PDT 2008


Hi Evan, it looks like the reason the new FastCC
calling convention broke several Ada tests is that
it doesn't interact properly with struct return.
Here are the differences between working (no FastCC)
and not working (FastCC):

        subl    $8, %esp                                      |         leal    -32(%ebp), %ecx
        leal    -32(%ebp), %eax                               <
        movl    %eax, (%esp)                                  <
        call    c34005c__pkg__create.234                                call    c34005c__pkg__create.234
        addl    $4, %esp                                      <

where c34005c__pkg__create.234 is:

define internal fastcc void @c34005c__pkg__create.234(%struct.c34005c__TsB___XUP* noalias sret %agg.result) {

The call was in fact an invoke.

Best wishes,

Duncan.



More information about the llvm-commits mailing list