summaryrefslogtreecommitdiff
path: root/gcc/config/m68k/m68k.md
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2003-01-28 22:17:21 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2003-01-28 22:17:21 +0000
commit251538cedba8a9200716284faae81608779f5b3d (patch)
treea87256b3d8466749e82908bcca67d8f54182767d /gcc/config/m68k/m68k.md
parenta455589cd089b44cb788a1d9369cee33bf22f264 (diff)
downloadgcc-251538cedba8a9200716284faae81608779f5b3d.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@62030 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/m68k/m68k.md')
-rw-r--r--gcc/config/m68k/m68k.md39
1 files changed, 33 insertions, 6 deletions
diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md
index 67b099218d8..2812cd57c86 100644
--- a/gcc/config/m68k/m68k.md
+++ b/gcc/config/m68k/m68k.md
@@ -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
{