Compiler Version: gcc (GCC) 4.2.4 (Ubuntu 4.2.4-1ubuntu3) Copyright (C) 2007 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Sample code: #include <stdio.h> int main() { int a[2]; a[0]=10; a[1]=20; printf("a[0] = %d a[1] = %d\n", a[0], a[1]); a[0]^=a[1]^=a[0]^=a[1]; printf("a[0] = %d a[1] = %d\n", a[0], a[1]); return 0; } gcc test.c -o test -O2 a[0] = 10 a[1] = 20 a[0] = 20 a[1] = 10 gcc test.c -o test -O0 a[0] = 10 a[1] = 20 a[0] = 0 a[1] = 10 Bug: When compiled with -O0 swap fails. Swap only fails in case of array. Following code works fine with -O0: #include <stdio.h> int main() { int a, b; a=10; b=20; printf("a = %d b = %d\n", a, b); a^=b^=a^=b; printf("a = %d b = %d\n", a, b); return 0; } -- Summary: Array + XOR swap fails Product: gcc Version: unknown Status: UNCONFIRMED Severity: major Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: ashutosh dot sharma dot 0204 at gmail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40366