diff options
author | Anatoly Sokolov <aesok@post.ru> | 2007-03-27 21:53:51 +0400 |
---|---|---|
committer | Anatoly Sokolov <aesok@gcc.gnu.org> | 2007-03-27 21:53:51 +0400 |
commit | 2cd11105ecf340589c6d0061599841acdf985619 (patch) | |
tree | 32ed8252bb7e43545ecd0027341be03e42ef6318 | |
parent | 7558d8101e0d80fbeb7346e1c3084f23b6f95276 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/avr/avr.c | 4 | ||||
-rw-r--r-- | gcc/config/avr/avr.h | 2 |
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) |