diff options
author | Steven Bosscher <stevenb@suse.de> | 2005-01-05 23:19:23 +0000 |
---|---|---|
committer | Steven Bosscher <steven@gcc.gnu.org> | 2005-01-05 23:19:23 +0000 |
commit | 46d096a3c7a69f3a8c88c88a3dcaa6925d242513 (patch) | |
tree | 8d81e917b2a1cc0618df0ec47f5dcced22b199dc /gcc/cse.c | |
parent | b95ec5c19194b9595a4209b3dc953cd7a713a484 (diff) | |
download | gcc-46d096a3c7a69f3a8c88c88a3dcaa6925d242513.zip gcc-46d096a3c7a69f3a8c88c88a3dcaa6925d242513.tar.gz gcc-46d096a3c7a69f3a8c88c88a3dcaa6925d242513.tar.bz2 |
combine.c (expand_compound_operation): Add comment that we fall through after case.
* combine.c (expand_compound_operation) <ZERO_EXTRACT>: Add
comment that we fall through after case.
(mark_used_regs_combine): Don't expect a SIGN_EXTRACT in a SET_DEST.
(distribute_links): Likewise.
* cse.c (cse_insn): Likewise.
* cselib.c (cselib_invalidate_mem): Likewise.
* df.c: Update comments at the top of the file.
(read_modify_subreg_p): Update comments here too.
(df_def_record_1): Don't expect a SIGN_EXTRACT in a SET_DEST.
* flow.c (mark_set_1): Likewise.
(mark_used_regs): Likewise.
* gcse.c (mems_conflict_for_gcse_p): Likewise.
(canon_list_insert): Likewise.
(mark_set): Likewise.
(try_replace_reg): Likewise.
(store_killed_in_insn): Likewise.
* loop.c (count_one_set): Likewise.
(basic_induction_var): Likewise.
* postreload-gcse.c (find_mem_conflicts): Likewise.
* postreload.c (reload_combine_note_store): Likewise.
(move2add_note_store): Likewise.
* reload.c (find_equiv_reg): Likewise.
(mark_referenced_resources): Likewise.
* rtlanal.c (set_noop_p): Likewise.
(note_stores): Likewise.
(note_uses): Likewise.
* sched-deps.c (sched_analyze_1): Likewise.
* sched-rgn.c (check_live_1): Likewise.
(update_live_1): Likewise.
* config/i860/i860.c: Likewise.
* rtl.dec (SIGN_EXTRACT): Document that this cannot appear as
an lvalue.
(ZERO_EXTRACT): Mention that this one can be an lvalue.
* doc/rtl.texi: Update documentation for bit-fields and SET.
From-SVN: r92974
Diffstat (limited to 'gcc/cse.c')
-rw-r--r-- | gcc/cse.c | 18 |
1 files changed, 7 insertions, 11 deletions
@@ -4865,7 +4865,7 @@ cse_insn (rtx insn, rtx libcall_insn) else SET_SRC (sets[i].rtl) = new; - if (GET_CODE (dest) == ZERO_EXTRACT || GET_CODE (dest) == SIGN_EXTRACT) + if (GET_CODE (dest) == ZERO_EXTRACT) { validate_change (insn, &XEXP (dest, 1), canon_reg (XEXP (dest, 1), insn), 1); @@ -4873,9 +4873,9 @@ cse_insn (rtx insn, rtx libcall_insn) canon_reg (XEXP (dest, 2), insn), 1); } - while (GET_CODE (dest) == SUBREG || GET_CODE (dest) == STRICT_LOW_PART + while (GET_CODE (dest) == SUBREG || GET_CODE (dest) == ZERO_EXTRACT - || GET_CODE (dest) == SIGN_EXTRACT) + || GET_CODE (dest) == STRICT_LOW_PART) dest = XEXP (dest, 0); if (MEM_P (dest)) @@ -4972,8 +4972,7 @@ cse_insn (rtx insn, rtx libcall_insn) causes later instructions to be mis-optimized. */ /* If storing a constant in a bitfield, pre-truncate the constant so we will be able to record it later. */ - if (GET_CODE (SET_DEST (sets[i].rtl)) == ZERO_EXTRACT - || GET_CODE (SET_DEST (sets[i].rtl)) == SIGN_EXTRACT) + if (GET_CODE (SET_DEST (sets[i].rtl)) == ZERO_EXTRACT) { rtx width = XEXP (SET_DEST (sets[i].rtl), 1); @@ -5629,11 +5628,9 @@ cse_insn (rtx insn, rtx libcall_insn) /* Now deal with the destination. */ do_not_record = 0; - /* Look within any SIGN_EXTRACT or ZERO_EXTRACT - to the MEM or REG within it. */ - while (GET_CODE (dest) == SIGN_EXTRACT + /* Look within any ZERO_EXTRACT to the MEM or REG within it. */ + while (GET_CODE (dest) == SUBREG || GET_CODE (dest) == ZERO_EXTRACT - || GET_CODE (dest) == SUBREG || GET_CODE (dest) == STRICT_LOW_PART) dest = XEXP (dest, 0); @@ -5661,8 +5658,7 @@ cse_insn (rtx insn, rtx libcall_insn) because the value in it after the store may not equal what was stored, due to truncation. */ - if (GET_CODE (SET_DEST (sets[i].rtl)) == ZERO_EXTRACT - || GET_CODE (SET_DEST (sets[i].rtl)) == SIGN_EXTRACT) + if (GET_CODE (SET_DEST (sets[i].rtl)) == ZERO_EXTRACT) { rtx width = XEXP (SET_DEST (sets[i].rtl), 1); |