Allow SImode values to be assigned to the stack pointer.
From-SVN: r49183
This commit is contained in:
parent
467cb2da56
commit
92a4639e2e
@ -1,3 +1,8 @@
|
||||
2002-01-24 Nick Clifton <nickc@cambridge.redhat.com>
|
||||
|
||||
* config/arm/arm.c (arm_hard_regno_mode_ok): Allow SImode
|
||||
values to be assigned to the stack pointer.
|
||||
|
||||
2002-01-14 Hartmut Penner <hpenner@de.ibm.com>
|
||||
|
||||
* emit_rtl.c (gen_lowpart_common): Conversion from const_int
|
||||
|
@ -9143,7 +9143,20 @@ arm_hard_regno_mode_ok (regno, mode)
|
||||
it only if it not a special register (SP, LR, PC) and only
|
||||
if there will be enough (non-special) registers to hold the
|
||||
entire value. */
|
||||
return regno < (SP_REGNUM - (unsigned) NUM_REGS (mode));
|
||||
{
|
||||
/* As a special exception we allow an SImode value to be
|
||||
"assigned" to the stack pointer. This is not intended
|
||||
to actually allow a value to be stored in the SP, but so
|
||||
that the stack pointer can be referenced from C code like
|
||||
this:
|
||||
|
||||
register char * stack_ptr asm ("sp");
|
||||
|
||||
This expression is actually used in newlib... */
|
||||
if (mode == SImode && regno == SP_REGNUM)
|
||||
return 1;
|
||||
return regno < (SP_REGNUM - (unsigned) NUM_REGS (mode));
|
||||
}
|
||||
|
||||
if ( regno == FRAME_POINTER_REGNUM
|
||||
|| regno == ARG_POINTER_REGNUM)
|
||||
|
Loading…
Reference in New Issue
Block a user