]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
m68k.md (tablejump+2): Don't sign extend an address register.
authorAndreas Schwab <schwab@suse.de>
Thu, 30 Jan 2003 16:57:24 +0000 (16:57 +0000)
committerJoel Sherrill <joel@gcc.gnu.org>
Thu, 30 Jan 2003 16:57:24 +0000 (16:57 +0000)
2003-01-30  Andreas Schwab  <schwab@suse.de>

* 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.

From-SVN: r62147

gcc/ChangeLog
gcc/config/m68k/apollo68.h
gcc/config/m68k/coff.h
gcc/config/m68k/linux.h
gcc/config/m68k/m68k.md
gcc/config/m68k/m68kelf.h
gcc/config/m68k/mot3300.h
gcc/config/m68k/netbsd-elf.h
gcc/config/m68k/pbb.h

index 186ca64ee8e4636718b3ae4eb52e5b1530a556d0..ff4389e20f65c3c96c024bd0a64586c30a5b026a 100644 (file)
@@ -1,3 +1,15 @@
+2003-01-30  Andreas Schwab  <schwab@suse.de>
+
+       * 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.
+
 2003-01-30  Ralf Corsepius  <corsepiu@faw.uni-ulm.de>
 
        PR target/9316 
index 38fd5dd5eff3bb18ecb6e4b1be07810bad57aded..17089473f7b6ceaa98936aa74188bc2f3c762e0c 100644 (file)
@@ -1,5 +1,5 @@
 /* Definitions of target machine for GNU compiler.  Apollo 680X0 version.
-   Copyright (C) 1989, 1992, 1996, 1997, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1989, 1992, 1996, 1997, 1999, 2002 Free Software Foundation, Inc.
 
 This file is part of GNU CC.
 
@@ -177,12 +177,17 @@ Boston, MA 02111-1307, USA.  */
 /* config/m68k.md has an explicit reference to the program counter,
    prefix this by the register prefix.  */
 
-#define ASM_RETURN_CASE_JUMP                   \
-  do {                                         \
-    if (TARGET_5200)                           \
-      return "ext%.l %0\n\tjmp %%pc@(2,%0:l)"; \
-    else                                       \
-      return "jmp %%pc@(2,%0:w)";              \
+#define ASM_RETURN_CASE_JUMP                           \
+  do {                                                 \
+    if (TARGET_5200)                                   \
+      {                                                        \
+       if (ADDRESS_REG_P (operands[0]))                \
+         return "jmp %%pc@(2,%0:l)";                   \
+       else                                            \
+         return "ext%.l %0\n\tjmp %%pc@(2,%0:l)";      \
+      }                                                        \
+    else                                               \
+      return "jmp %%pc@(2,%0:w)";                      \
   } while (0)
 
 /* Here are the new register names.  */
index 9c677f0fada04195ed4e299b3e10c239188648b7..b93945d60208cd3d51de1aaa1ee5eee3c00d2111 100644 (file)
@@ -1,6 +1,6 @@
 /* Definitions of target machine for GNU compiler.
    m68k series COFF object files and debugging, version.
-   Copyright (C) 1994, 1996, 1997, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1994, 1996, 1997, 2000, 2002 Free Software Foundation, Inc.
 
 This file is part of GNU CC.
 
@@ -55,12 +55,17 @@ Boston, MA 02111-1307, USA.  */
 /* config/m68k.md has an explicit reference to the program counter,
    prefix this by the register prefix.  */
 
-#define ASM_RETURN_CASE_JUMP                   \
-  do {                                         \
-    if (TARGET_5200)                           \
-      return "ext%.l %0\n\tjmp %%pc@(2,%0:l)"; \
-    else                                       \
-      return "jmp %%pc@(2,%0:w)";              \
+#define ASM_RETURN_CASE_JUMP                           \
+  do {                                                 \
+    if (TARGET_5200)                                   \
+      {                                                        \
+       if (ADDRESS_REG_P (operands[0]))                \
+         return "jmp %%pc@(2,%0:l)";                   \
+       else                                            \
+         return "ext%.l %0\n\tjmp %%pc@(2,%0:l)";      \
+      }                                                        \
+    else                                               \
+      return "jmp %%pc@(2,%0:w)";                      \
   } while (0)
 
 /* Here are the new register names.  */
index 10f6a4a708402f71bb982396d5b4c5d00219b39f..c5a2cbca5b4e7ebe9a0197ed2fdb57f019247894 100644 (file)
@@ -194,12 +194,17 @@ Boston, MA 02111-1307, USA.  */
 
 /* Use the default action for outputting the case label.  */
 #undef ASM_OUTPUT_CASE_LABEL
-#define ASM_RETURN_CASE_JUMP                   \
-  do {                                         \
-    if (TARGET_5200)                           \
-      return "ext%.l %0\n\tjmp %%pc@(2,%0:l)"; \
-    else                                       \
-      return "jmp %%pc@(2,%0:w)";              \
+#define ASM_RETURN_CASE_JUMP                           \
+  do {                                                 \
+    if (TARGET_5200)                                   \
+      {                                                        \
+       if (ADDRESS_REG_P (operands[0]))                \
+         return "jmp %%pc@(2,%0:l)";                   \
+       else                                            \
+         return "ext%.l %0\n\tjmp %%pc@(2,%0:l)";      \
+      }                                                        \
+    else                                               \
+      return "jmp %%pc@(2,%0:w)";                      \
   } while (0)
 
 /* This is how to output an assembler line that says to advance the
index 35ca2baae55d288f240786e3f3b1f538d0832f5e..edc228ca1f0917b4099126be9fe3fd249781e295 100644 (file)
@@ -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.
 #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
     {
 #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 88154fc7a7f8b85caa35e0aeac46ca9c7532b033..f241c0f0f5d4156032d811fa7c973d1973cc9345 100644 (file)
@@ -1,7 +1,7 @@
 /* m68kelf support, derived from m68kv4.h */
 
 /* Target definitions for GNU compiler for mc680x0 running System V.4
-   Copyright (C) 1991, 1993, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1991, 1993, 2000, 2002 Free Software Foundation, Inc.
 
    Written by Ron Guilmette (rfg@netcom.com) and Fred Fish (fnf@cygnus.com).
 
@@ -73,12 +73,17 @@ Boston, MA 02111-1307, USA.  */
 /* config/m68k.md has an explicit reference to the program counter,
    prefix this by the register prefix.  */
 
-#define ASM_RETURN_CASE_JUMP                   \
-  do {                                         \
-    if (TARGET_5200)                           \
-      return "ext%.l %0\n\tjmp %%pc@(2,%0:l)"; \
-    else                                       \
-      return "jmp %%pc@(2,%0:w)";              \
+#define ASM_RETURN_CASE_JUMP                           \
+  do {                                                 \
+    if (TARGET_5200)                                   \
+      {                                                        \
+       if (ADDRESS_REG_P (operands[0]))                \
+         return "jmp %%pc@(2,%0:l)";                   \
+       else                                            \
+         return "ext%.l %0\n\tjmp %%pc@(2,%0:l)";      \
+      }                                                        \
+    else                                               \
+      return "jmp %%pc@(2,%0:w)";                      \
   } while (0)
 
 /* How to refer to registers in assembler output.
index 88e41fa03396c7a5a7abb688f6841869c96945c3..fc658336b267b1556334c40fc01042b857655061 100644 (file)
@@ -1,6 +1,6 @@
 /* Definitions of target machine for GNU compiler,
    SysV68 Motorola 3300 Delta Series.
-   Copyright (C) 1987, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
+   Copyright (C) 1987, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002
    Free Software Foundation, Inc.
    Contributed by Abramo and Roberto Bagnara (bagnara@dipisa.di.unipi.it)
    based on Alex Crain's 3B1 definitions.
@@ -441,12 +441,17 @@ Boston, MA 02111-1307, USA.  */
 #define ASM_OUTPUT_CASE_FETCH(file, labelno, regname)\
        asm_fprintf (file, "12(%Rpc,%s.", regname)
 
-#define ASM_RETURN_CASE_JUMP \
-  do {                                         \
-    if (TARGET_5200)                           \
-      return "ext%.l %0\n\tjmp 8(%%pc,%0.l)";  \
-    else                                       \
-      return "jmp 8(%%pc,%0.w)";               \
+#define ASM_RETURN_CASE_JUMP                           \
+  do {                                                 \
+    if (TARGET_5200)                                   \
+      {                                                        \
+       if (ADDRESS_REG_P (operands[0]))                \
+         return "jmp 8(%%pc,%0.l)";                    \
+       else                                            \
+         return "ext%.l %0\n\tjmp 8(%%pc,%0.l)";       \
+      }                                                        \
+    else                                               \
+      return "jmp 8(%%pc,%0.w)";                       \
   } while (0)
             
 #else /* USE_GAS */
index 09756034d9945f9c187bc291964e2d0993ca6176..06a024f5e062a2fd6fe850b66e24ad6e1c8e6d9b 100644 (file)
@@ -11,7 +11,7 @@ This file is part of GNU CC.
 
 GNU CC is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 1, or (at your option)
+the Free Software Foundation; either version 2, or (at your option)
 any later version.
 
 GNU CC is distributed in the hope that it will be useful,
@@ -228,15 +228,18 @@ while (0)
 
 /* Use the default action for outputting the case label.  */
 #undef ASM_OUTPUT_CASE_LABEL
-#define ASM_RETURN_CASE_JUMP                                           \
-do                                                                     \
-  {                                                                    \
-    if (TARGET_5200)                                                   \
-      return "ext%.l %0\n\tjmp %%pc@(2,%0:l)";                         \
-    else                                                               \
-      return "jmp %%pc@(2,%0:w)";                                      \
-  }                                                                    \
-while (0)
+#define ASM_RETURN_CASE_JUMP                           \
+  do {                                                 \
+    if (TARGET_5200)                                   \
+      {                                                        \
+       if (ADDRESS_REG_P (operands[0]))                \
+         return "jmp %%pc@(2,%0:l)";                   \
+       else                                            \
+         return "ext%.l %0\n\tjmp %%pc@(2,%0:l)";      \
+      }                                                        \
+    else                                               \
+      return "jmp %%pc@(2,%0:w)";                      \
+  } while (0)
 
 
 /* This is how to output an assembler line that says to advance the
index 37e3e23e0e36fce952a20bd09c7c893f4a871882..3818867a8c455a615aa799a812f4380fc8fb94f7 100644 (file)
@@ -1,6 +1,6 @@
 /* Definitions of target machine for GNU compiler.
    Citicorp/TTI Unicom PBB version (using GAS with a %-register prefix)
-   Copyright (C) 1987, 1988, 1990, 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1987, 1988, 1990, 1996, 1997, 2002 Free Software Foundation, Inc.
 
 This file is part of GNU CC.
 
@@ -113,12 +113,17 @@ Boston, MA 02111-1307, USA.  */
       && ! find_equiv_reg (0, get_last_insn (), 0, 0, 0, 8, Pmode))    \
       asm_fprintf (FILE, "\tmovl %Rd0,%Ra0\n"); } 
 
-#define ASM_RETURN_CASE_JUMP \
-  do {                                         \
-    if (TARGET_5200)                           \
-      return "ext%.l %0\n\tjmp %%pc@(2,%0:l)"; \
-    else                                       \
-      return "jmp %%pc@(2,%0:w)";              \
+#define ASM_RETURN_CASE_JUMP                           \
+  do {                                                 \
+    if (TARGET_5200)                                   \
+      {                                                        \
+       if (ADDRESS_REG_P (operands[0]))                \
+         return "jmp %%pc@(2,%0:l)";                   \
+       else                                            \
+         return "ext%.l %0\n\tjmp %%pc@(2,%0:l)";      \
+      }                                                        \
+    else                                               \
+      return "jmp %%pc@(2,%0:w)";                      \
   } while (0)
 
 /* Although the gas we use can create .ctor and .dtor sections from N_SETT