avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack pointer regs.
authorAnatoly Sokolov <aesok@post.ru>
Tue, 27 Mar 2007 17:53:51 +0000 (21:53 +0400)
committerAnatoly Sokolov <aesok@gcc.gnu.org>
Tue, 27 Mar 2007 17:53:51 +0000 (21:53 +0400)
* 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

gcc/ChangeLog
gcc/config/avr/avr.c
gcc/config/avr/avr.h

index 7600b6e05f173b1e08f5597d9d2d13b155f353f7..05a207e8fae225ab85202b70b4715e9a4f9505c1 100644 (file)
@@ -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
index 436c570bdf60289eb37bf4e2536fb96dc55a602c..652c4bb79e851e2a9e805633d7e73286614afbe1 100644 (file)
@@ -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;
index fb003ce0b2cc155527b7131e0ff9777399af7398..1dba48dfe8e25a349acdafcfdd923349d2b52f34 100644 (file)
@@ -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)