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

Richard Earnshaw <rearnsha at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|---                         |FIXED
   Target Milestone|---                         |4.9.0

--- Comment #3 from Richard Earnshaw <rearnsha at gcc dot gnu.org> ---
Fixed on trunk.

#define test(X) long long operator X(struct a a, int c){ return a.b X 1;}

struct a
{
  long long b;
};
test(&)
test(|)
test(+)
test(-)
test(^)

Compiling -O2 and removing the fluff gives:

_Zan1ai:
        and     r0, r0, #1
        mov     r1, #0
        bx      lr
_Zor1ai:
        orr     r0, r0, #1
        bx      lr
_Zpl1ai:
        adds    r0, r0, #1
        adc     r1, r1, #0
        bx      lr
_Zmi1ai:
        subs    r0, r0, #1
        sbc     r1, r1, #0
        bx      lr
_Zeo1ai:
        eor     r0, r0, #1
        bx      lr

Reply via email to