From f83a09927c55b74be89ec85a0d98b3aab4846812 Mon Sep 17 00:00:00 2001 From: Jeffrey A Law Date: Mon, 30 Aug 1999 07:05:29 +0000 Subject: 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 --- gcc/ChangeLog | 6 ++++++ gcc/integrate.c | 9 +++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a3d1f9f..4d6a762 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 * rs6000.h (ASM_FILE_START): Specify complete filename, including diff --git a/gcc/integrate.c b/gcc/integrate.c index b59518e..b3e681c 100644 --- a/gcc/integrate.c +++ b/gcc/integrate.c @@ -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. */ -- cgit v1.1