aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnatoly Sokolov <aesok@post.ru>2007-03-27 21:53:51 +0400
committerAnatoly Sokolov <aesok@gcc.gnu.org>2007-03-27 21:53:51 +0400
commit2cd11105ecf340589c6d0061599841acdf985619 (patch)
tree32ed8252bb7e43545ecd0027341be03e42ef6318
parent7558d8101e0d80fbeb7346e1c3084f23b6f95276 (diff)
downloadgcc-2cd11105ecf340589c6d0061599841acdf985619.zip
gcc-2cd11105ecf340589c6d0061599841acdf985619.tar.gz
gcc-2cd11105ecf340589c6d0061599841acdf985619.tar.bz2
avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack pointer regs.
* config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack pointer regs. * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__" regs to "__SP_L__" and "__SP_H__". From-SVN: r123263
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/avr/avr.c4
-rw-r--r--gcc/config/avr/avr.h2
3 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7600b6e..05a207e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2006-03-27 Anatoly Sokolov <aesok@post.ru>
+
+ * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
+ pointer regs.
+ * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
+ regs to "__SP_L__" and "__SP_H__".
+
2007-03-27 Richard Guenther <rguenther@suse.de>
* tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c
index 436c570..652c4bb 100644
--- a/gcc/config/avr/avr.c
+++ b/gcc/config/avr/avr.c
@@ -5610,6 +5610,10 @@ jump_over_one_insn_p (rtx insn, rtx dest)
int
avr_hard_regno_mode_ok (int regno, enum machine_mode mode)
{
+ /* Disallow QImode in stack pointer regs. */
+ if ((regno == REG_SP || regno == (REG_SP + 1)) && mode == QImode)
+ return 0;
+
/* The only thing that can go into registers r28:r29 is a Pmode. */
if (regno == REG_Y && mode == Pmode)
return 1;
diff --git a/gcc/config/avr/avr.h b/gcc/config/avr/avr.h
index fb003ce..1dba48d 100644
--- a/gcc/config/avr/avr.h
+++ b/gcc/config/avr/avr.h
@@ -624,7 +624,7 @@ sprintf (STRING, "*.%s%lu", PREFIX, (unsigned long)(NUM))
"r8","r9","r10","r11","r12","r13","r14","r15", \
"r16","r17","r18","r19","r20","r21","r22","r23", \
"r24","r25","r26","r27","r28","r29","r30","r31", \
- "__SPL__","__SPH__","argL","argH"}
+ "__SP_L__","__SP_H__","argL","argH"}
#define FINAL_PRESCAN_INSN(insn, operand, nop) final_prescan_insn (insn, operand,nop)