aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMarek Michalkiewicz <marekm@linux.org.pl>2000-10-13 19:30:15 +0200
committerDenis Chertykov <denisc@gcc.gnu.org>2000-10-13 21:30:15 +0400
commit08f812767679a5d57e95d68fc27e29cb0aa621fc (patch)
tree1e6d64b8cf487cf45ade6e4effd627a8a8f8ce2b /gcc
parent4b9454025b3a5dc0f7bed051d5026a09b5db6376 (diff)
downloadgcc-08f812767679a5d57e95d68fc27e29cb0aa621fc.zip
gcc-08f812767679a5d57e95d68fc27e29cb0aa621fc.tar.gz
gcc-08f812767679a5d57e95d68fc27e29cb0aa621fc.tar.bz2
avr.c (output_movhi, [...]): Fix loading constants 1 and 2 to NO_LD_REGS.
* config/avr/avr.c (output_movhi, output_movsisf): Fix loading constants 1 and 2 to NO_LD_REGS. From-SVN: r36862
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/avr/avr.c30
2 files changed, 25 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f826ec3..89900833 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2000-10-12 Marek Michalkiewicz <marekm@linux.org.pl>
+
+ * config/avr/avr.c (output_movhi, output_movsisf): Fix loading
+ constants 1 and 2 to NO_LD_REGS.
+
2000-10-13 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* Makefile.in (c-parse.c, tradcif.c): Create atomically.
diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c
index 642fccb..e8926b3 100644
--- a/gcc/config/avr/avr.c
+++ b/gcc/config/avr/avr.c
@@ -1616,9 +1616,10 @@ output_movhi (insn, operands, l)
return AS1 (inc,%0 ; reg_was_0);
}
- *l = 2;
- return (AS1 (clr,%0) CR_TAB
- AS1 (inc,%0));
+ *l = 3;
+ return (AS1 (clr,%A0) CR_TAB
+ AS1 (clr,%B0) CR_TAB
+ AS1 (inc,%A0));
}
else if (src == const2_rtx)
{
@@ -1629,10 +1630,11 @@ output_movhi (insn, operands, l)
AS1 (inc,%0));
}
- *l = 3;
- return (AS1 (clr,%0) CR_TAB
- AS1 (inc,%0) CR_TAB
- AS1 (inc,%0));
+ *l = 4;
+ return (AS1 (clr,%A0) CR_TAB
+ AS1 (clr,%B0) CR_TAB
+ AS1 (inc,%A0) CR_TAB
+ AS1 (inc,%A0));
}
else if (src == constm1_rtx)
{
@@ -2280,11 +2282,19 @@ output_movsisf(insn, operands, l)
*l = 1;
return AS1 (inc,%A0 ; reg_was_0);
}
-
- *l = 4;
- return (AS1 (clr,%D0) CR_TAB
+ if (AVR_ENHANCED)
+ {
+ *l = 4;
+ return (AS1 (clr,%A0) CR_TAB
+ AS1 (clr,%B0) CR_TAB
+ AS2 (movw,%C0,%A0) CR_TAB
+ AS1 (inc,%A0));
+ }
+ *l = 5;
+ return (AS1 (clr,%A0) CR_TAB
AS1 (clr,%B0) CR_TAB
AS1 (clr,%C0) CR_TAB
+ AS1 (clr,%D0) CR_TAB
AS1 (inc,%A0));
}
else if (src == const2_rtx)