diff options
author | Jim Wilson <wilson@cygnus.com> | 2000-03-10 04:03:10 +0000 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 2000-03-09 20:03:10 -0800 |
commit | 1858863bd5e982876880ddf0a53d95bf71d869e8 (patch) | |
tree | 5d589f5184eebaa24b59bfafab603e03dcb3ed40 /gcc/expr.c | |
parent | 4ed442c9157650b63125b5948016e2cab50011a6 (diff) | |
download | gcc-1858863bd5e982876880ddf0a53d95bf71d869e8.zip gcc-1858863bd5e982876880ddf0a53d95bf71d869e8.tar.gz gcc-1858863bd5e982876880ddf0a53d95bf71d869e8.tar.bz2 |
Fix ia64 spec95 134.perl miscompilation.
* expr.c (expand_assignment): For a CALL_EXPR, special case PARM_DECL
same as VAR_DECL.
From-SVN: r32463
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 11 |
1 files changed, 6 insertions, 5 deletions
@@ -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; |