First Last Prev Next    No search results available      Search page      Enter new bug
Bug#: 7248
Product:  
Component:  
Status: RESOLVED
Resolution: FIXED
Assigned To: Not yet assigned to anyone <unassigned@gcc.gnu.org>
Host:
Reported against  
Priority:  
Severity:  
Target Milestone:  
 
 
Target:
Reporter: martin@blom.org
Add CC:
CC:
Remove selected CCs
Build:
URL:
Summary:
Keywords:
Known to work:
Known to fail:

Attachment Description Type Created Size Actions
Create a New Attachment (proposed patch, testcase, etc.) View All

Bug 7248 depends on: Show dependency tree
Show dependency graph
Bug 7248 blocks:

Additional Comments:






View Bug Activity   |   Format For Printing   |   Clone This Bug


Description:   Last confirmed: Opened: 2002-07-09 12:36
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.

------- Comment #1 From martin@blom.org 2002-07-09 12:36 -------
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 \"\";

------- Comment #2 From Wolfgang Bangerth 2003-01-14 13:38 -------
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

------- Comment #3 From Andreas Schwab 2003-03-14 17:22 -------
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."


------- Comment #4 From Andreas Schwab 2003-03-17 10:22 -------
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
 


------- Comment #5 From martin@blom.org 2003-03-18 11:50 -------
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/
 
 
 


------- Comment #6 From Andreas Schwab 2003-03-18 19:45 -------
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
 

------- Comment #7 From Andreas Schwab 2003-03-19 10:02 -------
State-Changed-From-To: feedback->closed
State-Changed-Why: Patch applied to 3.2/3.3/3.4.

First Last Prev Next    No search results available      Search page      Enter new bug