OSDN Git Service

(tablejump): Use extl to explicitly sign extend index registern on
[pf3gnuchains/gcc-fork.git] / gcc / config / m68k / m68k.md
index 31e9a48..86a70b6 100644 (file)
 #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
 ")