OSDN Git Service

* config/avr/avr.c (avr_function_arg_advance): Fix thinko about
authorgjl <gjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 10 Jun 2011 11:06:36 +0000 (11:06 +0000)
committergjl <gjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 10 Jun 2011 11:06:36 +0000 (11:06 +0000)
when a value is actually passed in regs.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@174898 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 8fb1ad9..0c18e05 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 5a565b0..aadfd24 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;