The following test example outputs 0000000a:00000000 instead of 0000000a:ffffffff as one would expect. #include <stdio.h> typedef unsigned long long Fixed64; void test( int a ) { Fixed64 f = ( (Fixed64) a << 32) | 0xffffffffULL; printf( "%08x:%08x\n", (long) (f >> 32), (long) (f & 0xffffffffULL) ); } int main( void ) { test( 10 ); } Release: gcc version 2.95.3 20010315 (release) Environment: AmigaOS or Linux cross compiler.
Fix: --- config/m68k/m68k.md.orig Tue Jul 9 21:03:52 2002 +++ config/m68k/m68k.md Tue Jul 9 21:03:55 2002 @@ -3813,23 +3813,23 @@ if (GET_CODE (operands[0]) == REG) operands[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); else operands[0] = adj_offsettable_operand (operands[0], 4); switch (INTVAL (lo)) { case 0 : break; case -1 : /* FIXME : a scratch register would be welcome here if operand[0] is not a register */ - output_asm_insn (\"move%.l %#-1,%R0\", operands); + output_asm_insn (\"move%.l %#-1,%0\", operands); break; default : { rtx xoperands[3]; xoperands[0] = operands[0]; xoperands[2] = lo; output_asm_insn (output_iorsi3 (xoperands), xoperands); } } return \"\";
State-Changed-From-To: open->feedback State-Changed-Why: Your fix has been applied already sometime back in 1997. Do you have the chance to test the problem with some newer version of gcc? gcc2.95.x is no longer maintained. Thanks Wolfgang
From: Andreas Schwab <schwab@suse.de> To: martin@blom.org, gcc-gnats@gcc.gnu.org, gcc-bugs@gcc.gnu.org, bangerth@gcc.gnu.org, gcc-prs@gcc.gnu.org Cc: Subject: Re: target/7248: [m68k] broken "inclusive or" code Date: Fri, 14 Mar 2003 17:22:49 +0100 I can still reproduce the bug with gcc 3.4 as of today. The included patch is still needed. There are no changes around this place since the file was imported into CVS. Andreas. -- Andreas Schwab, SuSE Labs, schwab@suse.de SuSE Linux AG, Deutschherrnstr. 15-19, D-90429 Nürnberg Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different."
From: schwab@gcc.gnu.org To: gcc-gnats@gcc.gnu.org Cc: Subject: target/7248 Date: 17 Mar 2003 10:22:03 -0000 CVSROOT: /cvs/gcc Module name: gcc Branch: gcc-3_2-branch Changes by: schwab@gcc.gnu.org 2003-03-17 10:22:03 Modified files: gcc : ChangeLog gcc/config/m68k: m68k.md Log message: PR target/7248 * config/m68k/m68k.md (iordi3): Fix setting low half to -1. From martin@blom.org. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.13152.2.657.2.263&r2=1.13152.2.657.2.264 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/m68k/m68k.md.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.48.8.1.4.2&r2=1.48.8.1.4.3
From: Martin Blom <martin@blom.org> To: Andreas Schwab <schwab@suse.de> Cc: gcc-gnats@gcc.gnu.org, <gcc-bugs@gcc.gnu.org>, <bangerth@gcc.gnu.org>, <gcc-prs@gcc.gnu.org> Subject: Re: target/7248: [m68k] broken "inclusive or" code Date: Tue, 18 Mar 2003 11:50:13 +0100 (CET) | On 14 Jan 2003 bangerth@dealii.org wrote: | | Old Synopsis: gcc 2.95.3 for m68k generates broken "inclusive or" code | New Synopsis: [m68k] broken "inclusive or" code | | State-Changed-From-To: open->feedback | State-Changed-By: bangerth | State-Changed-When: Tue Jan 14 13:38:55 2003 | State-Changed-Why: | Your fix has been applied already sometime back in 1997. Do | you have the chance to test the problem with some newer | version of gcc? gcc2.95.x is no longer maintained. On Fri, 14 Mar 2003, Andreas Schwab wrote: > I can still reproduce the bug with gcc 3.4 as of today. The included > patch is still needed. There are no changes around this place since the > file was imported into CVS. Hi Andreas and the rest ... That's what I thought when I looked in the CVS before reporting the bug. Unfortunately, I've not yet been able to verify it myself by actually running a test program built with gcc 3.x for m68k (because of, well, "lack of time" and lack of a system able to run gcc 3.x for m68k). Sorry about that. -- ---- Martin Blom --------------------------- martin@blom.org ---- Eccl 1:18 http://martin.blom.org/
From: schwab@gcc.gnu.org To: gcc-gnats@gcc.gnu.org Cc: Subject: target/7248 Date: 18 Mar 2003 19:45:15 -0000 CVSROOT: /cvs/gcc Module name: gcc Branch: gcc-3_3-branch Changes by: schwab@gcc.gnu.org 2003-03-18 19:45:15 Modified files: gcc : ChangeLog gcc/config/m68k: m68k.md Log message: PR target/7248 * config/m68k/m68k.md (iordi3): Fix setting low half to -1. From martin@blom.org. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.16114.2.320&r2=1.16114.2.321 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/m68k/m68k.md.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.51.14.2&r2=1.51.14.3
State-Changed-From-To: feedback->closed State-Changed-Why: Patch applied to 3.2/3.3/3.4.