Bug 25871

Summary: TRAMPOLINE_TEMPLATE uses 32bit moves on 64bit code
Product: gcc Reporter: Joshua Kinard <kumba>
Component: targetAssignee: Richard Sandiford <rsandifo>
Status: RESOLVED FIXED    
Severity: normal CC: gcc-bugs, toolchain
Priority: P3    
Version: 4.2.0   
Target Milestone: ---   
Host: Target: mips64-*-*
Build: Known to work:
Known to fail: Last reconfirmed: 2006-04-28 22:36:05
Attachments: Use dmove/move where appropriate
Use dmove/move where appropriate

Description Joshua Kinard 2006-01-20 06:47:38 UTC
In gcc/config/mips/mips.h, the TRAMPOLINE_TEMPLATE macro uses three 32bit move statements, that when working with 64bit code, will cause problems.  The only time this has been observed thus far was in filesystem code borrowed from grub which relied heavily on nested functions.

A patch against trunk is attached, but this bug goes as far back as 3.3.x.
Comment 1 Joshua Kinard 2006-01-20 06:48:26 UTC
Created attachment 10683 [details]
Use dmove/move where appropriate
Comment 2 Joshua Kinard 2006-01-20 06:54:40 UTC
Created attachment 10684 [details]
Use dmove/move where appropriate

Typo in original, this is the correct version.
Comment 3 Andrew Pinski 2006-01-20 14:10:16 UTC
Conifmred but this is actually not a regression from any versions of GCC (after the EGCS split) that I can tell from as the source has not changed that much.
Comment 4 Joseph S. Myers 2006-04-26 08:39:06 UTC
Subject: Bug 25871

Author: jsm28
Date: Wed Apr 26 08:38:58 2006
New Revision: 113272

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=113272
Log:
	From Bugzilla:
	2006-04-26  Joshua Kinard  <kumba@gentoo.org>

	PR target/25871
	* gcc/config/mips/mips.h (TRAMPOLINE_TEMPLATE): Avoid 32-bit moves
	with 64-bit pointers.

Modified:
    branches/csl-gxxpro-3_4-branch/ChangeLog.csl
    branches/csl-gxxpro-3_4-branch/gcc/config/mips/mips.h

Comment 5 Joseph S. Myers 2006-04-26 08:40:32 UTC
Subject: Bug 25871

Author: jsm28
Date: Wed Apr 26 08:40:26 2006
New Revision: 113273

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=113273
Log:
	From Bugzilla:
	2006-04-26  Joshua Kinard  <kumba@gentoo.org>

	PR target/25871
	* gcc/config/mips/mips.h (TRAMPOLINE_TEMPLATE): Avoid 32-bit moves
	with 64-bit pointers.

Modified:
    branches/csl/sourcerygxx-4_1/ChangeLog.csl
    branches/csl/sourcerygxx-4_1/gcc/config/mips/mips.h

Comment 6 Richard Sandiford 2006-04-28 22:36:05 UTC
The patch looks good to me, thanks, and should be small enough to
avoid the need for a copyright assignment.  I'll apply it next week.
Comment 7 Richard Sandiford 2006-05-02 12:57:58 UTC
Subject: Bug 25871

Author: rsandifo
Date: Tue May  2 12:57:52 2006
New Revision: 113460

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=113460
Log:
2006-05-02  Joshua Kinard  <kumba@gentoo.org>

	PR target/25871
	* gcc/config/mips/mips.h (TRAMPOLINE_TEMPLATE): Avoid 32-bit moves
	with 64-bit pointers.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/mips/mips.h

Comment 8 Richard Sandiford 2006-05-02 13:02:22 UTC
Fixed on mainline.