OSDN Git Service

* function.c (expand_function_start): Always use a pseudo
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 23 May 2001 07:01:43 +0000 (07:01 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 23 May 2001 07:01:43 +0000 (07:01 +0000)
        for the function result value.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42486 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/function.c

index 1921681..98aa47a 100644 (file)
@@ -1,3 +1,8 @@
+2001-05-23  Richard Henderson  <rth@redhat.com>
+
+       * function.c (expand_function_start): Always use a pseudo
+       for the function result value.
+
 2001-05-22  Richard Henderson  <rth@redhat.com>
 
        * config/mips/iris6.h (EH_FRAME_SECTION_ASM_OP): Give the
index 54dd308..6aeed3e 100644 (file)
@@ -6366,13 +6366,10 @@ expand_function_start (subr, parms_have_cleanups)
   else if (DECL_MODE (DECL_RESULT (subr)) == VOIDmode)
     /* If return mode is void, this decl rtl should not be used.  */
     SET_DECL_RTL (DECL_RESULT (subr), NULL_RTX);
-  else if (parms_have_cleanups
-          || current_function_instrument_entry_exit
-          || (flag_exceptions && USING_SJLJ_EXCEPTIONS))
+  else
     {
-      /* If function will end with cleanup code for parms, compute the
-        return values into a pseudo reg, which we will copy into the
-        true return register after the cleanups are done.  */
+      /* Compute the return values into a pseudo reg, which we will copy
+        into the true return register after the cleanups are done.  */
 
       /* In order to figure out what mode to use for the pseudo, we
         figure out what the mode of the eventual return register will
@@ -6393,22 +6390,6 @@ expand_function_start (subr, parms_have_cleanups)
         in case it's a named return value whose address is taken.  */
       DECL_REGISTER (DECL_RESULT (subr)) = 1;
     }
-  else
-    {
-      /* Scalar, returned in a register.  */
-      SET_DECL_RTL (DECL_RESULT (subr),
-                   hard_function_value (TREE_TYPE (DECL_RESULT (subr)), 
-                                        subr, 1));
-
-      /* Mark this reg as the function's return value.  */
-      if (GET_CODE (DECL_RTL (DECL_RESULT (subr))) == REG)
-       {
-         REG_FUNCTION_VALUE_P (DECL_RTL (DECL_RESULT (subr))) = 1;
-         /* Needed because we may need to move this to memory
-            in case it's a named return value whose address is taken.  */
-         DECL_REGISTER (DECL_RESULT (subr)) = 1;
-       }
-    }
 
   /* Initialize rtx for parameters and local variables.
      In some cases this requires emitting insns.  */