------- Comment #1 from daney at gcc dot gnu dot org  2008-09-20 00:38 -------
This may be an ABI issue, but since -mlong-calls -mno-abicalls doesn't seem to
have a very rigorous ABI definition, we probably have some latitude with
respect to implementing this.

foo.c:
--------------
extern int a;
int foo(int, int, int);
int b(int i, int j, int k)
{
    a++;
    return foo(i, k, j) + 5;
}
--------------
$ mipsel-linux-gcc -mabi=64 -march=r5000 -O2 -S -fno-pic -pg -mno-abicalls
-mlong-calls foo.c

$ cat foo.s
        .file   1 "foo.c"
        .section .mdebug.abiN64
        .previous
        .gnu_attribute 4, 3
        .text
        .align  2
        .align  3
        .globl  b
        .ent    b
        .type   b, @function
b:
        .set    nomips16
        .frame  $sp,16,$31              # vars= 0, regs= 1/0, args= 0, gp= 0
        .mask   0x80000000,-8
        .fmask  0x00000000,0
        daddiu  $sp,$sp,-16
        sd      $31,8($sp)
        .set    noat
        move    $1,$31          # save current return address
        jal     _mcount
        .set    at
        lui     $8,%highest(a)
        daddiu  $8,$8,%higher(a)
        lui     $2,%hi(a)
        dsll    $8,$8,32
        daddu   $8,$8,$2
        lw      $2,%lo(a)($8)
        move    $7,$5
        lui     $3,%highest(foo)
        move    $5,$6
        daddiu  $3,$3,%higher(foo)
        move    $6,$7
        lui     $7,%hi(foo)
        addiu   $2,$2,1
        daddiu  $7,$7,%lo(foo)
        dsll    $3,$3,32
        daddu   $3,$3,$7
        .set    noreorder
        .set    nomacro
        jalr    $3
        sw      $2,%lo(a)($8)
        .set    macro
        .set    reorder

        ld      $31,8($sp)
        addiu   $2,$2,5
        .set    noreorder
        .set    nomacro
        j       $31
        daddiu  $sp,$sp,16
        .set    macro
        .set    reorder

        .end    b
        .ident  "GCC: (GNU) 4.3.2"


-- 

daney at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2008-09-20 00:38:15
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37593

Reply via email to