diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1997-03-25 15:20:06 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1997-03-25 15:20:06 -0500 |
commit | 641241db80de133687af86a5432e4f72358ccd37 (patch) | |
tree | a7af93536f61b01ea666713cbd5df9a2c3df54b8 | |
parent | a139ec256447757e93586056a40ab8a71acdd4dc (diff) | |
download | gcc-641241db80de133687af86a5432e4f72358ccd37.zip gcc-641241db80de133687af86a5432e4f72358ccd37.tar.gz gcc-641241db80de133687af86a5432e4f72358ccd37.tar.bz2 |
(tablejump): Use extl to explicitly sign extend index registern on
TARGET_5200.
From-SVN: r13799
-rw-r--r-- | gcc/config/m68k/m68k.md | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md index 31e9a48d..86a70b6 100644 --- a/gcc/config/m68k/m68k.md +++ b/gcc/config/m68k/m68k.md @@ -6061,20 +6061,45 @@ #else #ifdef SGS #ifdef ASM_OUTPUT_CASE_LABEL - return \"jmp 6(%%pc,%0.w)\"; + if (TARGET_5200) + return \"ext%.l %0\;jmp 6(%%pc,%0.l)\"; + else + return \"jmp 6(%%pc,%0.w)\"; +#else + if (TARGET_5200) + { +#ifdef CRDS + return \"ext%.l %0\;jmp 2(pc,%0.l)\"; #else + return \"extl %0\;jmp 2(%%pc,%0.l)\"; +#endif /* end !CRDS */ + } + else + { #ifdef CRDS - return \"jmp 2(pc,%0.w)\"; + return \"jmp 2(pc,%0.w)\"; #else - return \"jmp 2(%%pc,%0.w)\"; + return \"jmp 2(%%pc,%0.w)\"; #endif /* end !CRDS */ + } #endif #else /* not SGS */ + if (TARGET_5200) + { #ifdef MOTOROLA - return \"jmp (2,pc,%0.w)\"; + return \"ext%.l %0\;jmp (2,pc,%0.l)\"; #else - return \"jmp pc@(2,%0:w)\"; + return \"extl %0\;jmp pc@(2,%0:l)\"; #endif + } + else + { +#ifdef MOTOROLA + return \"jmp (2,pc,%0.w)\"; +#else + return \"jmp pc@(2,%0:w)\"; +#endif + } #endif #endif ") |