aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/expr.c11
2 files changed, 11 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 47488d4..3c0d560 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Thu Mar 9 20:01:38 2000 Jim Wilson <wilson@cygnus.com>
+
+ * expr.c (expand_assignment): For a CALL_EXPR, special case PARM_DECL
+ same as VAR_DECL.
+
2000-03-09 Benjamin Kosnik <bkoz@cygnus.com>
* config/alpha/linux.h (WCHAR_TYPE): Make consistent.
diff --git a/gcc/expr.c b/gcc/expr.c
index 7b362b0..671255e 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -3472,13 +3472,14 @@ expand_assignment (to, from, want_value, suggest_reg)
val = setjmp (buf) on machines where reference to val
requires loading up part of an address in a separate insn.
- Don't do this if TO is a VAR_DECL whose DECL_RTL is REG since it might be
- a promoted variable where the zero- or sign- extension needs to be done.
- Handling this in the normal way is safe because no computation is done
- before the call. */
+ Don't do this if TO is a VAR_DECL or PARM_DECL whose DECL_RTL is REG
+ since it might be a promoted variable where the zero- or sign- extension
+ needs to be done. Handling this in the normal way is safe because no
+ computation is done before the call. */
if (TREE_CODE (from) == CALL_EXPR && ! aggregate_value_p (from)
&& TREE_CODE (TYPE_SIZE (TREE_TYPE (from))) == INTEGER_CST
- && ! (TREE_CODE (to) == VAR_DECL && GET_CODE (DECL_RTL (to)) == REG))
+ && ! ((TREE_CODE (to) == VAR_DECL || TREE_CODE (to) == PARM_DECL)
+ && GET_CODE (DECL_RTL (to)) == REG))
{
rtx value;