avr.c (avr_function_arg_advance): Fix thinko about when a value is actually passed...
authorGeorg-Johann Lay <avr@gjlay.de>
Fri, 10 Jun 2011 11:06:36 +0000 (11:06 +0000)
committerGeorg-Johann Lay <gjl@gcc.gnu.org>
Fri, 10 Jun 2011 11:06:36 +0000 (11:06 +0000)
* config/avr/avr.c (avr_function_arg_advance): Fix thinko about
when a value is actually passed in regs.

From-SVN: r174898

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

index 8fb1ad988ac76da77beb9a2c62705ab8881bc066..0c18e056a75feb2badc31f5f23f7affb3a9f02b7 100644 (file)
@@ -1,3 +1,8 @@
+2011-06-10  Georg-Johann Lay  <avr@gjlay.de>
+       
+       * config/avr/avr.c (avr_function_arg_advance): Fix thinko about
+       when a value is actually passed in regs.
+
 2011-06-10  Eric Botcazou  <ebotcazou@adacore.com>
            Laurent RougĂ©  <laurent.rouge@menta.fr>
 
index 5a565b0857ffcc2db81c05de44d100efe31d10e2..aadfd244b68e92c9ffca9de69b1cfac7aa687655 100644 (file)
@@ -1784,7 +1784,8 @@ avr_function_arg_advance (CUMULATIVE_ARGS *cum, enum machine_mode mode,
      a function must not pass arguments in call-saved regs in order to get
      tail-called. */
   
-  if (cum->regno >= 0
+  if (cum->regno >= 8
+      && cum->nregs >= 0
       && !call_used_regs[cum->regno])
     {
       /* FIXME: We ship info on failing tail-call in struct machine_function.
@@ -1800,7 +1801,8 @@ avr_function_arg_advance (CUMULATIVE_ARGS *cum, enum machine_mode mode,
      user has fixed a GPR needed to pass an argument, an (implicit) function
      call would clobber that fixed register.  See PR45099 for an example.  */
   
-  if (cum->regno >= 0)
+  if (cum->regno >= 8
+      && cum->nregs >= 0)
     {
       int regno;