This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/5119] [m68k] Constraint specified for vector jump is illegal for mcf5200


PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=5119



------- Additional Comments From bernie at develer dot com  2003-09-27 03:14 -------
The provided testcase does not fail any more on mainline.
The checkin below seems to have fixed it a while ago.
Can we close the PR now?

revision 1.54
date: 2003/01/28 22:17:20;  author: rth;  state: Exp;  lines: +33 -6
branches:  1.54.4;
        * config/m68k/m68k.md (tablejump+2): Don't sign extend an address
        register.
        * config/m68k/apollo68.h (ASM_RETURN_CASE_JUMP): Likewise.
        * config/m68k/coff.h (ASM_RETURN_CASE_JUMP): Likewise.
        * config/m68k/linux.h (ASM_RETURN_CASE_JUMP): Likewise.
        * config/m68k/m68kelf.h (ASM_RETURN_CASE_JUMP): Likewise.
        * config/m68k/mot3300.h (ASM_RETURN_CASE_JUMP): Likewise.
        * config/m68k/netbsd-elf.h (ASM_RETURN_CASE_JUMP): Likewise.
        * config/m68k/pbb.h (ASM_RETURN_CASE_JUMP): Likewise.

diff -u -3 -p -r1.53 -r1.54
--- gcc/config/m68k/m68k.md     9 Jan 2003 11:02:59 -0000       1.53
+++ gcc/config/m68k/m68k.md     28 Jan 2003 22:17:20 -0000      1.54
@@ -1,5 +1,5 @@
 ;;- Machine description for GNU compiler, Motorola 68000 Version
-;;  Copyright (C) 1987, 1988, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001
+;;  Copyright (C) 1987, 1988, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002
 ;;  Free Software Foundation, Inc.

 ;; This file is part of GNU CC.
@@ -6973,17 +6973,33 @@
 #ifdef SGS
 #ifdef ASM_OUTPUT_CASE_LABEL
   if (TARGET_5200)
-    return \"ext%.l %0\;jmp 6(%%pc,%0.l)\";
+    {
+      if (ADDRESS_REG_P (operands[0]))
+       return \"jmp 6(%%pc,%0.l)\";
+      else
+       return \"ext%.l %0\;jmp 6(%%pc,%0.l)\";
+    }
   else
     return \"jmp 6(%%pc,%0.w)\";
 #else
   if (TARGET_5200)
     {
+      if (ADDRESS_REG_P (operands[0]))
+       {
+#ifdef CRDS
+         return \"jmp 2(pc,%0.l)\";
+#else
+         return \"jmp 2(%%pc,%0.l)\";
+#endif  /* end !CRDS */
+       }
+      else
+       {
 #ifdef CRDS
-      return \"ext%.l %0\;jmp 2(pc,%0.l)\";
+         return \"ext%.l %0\;jmp 2(pc,%0.l)\";
 #else
-      return \"extl %0\;jmp 2(%%pc,%0.l)\";
+         return \"extl %0\;jmp 2(%%pc,%0.l)\";
 #endif  /* end !CRDS */
+       }
     }
   else
     {
@@ -6997,11 +7013,22 @@
 #else /* not SGS */
   if (TARGET_5200)
     {
+      if (ADDRESS_REG_P (operands[0]))
+       {
 #ifdef MOTOROLA
-      return \"ext%.l %0\;jmp (2,pc,%0.l)\";
+         return \"jmp (2,pc,%0.l)\";
 #else
-      return \"extl %0\;jmp pc@(2,%0:l)\";
+         return \"jmp pc@(2,%0:l)\";
 #endif
+       }
+      else
+       {
+#ifdef MOTOROLA
+         return \"ext%.l %0\;jmp (2,pc,%0.l)\";
+#else
+         return \"extl %0\;jmp pc@(2,%0:l)\";
+#endif
+       }
     }
   else
     {


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]