From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7742 invoked by alias); 2 Dec 2004 07:11:21 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 7677 invoked by uid 48); 2 Dec 2004 07:11:14 -0000 Date: Thu, 02 Dec 2004 07:11:00 -0000 Message-ID: <20041202071114.7676.qmail@sourceware.org> From: "ebotcazou at gcc dot gnu dot org" To: gcc-bugs@gcc.gnu.org In-Reply-To: <20040716071005.16586.ned@bike-nomad.com> References: <20040716071005.16586.ned@bike-nomad.com> Reply-To: gcc-bugzilla@gcc.gnu.org Subject: [Bug rtl-optimization/16586] [3.3/3.4 Regression] -O3 -fno-gcse ICE verify_local_live_at_start flow.c:575 X-Bugzilla-Reason: CC X-SW-Source: 2004-12/txt/msg00268.txt.bz2 List-Id: ------- Additional Comments From ebotcazou at gcc dot gnu dot org 2004-12-02 07:11 ------- This one is really tricky to fix: this is the classical case in which the return value register's liveness propagates backwards until an unrelated use/clobber of the register is encountered. This works more or less until the regrename pass, which locally renames the register in the latter def/use/clobber chain; so the return value register's liveness is not masked anymore and propagates back to the start of the basic block. But, after reload, register liveness information is not allowed to change at basic block boundaries so the compiler aborts on a sanity check. The easy workaround is to make sure that every code path in a function returning a value really returns a value. -- What |Removed |Added ---------------------------------------------------------------------------- CC| |ebotcazou at gcc dot gnu dot | |org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16586