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; }
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-bugzilla@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 >
*** This bug has been marked as a duplicate of 11751 ***
*** Bug 260998 has been marked as a duplicate of this bug. *** Seen from the domain http://volichat.com Page where seen: http://volichat.com/adult-chat-rooms Marked for reference. Resolved as fixed @bugzilla.
Tentative patch: ... diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c https://www.webb-dev.co.uk/computers/crypto-apps/ index f318a125319..c20c0d7d649 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c http://www.compilatori.com/health/premium-subscription/ @@ -3625,11 +3625,10 @@ create_exception_master_breakpoint (void) if (create_exception_master_breakpoint_probe (obj)) continue; http://www.acpirateradio.co.uk/health/transportation-security/ - /* Iterate over separate debug objects and try an _Unwind_DebugHook - kind breakpoint. */ http://www.logoarts.co.uk/health/printers-for-health/ - for (objfile *sepdebug = obj->separate_debug_objfile; - sepdebug != nullptr; sepdebug = sepdebug->separate_debug_objfile) - if (create_exception_master_breakpoint_hook (sepdebug)) http://www.slipstone.co.uk/health/sound-systems/ + /* Iterate over main and separate debug objects and try an + _Unwind_DebugHook kind breakpoint. */ + for (objfile *debug_objfile : obj->separate_debug_objfiles ()) http://embermanchester.uk/health/social-privacy/ + if (create_exception_master_breakpoint_hook (debug_objfile)) break; Tentative patch: http://connstr.net/health/usb-chargers/ ... diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index f318a125319..c20c0d7d649 100644 http://joerg.li/property/latest-suvs/ --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -3625,11 +3625,10 @@ create_exception_master_breakpoint (void) http://www.jopspeech.com/property/slim-pen-2/ if (create_exception_master_breakpoint_probe (obj)) continue; http://www.wearelondonmade.com/health/check-ups/ - /* Iterate over separate debug objects and try an _Unwind_DebugHook - kind breakpoint. */ - for (objfile *sepdebug = obj->separate_debug_objfile; https://waytowhatsnext.com/computers/discord-and-steam/ - sepdebug != nullptr; sepdebug = sepdebug->separate_debug_objfile) - if (create_exception_master_breakpoint_hook (sepdebug)) http://www.iu-bloomington.com/computers/real-me-gt2/ + /* Iterate over main and separate debug objects and try an + _Unwind_DebugHook kind breakpoint. */ https://komiya-dental.com/computers/huawei-technology/ + for (objfile *debug_objfile : obj->separate_debug_objfiles ()) + if (create_exception_master_breakpoint_hook (debug_objfile)) break; http://www-look-4.com/health/winter-sickness/