aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@suse.de>2005-07-24 19:15:21 +0000
committerAndreas Schwab <schwab@gcc.gnu.org>2005-07-24 19:15:21 +0000
commit1b8452d093bd8c1642cda1c3369b9f3d7009fe6f (patch)
tree181d25c76e8df394815b547afa607f306f4d38d8 /gcc
parent2b4029550fba3d7d2c413e285eab58c3a5e40f55 (diff)
downloadgcc-1b8452d093bd8c1642cda1c3369b9f3d7009fe6f.zip
gcc-1b8452d093bd8c1642cda1c3369b9f3d7009fe6f.tar.gz
gcc-1b8452d093bd8c1642cda1c3369b9f3d7009fe6f.tar.bz2
m68k.md ("extendqidi2"): When source is an address register use a word move.
* 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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/m68k/m68k.md14
2 files changed, 17 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 77d0723..d86dc82 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md
index 5c65b1c..1a4df3b 100644
--- a/gcc/config/m68k/m68k.md
+++ b/gcc/config/m68k/m68k.md
@@ -1299,9 +1299,19 @@
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"