diff options
author | rearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-12-08 10:49:49 +0000 |
---|---|---|
committer | rearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-12-08 10:49:49 +0000 |
commit | eb6bd2dc7fab1c06c7d000905150971fcf53328d (patch) | |
tree | 0fd986d73d5cc0578ed4e8e81f41b1dab65eee04 /gcc/final.c | |
parent | 95b509b448e51e7eb25ab524885bdf660daf49a9 (diff) | |
download | gcc-eb6bd2dc7fab1c06c7d000905150971fcf53328d.tar.gz |
* final.c (cleanup_subreg_operands): Use recog_data.operand_loc
in test for a subreg.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@47788 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/final.c')
-rw-r--r-- | gcc/final.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/final.c b/gcc/final.c index 16c95dee903..a17c3ac2c84 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -2726,7 +2726,12 @@ cleanup_subreg_operands (insn) extract_insn_cached (insn); for (i = 0; i < recog_data.n_operands; i++) { - if (GET_CODE (recog_data.operand[i]) == SUBREG) + /* The following test cannot use recog_data.operand when tesing + for a SUBREG: the underlying object might have been changed + already if we are inside a match_operator expression that + matches the else clause. Instead we test the underlying + expression directly. */ + if (GET_CODE (*recog_data.operand_loc[i]) == SUBREG) recog_data.operand[i] = alter_subreg (recog_data.operand_loc[i]); else if (GET_CODE (recog_data.operand[i]) == PLUS || GET_CODE (recog_data.operand[i]) == MULT |