Tres Melton wrote:
Has anyone actually looked into why this is failing?
By the rules of Discreet Math/Boolean Algebra:
something xor something = 0
something_else xor 0 = something_else
so
valA ^ ( valA ^ valB ) = valB
If that is not working then you may have found a compiler bug (probably
in the register allocator). The appropriate output code should resemble
this (AT&T syntax: op src, dest):
Tres,
Its not the xor thats failing. Its the cast of the LHS of the
assignments.
The problem line in libast.h is:
# define BINSWAP(a, b) (((long) (a)) ^= ((long) (b)) ^= ((long) (a))
^= ((long) (b)))
With gcc4 the following is invalid:
int a=1, b=2;
(long)a = (long)b;
and that is the test I proposed for configure.
I understand that this is a ISO C99 restriction and that gcc4 is just a
bit more pedantic
than gcc3.
John
-------------------------------------------------------
This SF.Net email is sponsored by Yahoo.
Introducing Yahoo! Search Developer Network - Create apps using Yahoo!
Search APIs Find out how you can build Yahoo! directly into your own
Applications - visit http://developer.yahoo.net/?fr=offad-ysdn-ostg-q22005
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel