------- Comment #1 from pinskia at gmail dot com 2009-06-07 07:23 ------- Subject: Re: New: Array + XOR swap fails
Both of these are undefined. Look up about sequence point rules. Sent from my iPhone On Jun 7, 2009, at 12:15 AM, "ashutosh dot sharma dot 0204 at gmail dot com" <gcc-bugzi...@gcc.gnu.org> wrote: > 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 > -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40366