integrate.c (copy_rtx_and_substitute): Handle internal_arg_pointer just like we would the virtual incoming args...

* integrate.c (copy_rtx_and_substitute): Handle internal_arg_pointer
        just like we would the virtual incoming args register when
        integrating.

From-SVN: r28980
This commit is contained in:
Jeffrey A Law 1999-08-30 07:05:29 +00:00 committed by Jeff Law
parent 08017b74f3
commit f83a09927c
2 changed files with 13 additions and 2 deletions

View File

@ -1,3 +1,9 @@
Mon Aug 30 01:02:09 1999 Jeffrey A Law (law@cygnus.com)
* integrate.c (copy_rtx_and_substitute): Handle internal_arg_pointer
just like we would the virtual incoming args register when
integrating.
Sun Aug 29 23:17:54 1999 David Edelsohn <edelsohn@gnu.org>
* rs6000.h (ASM_FILE_START): Specify complete filename, including

View File

@ -2291,7 +2291,9 @@ copy_rtx_and_substitute (orig, map)
Small hard registers are returned as-is. Pseudo-registers
go through their `reg_map'. */
regno = REGNO (orig);
if (regno <= LAST_VIRTUAL_REGISTER)
if (regno <= LAST_VIRTUAL_REGISTER
|| (map->integrating
&& DECL_SAVED_INSNS (map->fndecl)->internal_arg_pointer == orig))
{
/* Some hard registers are also mapped,
but others are not translated. */
@ -2342,7 +2344,10 @@ copy_rtx_and_substitute (orig, map)
emit_insn_after (seq, map->insns_at_start);
return temp;
}
else if (regno == VIRTUAL_INCOMING_ARGS_REGNUM)
else if (regno == VIRTUAL_INCOMING_ARGS_REGNUM
|| (map->integrating
&& (DECL_SAVED_INSNS (map->fndecl)->internal_arg_pointer
== orig)))
{
/* Do the same for a block to contain any arguments referenced
in memory. */