diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-01-28 22:17:21 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-01-28 22:17:21 +0000 |
commit | 251538cedba8a9200716284faae81608779f5b3d (patch) | |
tree | a87256b3d8466749e82908bcca67d8f54182767d /gcc/config/m68k/m68k.md | |
parent | a455589cd089b44cb788a1d9369cee33bf22f264 (diff) | |
download | gcc-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.md | 39 |
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 { |