From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9235 invoked by alias); 3 Jun 2010 20:17:40 -0000 Received: (qmail 9201 invoked by uid 48); 3 Jun 2010 20:17:29 -0000 Date: Thu, 03 Jun 2010 20:17:00 -0000 Message-ID: <20100603201729.9200.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug target/44364] Wrong code with e500 double floating point In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "gcc at breakpoint dot cc" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2010-06/txt/msg00388.txt.bz2 ------- Comment #5 from gcc at breakpoint dot cc 2010-06-03 20:17 ------- >So clearly the caller's assembly is wrong; it should be saving all 64-bits of >r9 (volatile gpr) first. Yes, that it what I've been pointing out. There is an optimization in the stack code which uses 32bit stores/loads if no double types are used. I looks to me like the functions branch and register saves are done by the RTL and it does not know about the 64bit GPRs here. This is only a guess, I'm not a gcc guy. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364