From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Daney Subject: Re: [PATCH 01/10] Add support for GCC-4.5's __builtin_unreachable() to compiler.h Date: Mon, 14 Sep 2009 08:40:23 -0700 Message-ID: <4AAE63E7.90909@caviumnetworks.com> References: <4AA991C1.1050800@caviumnetworks.com> <1252627011-2933-1-git-send-email-ddaney@caviumnetworks.com> <200909111633.00665.mb@bu3sch.de> <4AAA73A4.9010601@caviumnetworks.com> <10f740e80909120022m72ad5ea7t692fba93cd3114e9@mail.gmail.com> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <10f740e80909120022m72ad5ea7t692fba93cd3114e9@mail.gmail.com> Sender: linux-alpha-owner@vger.kernel.org List-ID: Content-Type: text/plain; charset="us-ascii"; format="flowed" To: Geert Uytterhoeven Cc: Michael Buesch , linuxppc-dev@lists.ozlabs.org, torvalds@linux-foundation.org, akpm@linux-foundation.org, linux-mips@linux-mips.org, Heiko Carstens , linuxppc-dev@ozlabs.org, Paul Mackerras , "H. Peter Anvin" , linux-s390@vger.kernel.org, linux-am33-list@redhat.com, Helge Deller , x86@kernel.org, Ingo Molnar , Mike Frysinger , Ivan Kokshaysky , uclinux-dist-devel@blackfin.uclinux.org, Thomas Gleixner , Richard Henderson , Haavard Skinnemoen , linux-parisc@vger.kernel.org, linux-kernel@vger.kernel.org, ralf@linux-mips.org, Kyle McMartin , linux-alpha@vger.kernel.org, Martin Schwidefsky , linux390@de.ibm.com, Koichi Geert Uytterhoeven wrote: > On Fri, Sep 11, 2009 at 17:58, David Daney wrote: >> Michael Buesch wrote: >>> On Friday 11 September 2009 01:56:42 David Daney wrote: >>>> +/* Unreachable code */ >>>> +#ifndef unreachable >>>> +# define unreachable() do { for (;;) ; } while (0) >>>> +#endif >>> # define unreachable() do { } while (1) >>> >>> ? :) >> Clearly I was not thinking clearly when I wrote that part. RTH noted the >> same thing. I will fix it. > > However, people are so used to seeing the `do { } while (0)' idiom, > that they might miss > there's a `1' here, not a `0'. > > So perhaps it's better to use plain `for (;;)' for infinite loops? > I don't think so. The only valid token that can follow 'do { } while (1)' is ';', any statement may follow 'for (;;)', so there is a greater possibility to silently screw things up with the for(;;) form. David Daney