regclass.c (fix_register): Add error message.

* regclass.c (fix_register): Add error message.
	* invoke.texi (-fcall-used-REG,-fcall-saved-REG): Note the
	  new error message

From-SVN: r23198
This commit is contained in:
Gavin Romig-Koch 1998-10-20 08:03:37 +00:00 committed by Gavin Romig-Koch
parent 0ca3fb0a16
commit cb2fdc843b
3 changed files with 33 additions and 8 deletions

View File

@ -1,3 +1,9 @@
Tue Oct 20 10:59:02 1998 Gavin Romig-Koch <gavin@cygnus.com>
* regclass.c (fix_register): Add error message.
* invoke.texi (-fcall-used-REG,-fcall-saved-REG): Note the
new error message.
Tue Oct 20 10:12:17 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> Tue Oct 20 10:12:17 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* c-decl.c (warn_missing_noreturn): New global variable. * c-decl.c (warn_missing_noreturn): New global variable.

View File

@ -5819,9 +5819,9 @@ clobbered by function calls. It may be allocated for temporaries or
variables that do not live across a call. Functions compiled this way variables that do not live across a call. Functions compiled this way
will not save and restore the register @var{reg}. will not save and restore the register @var{reg}.
Use of this flag for a register that has a fixed pervasive role in the It is an error to used this flag with the frame pointer or stack pointer.
machine's execution model, such as the stack pointer or frame pointer, Use of this flag for other registers that have fixed pervasive roles in
will produce disastrous results. the machine's execution model will produce disastrous results.
This flag does not have a negative form, because it specifies a This flag does not have a negative form, because it specifies a
three-way choice. three-way choice.
@ -5832,9 +5832,9 @@ functions. It may be allocated even for temporaries or variables that
live across a call. Functions compiled this way will save and restore live across a call. Functions compiled this way will save and restore
the register @var{reg} if they use it. the register @var{reg} if they use it.
Use of this flag for a register that has a fixed pervasive role in the It is an error to used this flag with the frame pointer or stack pointer.
machine's execution model, such as the stack pointer or frame pointer, Use of this flag for other registers that have fixed pervasive roles in
will produce disastrous results. the machine's execution model will produce disastrous results.
A different sort of disaster will result from the use of this flag for A different sort of disaster will result from the use of this flag for
a register in which function values may be returned. a register in which function values may be returned.

View File

@ -574,8 +574,27 @@ fix_register (name, fixed, call_used)
if ((i = decode_reg_name (name)) >= 0) if ((i = decode_reg_name (name)) >= 0)
{ {
fixed_regs[i] = fixed; if ((i == STACK_POINTER_REGNUM
call_used_regs[i] = call_used; #ifdef HARD_FRAME_POINTER_REGNUM
|| i == HARD_FRAME_POINTER_REGNUM
#else
|| i == FRAME_POINTER_REGNUM
#endif
)
&& (fixed == 0 || call_used == 0))
{
static char* what_option[2][2] = {
"call-saved", "call-used",
"no-such-option", "fixed" };
error ("can't use '%s' as a %s register", name,
what_option[fixed][call_used]);
}
else
{
fixed_regs[i] = fixed;
call_used_regs[i] = call_used;
}
} }
else else
{ {