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



--- Comment #1 from qball at sarine dot nl 2012-10-05 13:17:17 UTC ---

For 4.6.2 (xilinx) this seems to fix the code generation:

mb_gnu/src/gcc/gcc/config/microblaze/microblaze.c

temp/mb_gnu/src/gcc/gcc/config/microblaze/microblaze.c

@@ -558,7 +558,7 @@

       {

         return !(flag_pic && pic_address_needs_scratch (x));

       }

-    else if (flag_pic == 2)

+    else if (flag_pic)

       {

         return false;

       }



Generates:

    addik    r1,r1,-16

    swi    r19,r1,8

    swi    r20,r1,12

    addk    r19,r1,r0

    lwi    r3,r20,temp@GOT

    lbui    r3,r3,0

    sext8    r3,r3

    addk    r4,r3,r0

    lwi    r3,r20,temp2@GOT

    lwi    r3,r3,0

    addk    r4,r4,r3

    lwi    r3,r20,temp4@GOT

    lhui    r3,r3,0

    sext16    r3,r3

    addk    r3,r4,r3

    swi    r3,r19,4

    addk    r1,r19,r0

    lwi    r19,r1,8

    lwi    r20,r1,12

    addik    r1,r1,16

    rtsd    r15,8

    nop        # Unfilled delay slot

Reply via email to