diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2001-01-12 21:58:56 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2001-01-12 21:58:56 +0000 |
commit | f474c6f8f92594e09a56c03cdd609d161e690bdd (patch) | |
tree | 7db1440305362aa4b11577379f87eec6ec050a30 /gcc/cse.c | |
parent | 7dd232a8824ac79a5d17641804ffe1a72f19c387 (diff) | |
download | gcc-f474c6f8f92594e09a56c03cdd609d161e690bdd.zip gcc-f474c6f8f92594e09a56c03cdd609d161e690bdd.tar.gz gcc-f474c6f8f92594e09a56c03cdd609d161e690bdd.tar.bz2 |
calls.c (emit_library_call_value_1): Add USEs and CLOBBERs to function usage for arguments passed by reference.
* calls.c (emit_library_call_value_1): Add USEs and CLOBBERs
to function usage for arguments passed by reference. Optimize
callee-copied arguments.
* regmove.c (find_related_toplev): Find uses in function usage.
(replace_in_call_usage): New function.
(fixup_match_1): Call it.
* cse.c (cse_insn): Canonicalize registers in function usage.
* reload1.c (replace_pseudos_in_call_usage): New function.
(reload): Call it.
From-SVN: r38964
Diffstat (limited to 'gcc/cse.c')
-rw-r--r-- | gcc/cse.c | 9 |
1 files changed, 6 insertions, 3 deletions
@@ -1,6 +1,6 @@ /* Common subexpression elimination for GNU compiler. Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998 - 1999, 2000 Free Software Foundation, Inc. + 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of GNU CC. @@ -4754,8 +4754,11 @@ cse_insn (insn, libcall_insn) if (GET_CODE (insn) == CALL_INSN) { for (tem = CALL_INSN_FUNCTION_USAGE (insn); tem; tem = XEXP (tem, 1)) - if (GET_CODE (XEXP (tem, 0)) == CLOBBER) - invalidate (SET_DEST (XEXP (tem, 0)), VOIDmode); + { + if (GET_CODE (XEXP (tem, 0)) == CLOBBER) + invalidate (SET_DEST (XEXP (tem, 0)), VOIDmode); + XEXP (tem, 0) = canon_reg (XEXP (tem, 0), insn); + } } if (GET_CODE (x) == SET) |