m68k.md ("extendqidi2"): When source is an address register use a word move.
authorAndreas Schwab <schwab@suse.de>
Sun, 24 Jul 2005 19:15:21 +0000 (19:15 +0000)
committerAndreas Schwab <schwab@gcc.gnu.org>
Sun, 24 Jul 2005 19:15:21 +0000 (19:15 +0000)
* config/m68k/m68k.md ("extendqidi2"): When source is an address
register use a word move.  Correct operand of ext.w in 68000 code.

From-SVN: r102337

gcc/ChangeLog
gcc/config/m68k/m68k.md

index 77d07239c6914e40e1406cb9aecc1427a5d41775..d86dc82639455351a32749d82c0fa14cc30fb7ba 100644 (file)
@@ -1,3 +1,8 @@
+2005-07-24  Andreas Schwab  <schwab@suse.de>
+
+       * config/m68k/m68k.md ("extendqidi2"): When source is an address
+       register use a word move.  Correct operand of ext.w in 68000 code.
+
 2005-07-23  Mark Mitchell  <mark@codesourcery.com>
 
        * dwarf2out.c (gen_variable_die): Treat un-emitted COMDAT
index 5c65b1c80d3259b23d507456e422ef0698e1d569..1a4df3bdf7d8caf021f09fe5a1e8fe30cbb3dc3b 100644 (file)
   if (TARGET_CFV4)
     return "mvs%.b %1,%2\;smi %0\;extb%.l %0";
   if (TARGET_68020 || TARGET_COLDFIRE)
-    return "move%.b %1,%2\;extb%.l %2\;smi %0\;extb%.l %0";
+    {
+      if (ADDRESS_REG_P (operands[1]))
+       return "move%.w %1,%2\;extb%.l %2\;smi %0\;extb%.l %0";
+      else
+       return "move%.b %1,%2\;extb%.l %2\;smi %0\;extb%.l %0";
+    }
   else
-    return "move%.b %1,%2\;ext%.w %0\;ext%.l %2\;move%.l %2,%0\;smi %0";
+    {
+      if (ADDRESS_REG_P (operands[1]))
+       return "move%.w %1,%2\;ext%.w %2\;ext%.l %2\;move%.l %2,%0\;smi %0";
+      else
+       return "move%.b %1,%2\;ext%.w %2\;ext%.l %2\;move%.l %2,%0\;smi %0";
+    }
 })
 
 (define_insn "extendhidi2"