PR target/45099
authorgjl <gjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Sep 2011 09:40:13 +0000 (09:40 +0000)
committergjl <gjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Sep 2011 09:40:13 +0000 (09:40 +0000)
* config/avr/avr.c (avr_function_arg_advance): Change error to
warning if a fixed register is needed as function argument.

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

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

index 663319d..036fdde 100644 (file)
@@ -1,5 +1,11 @@
 2011-09-21  Georg-Johann Lay  <avr@gjlay.de>
 
+       PR target/45099
+       * config/avr/avr.c (avr_function_arg_advance): Change error to
+       warning if a fixed register is needed as function argument.
+
+2011-09-21  Georg-Johann Lay  <avr@gjlay.de>
+
        PR target/50449
        PR target/50465
        * config/avr/avr.md (adjust_len): New insn attribute.
index 9fee0d0..42bc6f3 100644 (file)
@@ -1810,7 +1810,7 @@ avr_function_arg_advance (cumulative_args_t cum_v, enum machine_mode mode,
 
   /* Test if all registers needed by the ABI are actually available.  If the
      user has fixed a GPR needed to pass an argument, an (implicit) function
-     call would clobber that fixed register.  See PR45099 for an example.  */
+     call will clobber that fixed register.  See PR45099 for an example.  */
   
   if (cum->regno >= 8
       && cum->nregs >= 0)
@@ -1819,8 +1819,8 @@ avr_function_arg_advance (cumulative_args_t cum_v, enum machine_mode mode,
 
       for (regno = cum->regno; regno < cum->regno + bytes; regno++)
         if (fixed_regs[regno])
-          error ("Register %s is needed to pass a parameter but is fixed",
-                 reg_names[regno]);
+          warning (0, "fixed register %s used to pass parameter to function",
+                   reg_names[regno]);
     }
       
   if (cum->nregs <= 0)