From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15280 invoked by alias); 7 Aug 2007 17:52:03 -0000 Received: (qmail 13903 invoked by uid 48); 7 Aug 2007 17:51:51 -0000 Date: Tue, 07 Aug 2007 17:52:00 -0000 Message-ID: <20070807175151.13902.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug target/30961] [4.1/4.2/4.3 regression] redundant reg/mem stores/moves In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "pluto at agmk dot net" 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: 2007-08/txt/msg00465.txt.bz2 ------- Comment #25 from pluto at agmk dot net 2007-08-07 17:51 ------- (In reply to comment #24) > (In reply to comment #23) > > (In reply to comment #22) > > > There are 2 issues, convert and load. They may be caused by different > > > patches and should be tracked separately when doing binary search. > > > > i've filled the 'load' issue as PR33008. > > the gcc-reload-second-2.patch fixes 'convert' and finally this PR. > > > > Which checkin caused the convert regression? i don't know but the 'convert' issue is almost fixed. gcc-4.2 patched against PR27567 and gcc-reload-second-2.patch produces: float convert_int2float( int in ) { float f; __builtin_memcpy( &f, &in, sizeof( f ) ); return f; } double convert_long2double( long in ) { double f; __builtin_memcpy( &f, &in, sizeof( f ) ); return f; } {-m64 -O2} convert_int2float: movl %edi, -4(%rsp) movss -4(%rsp), %xmm0 ret convert_long2double: movq %rdi, -8(%rsp) movsd -8(%rsp), %xmm1 <== reload-second patch doesn't work here. movapd %xmm1, %xmm0 <== / ret {-m32 -O2 -fomit-frame-pointer} convert_int2float: flds 4(%esp) ret convert_long2double: fldl 4(%esp) ret -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30961