OSDN Git Service

* flow.c (mark_regs_live_at_end): Follow expand_function_end and
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 2 Feb 2000 07:33:43 +0000 (07:33 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 2 Feb 2000 07:33:43 +0000 (07:33 +0000)
        replace BLKmode with DECL_RTL's mode.

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

gcc/ChangeLog
gcc/flow.c

index 9ffd2c0..480e69d 100644 (file)
@@ -1,3 +1,8 @@
+2000-02-01  Richard Henderson  <rth@cygnus.com>
+
+       * flow.c (mark_regs_live_at_end): Follow expand_function_end and
+       replace BLKmode with DECL_RTL's mode.
+
 2000-02-01  Zack Weinberg  <zack@wolery.cumb.org>
 
        * frame.c (find_fde): Convert for loop to do-while so compiler
@@ -206,7 +211,7 @@ Tue Feb  1 00:57:40 2000  Hans-Peter Nilsson  <hp@bitrange.com>
 
 2000-01-29 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
 
-        * c4x.h (INIT_TARGET_OPTABS): Add all missing local optab entries.
+       * c4x.h (INIT_TARGET_OPTABS): Add all missing local optab entries.
        * c4x.c: Define the optab rtx values.
        (c4x_add_gc_roots): Add the ggc roots for these optab rtx values.
        (c4x_emit_libcall): Use new optab rtx values.
@@ -217,7 +222,7 @@ Tue Feb  1 00:57:40 2000  Hans-Peter Nilsson  <hp@bitrange.com>
 
 2000-01-29 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
 
-        * c4x.c (c4x_output_ascii): Restrict line length of output when TI
+       * c4x.c (c4x_output_ascii): Restrict line length of output when TI
        syntax is used.
        (c4x_function_prologue): Use regnames intead of float_reg_names when
        TI syntax is used.
@@ -309,7 +314,7 @@ Fri Jan 28 10:57:58 2000  Jason Eckhardt  <jle@cygnus.com>
 
 2000-01-27  Richard Henderson  <rth@cygnus.com>
 
-        * alpha.md (trunctfsf2): New.
+       * alpha.md (trunctfsf2): New.
 
 2000-01-27  Andrew Hobson  <ahobson@eng.mindspring.net>
 
index c2aac13..8656778 100644 (file)
@@ -2809,7 +2809,7 @@ static void
 mark_regs_live_at_end (set)
      regset set;
 {
-  tree type;
+  tree result, type;
   int i;
 
   /* If exiting needs the right stack value, consider the stack pointer
@@ -2868,22 +2868,22 @@ mark_regs_live_at_end (set)
 
   /* Mark function return value.  */
 
-  type = TREE_TYPE (DECL_RESULT (current_function_decl));
+  result = DECL_RESULT (current_function_decl);
+  type = TREE_TYPE (result);
   if (type != void_type_node)
     {
       rtx outgoing;
 
-      if (current_function_returns_struct
-         || current_function_returns_pcc_struct)
-       type = build_pointer_type (type);
-
+      /* ??? Share this code with expand_function_end.  */
 #ifdef FUNCTION_OUTGOING_VALUE
       outgoing = FUNCTION_OUTGOING_VALUE (type, current_function_decl);
 #else
       outgoing = FUNCTION_VALUE (type, current_function_decl);
 #endif
+      /* If this is a BLKmode structure being returned in registers,
+        then use the mode computed in expand_return.  */
       if (GET_MODE (outgoing) == BLKmode)
-       PUT_MODE (outgoing, DECL_MODE (DECL_RESULT (current_function_decl)));
+       PUT_MODE (outgoing, GET_MODE (DECL_RTL (result)));
 
       if (GET_CODE (outgoing) == REG)
        mark_reg (set, outgoing);