From 251538cedba8a9200716284faae81608779f5b3d Mon Sep 17 00:00:00 2001 From: rth Date: Tue, 28 Jan 2003 22:17:21 +0000 Subject: * 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 --- gcc/config/m68k/m68k.md | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) (limited to 'gcc/config/m68k/m68k.md') 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 { -- cgit v1.2.1