integrate.c (copy_rtx_and_substitute): Handle internal_arg_pointer just like we would...
authorJeffrey A Law <law@cygnus.com>
Mon, 30 Aug 1999 07:05:29 +0000 (07:05 +0000)
committerJeff Law <law@gcc.gnu.org>
Mon, 30 Aug 1999 07:05:29 +0000 (01:05 -0600)
        * 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
gcc/integrate.c

index a3d1f9f4e9ee1af352969d504f2f0e7deaf0dc8d..4d6a762f8ee3dd938eb741d39a5403fb8fac798f 100644 (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
index b59518edb33286c46ca8c257330dadfa6c30e3ea..b3e681c6b62777ed87a388a3179a1dbc90ea741d 100644 (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.  */