aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@gcc.gnu.org>2000-02-01 23:33:43 -0800
committerRichard Henderson <rth@gcc.gnu.org>2000-02-01 23:33:43 -0800
commitea2d416aac0d9e927f567c09617bd8c417b194a5 (patch)
treefd5a123e7bd728021810699cea7637b049889253 /gcc
parenteca1bd08cfd81ef60cb5bf8f88f2500bd712b486 (diff)
downloadgcc-ea2d416aac0d9e927f567c09617bd8c417b194a5.zip
gcc-ea2d416aac0d9e927f567c09617bd8c417b194a5.tar.gz
gcc-ea2d416aac0d9e927f567c09617bd8c417b194a5.tar.bz2
flow.c (mark_regs_live_at_end): Follow expand_function_end and replace BLKmode with DECL_RTL's mode.
* flow.c (mark_regs_live_at_end): Follow expand_function_end and replace BLKmode with DECL_RTL's mode. From-SVN: r31754
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/flow.c14
2 files changed, 15 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9ffd2c0..480e69d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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>
diff --git a/gcc/flow.c b/gcc/flow.c
index c2aac13..8656778 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -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);