Remove clobber_high

Programming / Compilers / GCC - rsandifo [138bc75d-0d04-0410-961f-82ee72b054a4] - 1 October 2019 08:55 EDT

The AArch64 SVE tlsdesc patterns were the main motivating reason for clobber_high. It's no longer needed now that the patterns use calls instead.

At the time, one of the possible future uses for clobber_high was for asm statements. However, the current code wouldn't handle that case without modification, so I think we might as well remove it for now. We can always reapply it in future if it turns out to be useful again.

2019-10-01 Richard Sandiford

gcc/
- rtl.def (CLOBBER_HIGH): Delete.
- doc/rtl.texi (clobber_high): Remove documentation.
- rtl.h (SET_DEST): from the list of codes. (reg_is_clobbered_by_clobber_high): Delete. (gen_hard_reg_clobber_high): Likewise.
- alias.c (record_set): handling.
- cfgexpand.c (expand_gimple_stmt): Likewise.
- combine-stack-adj.c (single_set_for_csa): Likewise.
- combine.c (find_single_use_1, set_nonzero_bits_and_sign_copies) (can_combine_p, is_parallel_of_n_reg_sets, try_combine) (record_dead_and_set_regs_1, reg_dead_at_p_1): Likewise.
- cse.c (invalidate_reg): parameter. (invalidate): Update call accordingly. (canonicalize_insn): handling. (invalidate_from_clobbers, invalidate_from_sets_and_clobbers) (count_reg_usage, insn_live_p): Likewise.
- cselib.h (cselib_invalidate_rtx): Remove sett argument.
- cselib.c (cselib_invalidate_regno, cselib_invalidate_rtx): Likewise. (cselib_invalidate_rtx_note_stores): Update call accordingly. (cselib_expand_value_rtx_1): handling. (cselib_invalidate_regno, cselib_process_insn): Likewise.
- dce.c (deletable_insn_p, mark_nonreg_stores_1): Likewise. (mark_nonreg_stores_2): Likewise.
- df-scan.c (df_find_hard_reg_defs, df_uses_record): Likewise. (df_get_call_refs): Likewise.
- dwarf2out.c (mem_loc_descriptor): Likewise.
- emit-rtl.c (verify_rtx_sharing): Likewise. (copy_insn_1, copy_rtx_if_shared_1): Likewise. (hard_reg_clobbers_high, gen_hard_reg_clobber_high): Delete.
- genconfig.c (walk_insn_part): handling.
- genemit.c (gen_exp, gen_insn): Likewise.
- genrecog.c (validate_pattern, remove_clobbers): Likewise.
- haifa-sched.c (haifa_classify_rtx): Likewise.
- ira-build.c (create_insn_allocnos): Likewise.
- ira-costs.c (scan_one_insn): Likewise.
- ira.c (equiv_init_movable_p, memref_referenced_p): Likewise. (rtx_moveable_p, interesting_dest_for_shprep): Likewise.
- jump.c (mark_jump_label_1): Likewise.
- lra-int.h (lra_insn_reg::clobber_high): Delete.
- lra-eliminations.c (lra_eliminate_regs_1): handling. (mark_not_eliminable): Likewise.
- lra-lives.c (process_bb_lives): Likewise.
- lra.c (new_insn_reg): parameter. (collect_non_operand_hard_regs): Likewise. Update call to new insn_reg. handling. (lra_set_insn_recog_data): handling. Update call to collect_non_operand_hard_regs. (add_regs_to_insn_regno_info): handling. Update call to new_insn_reg. (lra_update_insn_regno_info): handling.
- postreload.c (reload_cse_simplify, reload_combine_note_use) (move2add_note_store): Likewise.
- print-rtl.c (print_pattern): Likewise.
- recog.c (store_data_bypass_p_1, store_data_bypass_p): Likewise. (if_test_bypass_p): Likewise.
- regcprop.c (kill_clobbered_value, kill_set_value): Likewise.
- reginfo.c (reg_scan_mark_refs): Likewise.
- reload1.c (maybe_fix_stack_asms, eliminate_regs_1): Likewise. (elimination_effects, mark_not_eliminable, scan_paradoxical_subregs) (forget_old_reloads_1): Likewise.
- reorg.c (find_end_label, try_merge_delay_insns, redundant_insn) (own_thread_p, fill_simple_delay_slots, fill_slots_from_thread) (dbr_schedule): Likewise.
- resource.c (update_live_status, mark_referenced_resources) (mark_set_resources): Likewise.
- rtl.c (copy_rtx): Likewise.
- rtlanal.c (reg_referenced_p, set_of_1, single_set_2, noop_move_p) (note_pattern_stores): Likewise. (reg_is_clobbered_by_clobber_high): Delete.
- sched-deps.c (sched_analyze_reg, sched_analyze_insn): Remove CLOBBER_HIGH handling.

f03bb97bc97 Remove clobber_high
gcc/ChangeLog | 75 +++++++++++++++++++++++++++++++++++++++++++++++++
gcc/alias.c | 10 -------
gcc/cfgexpand.c | 1 -
gcc/combine-stack-adj.c | 1 -
gcc/combine.c | 23 +--------------
gcc/cse.c | 69 +++++++--------------------------------------
gcc/cselib.c | 41 +++++++--------------------
gcc/cselib.h | 2 +-
gcc/dce.c | 11 ++------
gcc/df-scan.c | 6 ----
gcc/doc/rtl.texi | 15 +---------
gcc/dwarf2out.c | 1 -
gcc/emit-rtl.c | 18 ------------
gcc/genconfig.c | 1 -
gcc/genemit.c | 12 +-------
gcc/genrecog.c | 3 +-
gcc/haifa-sched.c | 3 --
gcc/ira-build.c | 5 ----
gcc/ira-costs.c | 7 -----
gcc/ira.c | 7 +----
gcc/jump.c | 1 -
gcc/lra-eliminations.c | 11 --------
gcc/lra-int.h | 2 --
gcc/lra-lives.c | 28 ++++++------------
gcc/lra.c | 53 +++++++++++-----------------------
gcc/postreload.c | 17 +----------
gcc/print-rtl.c | 1 -
gcc/recog.c | 8 ++----
gcc/regcprop.c | 8 ++----
gcc/reginfo.c | 4 ---
gcc/reload1.c | 17 +----------
gcc/reorg.c | 27 ++++++------------
gcc/resource.c | 24 ++--------------
gcc/rtl.c | 4 ---
gcc/rtl.def | 10 -------
gcc/rtl.h | 13 +--------
gcc/rtlanal.c | 48 ++-----------------------------
gcc/sched-deps.c | 15 +---------
38 files changed, 152 insertions(+), 450 deletions(-)

Upstream: gcc.gnu.org


  • Share