[Bug c/40366] New: Array + XOR swap fails
ashutosh dot sharma dot 0204 at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sun Jun 7 07:15:00 GMT 2009
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
More information about the Gcc-bugs
mailing list