diff options
author | steven <steven@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-01-05 23:19:23 +0000 |
---|---|---|
committer | steven <steven@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-01-05 23:19:23 +0000 |
commit | 476d094d7713bdd77be9c7863518b69342c7a4b4 (patch) | |
tree | 8d81e917b2a1cc0618df0ec47f5dcced22b199dc /gcc/flow.c | |
parent | 37e6be124c7dc5274014a63bdd8eeeb6057e6c43 (diff) | |
download | linaro-gcc-476d094d7713bdd77be9c7863518b69342c7a4b4.tar.gz linaro-gcc-476d094d7713bdd77be9c7863518b69342c7a4b4.tar.bz2 linaro-gcc-476d094d7713bdd77be9c7863518b69342c7a4b4.zip |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92974 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/flow.c')
-rw-r--r-- | gcc/flow.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/flow.c b/gcc/flow.c index cc2c1988767..e3d10a13814 100644 --- a/gcc/flow.c +++ b/gcc/flow.c @@ -2554,15 +2554,17 @@ mark_set_1 (struct propagate_block_info *pbi, enum rtx_code code, rtx reg, rtx c flags); return; - case ZERO_EXTRACT: case SIGN_EXTRACT: + /* SIGN_EXTRACT cannot be an lvalue. */ + gcc_unreachable (); + + case ZERO_EXTRACT: case STRICT_LOW_PART: /* ??? Assumes STRICT_LOW_PART not used on multi-word registers. */ do reg = XEXP (reg, 0); while (GET_CODE (reg) == SUBREG || GET_CODE (reg) == ZERO_EXTRACT - || GET_CODE (reg) == SIGN_EXTRACT || GET_CODE (reg) == STRICT_LOW_PART); if (MEM_P (reg)) break; @@ -3844,7 +3846,6 @@ mark_used_regs (struct propagate_block_info *pbi, rtx x, rtx cond, rtx insn) then this SET is not needed. */ while (GET_CODE (testreg) == STRICT_LOW_PART || GET_CODE (testreg) == ZERO_EXTRACT - || GET_CODE (testreg) == SIGN_EXTRACT || GET_CODE (testreg) == SUBREG) { #ifdef CANNOT_CHANGE_MODE_CLASS |