Commit f24a5190 by Georg-Johann Lay Committed by Georg-Johann Lay

re PR target/45099 ([avr] Warning could be issued for use of register variables that will fail.)

	PR target/45099
	* config/avr/avr.c (avr_function_arg_advance): Error if a fixed
	register is needed for a function argument.

From-SVN: r173791
parent 3066f593
2011-05-16 Georg-Johann Lay <avr@gjlay.de>
PR target/45099
* config/avr/avr.c (avr_function_arg_advance): Error if a fixed
register is needed for a function argument.
2011-05-16 Richard Guenther <rguenther@suse.de>
* gimple.c (struct type_hash_pair): New type.
......
......@@ -1796,6 +1796,20 @@ avr_function_arg_advance (CUMULATIVE_ARGS *cum, enum machine_mode mode,
cfun->machine->sibcall_fails = 1;
}
/* 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. */
if (cum->regno >= 0)
{
int regno;
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]);
}
if (cum->nregs <= 0)
{
cum->nregs = 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment