From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14100 invoked by alias); 7 Dec 2002 01:06:03 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 14086 invoked by uid 71); 7 Dec 2002 01:06:03 -0000 Date: Fri, 06 Dec 2002 17:06:00 -0000 Message-ID: <20021207010603.14085.qmail@sources.redhat.com> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, From: "Christian Ehrhardt" Subject: Re: c/8828: gcc reports some code is unreachable when it is not Reply-To: "Christian Ehrhardt" X-SW-Source: 2002-12/txt/msg00429.txt.bz2 List-Id: The following reply was made to PR c/8828; it has been noted by GNATS. From: "Christian Ehrhardt" To: Rolf Campbell Cc: reichelt@igpm.rwth-aachen.de, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, nobody@gcc.gnu.org, gcc-gnats@gcc.gnu.org Subject: Re: c/8828: gcc reports some code is unreachable when it is not Date: Sat, 7 Dec 2002 01:58:19 +0100 On Fri, Dec 06, 2002 at 11:22:32AM -0500, Rolf Campbell wrote: > But, this was compiled WITHOUT optimizations (gcc -Wunreachable-code -c > a.c), so there should be no removal of superfluous code, or folding of > break statements. Even without optimization it is possible that some code is unused and removed. In this particular case the following case statement switch (i) { case 0: for (; i<2; i++) x++ break; case 1: x++;break; } Is rewritten to look like this (even without optimization this is allowed): switch (i) { case 0: startfor: if (i>=2) goto caseend; x++; i++; goto startfor; break; case 1: x++;break; } caseend: which makes the first break statement unreachable. This is completly legal and the compiler is even right in some sense that the break statement is unreachable. Others should decide if this is actually a bug but the warning is off by default for a reason. regards Christian -- THAT'S ALL FOLKS!