From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25451 invoked by alias); 1 Mar 2003 00:36:01 -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 25418 invoked by uid 71); 1 Mar 2003 00:36:01 -0000 Date: Sat, 01 Mar 2003 00:36:00 -0000 Message-ID: <20030301003601.25417.qmail@sources.redhat.com> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, From: Richard Henderson Subject: Re: optimization/7189: gcc -O2 -Wall does not print ``control reaches end of non-void function'' warning Reply-To: Richard Henderson X-SW-Source: 2003-03/txt/msg00003.txt.bz2 List-Id: The following reply was made to PR optimization/7189; it has been noted by GNATS. From: Richard Henderson To: Steven Bosscher Cc: gcc-gnats@gcc.gnu.org, am-99173@konami.com, gcc-bugs@gcc.gnu.org, nobody@gcc.gnu.org, gcc-prs@gcc.gnu.org Subject: Re: optimization/7189: gcc -O2 -Wall does not print ``control reaches end of non-void function'' warning Date: Fri, 28 Feb 2003 16:29:13 -0800 On Thu, Feb 13, 2003 at 10:04:14PM +0100, Steven Bosscher wrote: > One way to "fix" this bug is to move check_function_return_warnings() up > to before sibling call optimization in toplev.c, but maybe there's a > more correct fix? I don't really like doing this earlier. To get correct results we'd have to do an extra DCE pass, which seems wasteful wrt compile-time for a warning. We should be able to detect this by looking at (1) predecessors of the EXIT block, (2) noticing that they end in a call_insn with SIBLING_CALL_P set, and (3) noticing that the return value embedded in the call_insn is correct for the return value of the function. r~