From 3f5ea9dc58907a2d3898ac666572c103d46aa917 Mon Sep 17 00:00:00 2001 From: Georg-Johann Lay Date: Fri, 10 Jun 2011 11:06:36 +0000 Subject: [PATCH] avr.c (avr_function_arg_advance): Fix thinko about when a value is actually passed in regs. * config/avr/avr.c (avr_function_arg_advance): Fix thinko about when a value is actually passed in regs. From-SVN: r174898 --- gcc/ChangeLog | 5 +++++ gcc/config/avr/avr.c | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8fb1ad9..0c18e05 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2011-06-10 Georg-Johann Lay + + * config/avr/avr.c (avr_function_arg_advance): Fix thinko about + when a value is actually passed in regs. + 2011-06-10 Eric Botcazou Laurent Rougé diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index 5a565b0..aadfd24 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -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; -- 2.7.4