avr.c (avr_hard_regno_call_part_clobbered): Use LAST_CALLEE_SAVED_REG instead of...
authorPitchumani Sivanupandi <pitchumani.s@atmel.com>
Mon, 11 May 2015 17:16:43 +0000 (17:16 +0000)
committerDenis Chertykov <denisc@gcc.gnu.org>
Mon, 11 May 2015 17:16:43 +0000 (20:16 +0300)
* config/avr/avr.c (avr_hard_regno_call_part_clobbered): Use
LAST_CALLEE_SAVED_REG instead of hard-coded register number.
(Last callee saved reg is different for AVR_TINY architecture)

From-SVN: r223009

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

index 77aa930136dc836551a607e7c0e9b37a3c910560..869a881d2195a24ca5d9cb142a01d023f5a70233 100644 (file)
@@ -1,3 +1,9 @@
+2015-05-11  Pitchumani Sivanupandi  <pitchumani.s@atmel.com>
+
+       * config/avr/avr.c (avr_hard_regno_call_part_clobbered): Use
+       LAST_CALLEE_SAVED_REG instead of hard-coded register number.
+       (Last callee saved reg is different for AVR_TINY architecture)
+
 2015-05-11  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/i386/i386.c (ix86_loop_unroll_adjust): Use PATTERN (insn)
index 7436b59a970720af63bbf64046823e04ad25eab1..8f98bf51f1f301acd46e5bc8cccb0fa01e26540c 100644 (file)
@@ -11332,9 +11332,10 @@ avr_hard_regno_call_part_clobbered (unsigned regno, machine_mode mode)
     return 0;
 
   /* Return true if any of the following boundaries is crossed:
-     17/18, 27/28 and 29/30.  */
+     17/18 or 19/20 (if AVR_TINY), 27/28 and 29/30.  */
 
-  return ((regno < 18 && regno + GET_MODE_SIZE (mode) > 18)
+  return ((regno <= LAST_CALLEE_SAVED_REG &&
+           regno + GET_MODE_SIZE (mode) > (LAST_CALLEE_SAVED_REG + 1))
           || (regno < REG_Y && regno + GET_MODE_SIZE (mode) > REG_Y)
           || (regno < REG_Z && regno + GET_MODE_SIZE (mode) > REG_Z));
 }