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