From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17325 invoked by alias); 10 Nov 2004 11:01:17 -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 17313 invoked by uid 48); 10 Nov 2004 11:01:10 -0000 Date: Wed, 10 Nov 2004 11:01:00 -0000 Message-ID: <20041110110110.17311.qmail@sourceware.org> From: "nathan at gcc dot gnu dot org" To: gcc-bugs@gcc.gnu.org In-Reply-To: <20040728170038.16796.steinmtz@us.ibm.com> References: <20040728170038.16796.steinmtz@us.ibm.com> Reply-To: gcc-bugzilla@gcc.gnu.org Subject: [Bug rtl-optimization/16796] PowerPC - Unnecessary Floating Point Register Copy X-Bugzilla-Reason: CC X-SW-Source: 2004-11/txt/msg01236.txt.bz2 List-Id: ------- Additional Comments From nathan at gcc dot gnu dot org 2004-11-10 11:01 ------- The fault is not the register allocator, is is a problem introduced by flow2 and the existance of conditional returns on PPC. During register allocation there is one exit block. The returns are 'x, x, x+x & x', thus the global allocator sets the exit block to copy 'x' to the return register. flow2 replaces some of those branches to the exit block with conditional returns, because 'x' resides in both DF:33 and DF:32. The remaining use of the exit is the load from the union into DF:32, the location of 'x' during the function. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16796