diff options
author | J"orn Rennecke <joern.rennecke@superh.com> | 2003-05-23 20:08:22 +0000 |
---|---|---|
committer | Joern Rennecke <amylaar@gcc.gnu.org> | 2003-05-23 21:08:22 +0100 |
commit | 839844befa03c6eedadc1e045980c8505e68b830 (patch) | |
tree | 4f92a85daf94c615e9e895e5f6c349013292c172 /gcc | |
parent | 6c82ad2561090a9ba4011886a60d2c1423924302 (diff) | |
download | gcc-839844befa03c6eedadc1e045980c8505e68b830.zip gcc-839844befa03c6eedadc1e045980c8505e68b830.tar.gz gcc-839844befa03c6eedadc1e045980c8505e68b830.tar.bz2 |
cse.c (count_reg_usage): When processing an INSNs REG_EQUAL note containing an EXPR_LIST...
* cse.c (count_reg_usage): When processing an INSNs REG_EQUAL
note containing an EXPR_LIST, process all the arguments.
From-SVN: r67132
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cse.c | 16 |
2 files changed, 20 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b3fe1bd..b09cb30 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-05-23 J"orn Rennecke <joern.rennecke@superh.com> + + * cse.c (count_reg_usage): When processing an INSNs REG_EQUAL + note containing an EXPR_LIST, process all the arguments. + Fri May 23 21:19:31 CEST 2003 Jan Hubicka <jh@suse.cz> Andreas Jaeger <aj@suse.de> @@ -7512,7 +7512,21 @@ count_reg_usage (x, counts, dest, incr) note = find_reg_equal_equiv_note (x); if (note) - count_reg_usage (XEXP (note, 0), counts, NULL_RTX, incr); + { + rtx eqv = XEXP (note, 0); + + if (GET_CODE (eqv) == EXPR_LIST) + /* This REG_EQUAL note describes the result of a function call. + Process all the arguments. */ + do + { + count_reg_usage (XEXP (eqv, 0), counts, NULL_RTX, incr); + eqv = XEXP (eqv, 1); + } + while (eqv && GET_CODE (eqv) == EXPR_LIST); + else + count_reg_usage (eqv, counts, NULL_RTX, incr); + } return; case EXPR_LIST: |