1. 12 Sep, 2017 1 commit
    • Convert hard_regno_nregs to a function · ad474626
      This patch converts hard_regno_nregs into an inline function, which
      in turn allows hard_regno_nregs to be used as the name of a targetm
      field.  This is just a mechanical change.
      
      2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* regs.h (hard_regno_nregs): Turn into a function.
      	(end_hard_regno): Update accordingly.
      	* caller-save.c (setup_save_areas): Likewise.
      	(save_call_clobbered_regs): Likewise.
      	(replace_reg_with_saved_mem): Likewise.
      	(insert_restore): Likewise.
      	(insert_save): Likewise.
      	* combine.c (can_change_dest_mode): Likewise.
      	(move_deaths): Likewise.
      	(distribute_notes): Likewise.
      	* config/mips/mips.c (mips_hard_regno_call_part_clobbered): Likewise.
      	* config/powerpcspe/powerpcspe.c (rs6000_cannot_change_mode_class)
      	(rs6000_split_multireg_move): Likewise.
      	(rs6000_register_move_cost): Likewise.
      	(rs6000_memory_move_cost): Likewise.
      	* config/rs6000/rs6000.c (rs6000_cannot_change_mode_class): Likewise.
      	(rs6000_split_multireg_move): Likewise.
      	(rs6000_register_move_cost): Likewise.
      	(rs6000_memory_move_cost): Likewise.
      	* cselib.c (cselib_reset_table): Likewise.
      	(cselib_lookup_1): Likewise.
      	* emit-rtl.c (set_mode_and_regno): Likewise.
      	* function.c (aggregate_value_p): Likewise.
      	* ira-color.c (setup_profitable_hard_regs): Likewise.
      	(check_hard_reg_p): Likewise.
      	(calculate_saved_nregs): Likewise.
      	(assign_hard_reg): Likewise.
      	(improve_allocation): Likewise.
      	(calculate_spill_cost): Likewise.
      	* ira-emit.c (modify_move_list): Likewise.
      	* ira-int.h (ira_hard_reg_set_intersection_p): Likewise.
      	(ira_hard_reg_in_set_p): Likewise.
      	* ira.c (setup_reg_mode_hard_regset): Likewise.
      	(clarify_prohibited_class_mode_regs): Likewise.
      	(check_allocation): Likewise.
      	* lra-assigns.c (find_hard_regno_for_1): Likewise.
      	(lra_setup_reg_renumber): Likewise.
      	(setup_try_hard_regno_pseudos): Likewise.
      	(spill_for): Likewise.
      	(assign_hard_regno): Likewise.
      	(setup_live_pseudos_and_spill_after_risky_transforms): Likewise.
      	* lra-constraints.c (in_class_p): Likewise.
      	(lra_constraint_offset): Likewise.
      	(simplify_operand_subreg): Likewise.
      	(lra_constraints): Likewise.
      	(split_reg): Likewise.
      	(split_if_necessary): Likewise.
      	(invariant_p): Likewise.
      	(inherit_in_ebb): Likewise.
      	* lra-lives.c (process_bb_lives): Likewise.
      	* lra-remat.c (reg_overlap_for_remat_p): Likewise.
      	(get_hard_regs): Likewise.
      	(do_remat): Likewise.
      	* lra-spills.c (assign_spill_hard_regs): Likewise.
      	* mode-switching.c (create_pre_exit): Likewise.
      	* postreload.c (reload_combine_recognize_pattern): Likewise.
      	* recog.c (peep2_find_free_register): Likewise.
      	* regcprop.c (kill_value_regno): Likewise.
      	(set_value_regno): Likewise.
      	(copy_value): Likewise.
      	(maybe_mode_change): Likewise.
      	(find_oldest_value_reg): Likewise.
      	(copyprop_hardreg_forward_1): Likewise.
      	* regrename.c (check_new_reg_p): Likewise.
      	(regrename_do_replace): Likewise.
      	* reload.c (push_reload): Likewise.
      	(combine_reloads): Likewise.
      	(find_dummy_reload): Likewise.
      	(operands_match_p): Likewise.
      	(find_reloads): Likewise.
      	(find_equiv_reg): Likewise.
      	(reload_adjust_reg_for_mode): Likewise.
      	* reload1.c (count_pseudo): Likewise.
      	(count_spilled_pseudo): Likewise.
      	(find_reg): Likewise.
      	(clear_reload_reg_in_use): Likewise.
      	(free_for_value_p): Likewise.
      	(allocate_reload_reg): Likewise.
      	(choose_reload_regs): Likewise.
      	(reload_adjust_reg_for_temp): Likewise.
      	(emit_reload_insns): Likewise.
      	(delete_output_reload): Likewise.
      	* rtlanal.c (subreg_get_info): Likewise.
      	* sched-deps.c (sched_analyze_reg): Likewise.
      	* sel-sched.c (init_regs_for_mode): Likewise.
      	(mark_unavailable_hard_regs): Likewise.
      	(choose_best_reg_1): Likewise.
      	(verify_target_availability): Likewise.
      	* valtrack.c (dead_debug_insert_temp): Likewise.
      	* var-tracking.c (track_loc_p): Likewise.
      	(emit_note_insn_var_location): Likewise.
      	* varasm.c (make_decl_rtl): Likewise.
      	* reginfo.c (choose_hard_reg_mode): Likewise.
      	(init_reg_modes_target): Refer directly to
      	this_target_regs->x_hard_regno_nregs.
      
      From-SVN: r252014
      Richard Sandiford committed
  2. 04 Sep, 2017 1 commit
    • Turn HARD_REGNO_MODE_OK into a target hook · f939c3e6
      2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* target.def (hard_regno_mode_ok): New hook.
      	* doc/tm.texi (HARD_REGNO_MODE_OK): Replace with...
      	(TARGET_HARD_REGNO_MODE_OK): ...this.
      	* doc/tm.texi.in: Regenerate.
      	* hooks.h (hook_bool_uint_mode_true): Declare.
      	* hooks.c (hook_bool_uint_mode_true): New function.
      	* doc/md.texi: Refer to targetm.hard_regno_mode_ok instead of
      	HARD_REGNO_MODE_OK.
      	* genpreds.c (write_insn_preds_c): Add an include of target.h.
      	* alias.c (init_alias_target): Use targetm.hard_regno_mode_ok
      	instead of HARD_REGNO_MODE_OK.
      	* caller-save.c: Include target.h.
      	(reg_save_code): Use targetm.hard_regno_mode_ok instead of
      	HARD_REGNO_MODE_OK.
      	* combine.c (can_combine_p): Likewise.
      	(combinable_i3pat): Likewise.
      	(can_change_dest_mode): Likewise.
      	* expr.c (init_expr_target): Likewise.
      	(convert_move): Likewise.
      	(convert_modes): Likewise.
      	* ira.c (setup_prohibited_class_mode_regs): Likewise.
      	(setup_prohibited_mode_move_regs): Likewise.
      	* ira.h (target_ira): Likewise.
      	* lra-assigns.c (find_hard_regno_for_1): Likewise.
      	* lra-constraints.c (process_alt_operands): Likewise.
      	(split_reg): Likewise.
      	* recog.c (peep2_find_free_register): Likewise.
      	* ree.c (combine_reaching_defs): Likewise.
      	* regcprop.c (maybe_mode_change): Likewise.
      	* reginfo.c (init_reg_sets_1): Likewise.
      	(choose_hard_reg_mode): Likewise.
      	(simplifiable_subregs): Likewise.
      	* regrename.c (check_new_reg_p): Likewise.
      	* reload.c (find_valid_class): Likewise.
      	(find_valid_class_1): Likewise.
      	(reload_inner_reg_of_subreg): Likewise.
      	(push_reload): Likewise.
      	(combine_reloads): Likewise.
      	(find_dummy_reload): Likewise.
      	(find_reloads): Likewise.
      	* reload1.c (find_reg): Likewise.
      	(set_reload_reg): Likewise.
      	(allocate_reload_reg): Likewise.
      	(choose_reload_regs): Likewise.
      	(reload_adjust_reg_for_temp): Likewise.
      	* rtlanal.c (subreg_size_offset_from_lsb): Likewise.
      	(simplify_subreg_regno): Likewise.
      	* sel-sched.c (init_regs_for_mode): Likewise.
      	* varasm.c (make_decl_rtl): Likewise.
      	* config/aarch64/aarch64.h (HARD_REGNO_MODE_OK): Delete.
      	(MODES_TIEABLE_P): Use targetm.hard_regno_mode_ok instead of
      	HARD_REGNO_MODE_OK.
      	* config/aarch64/aarch64-protos.h (aarch64_hard_regno_mode_ok): Delete.
      	* config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Make static.
      	(TARGET_HARD_REGNO_MODE_OK): Redefine.
      	* config/alpha/alpha.h (HARD_REGNO_MODE_OK): Delete.
      	* config/alpha/alpha.c (alpha_hard_regno_mode_ok): New function.
      	(TARGET_HARD_REGNO_MODE_OK): Redefine.
      	* config/arc/arc.h (arc_hard_regno_mode_ok): Delete.
      	(arc_mode_class): Delete.
      	(HARD_REGNO_MODE_OK): Delete.
      	* config/arc/arc.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
      	(arc_hard_regno_mode_ok): Rename old array to...
      	(arc_hard_regno_mode_ok_modes): ...this.
      	(arc_conditional_register_usage): Update accordingly.
      	(arc_mode_class): Make static.
      	(arc_hard_regno_mode_ok): New function.
      	* config/arm/arm.h (HARD_REGNO_MODE_OK): Delete.
      	* config/arm/arm-protos.h (arm_hard_regno_mode_ok): Delete.
      	* config/arm/arm.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
      	(arm_hard_regno_mode_ok): Make static.
      	* config/arm/arm.md (movdi): Use targetm.hard_regno_mode_ok instead of
      	HARD_REGNO_MODE_OK.
      	* config/avr/avr-protos.h (avr_hard_regno_mode_ok): Delete.
      	* config/avr/avr.h (HARD_REGNO_MODE_OK): Delete.
      	* config/avr/avr.c (avr_hard_regno_mode_ok): Make static and
      	return a bool.
      	(TARGET_HARD_REGNO_MODE_OK): Redefine.
      	* config/bfin/bfin-protos.h (hard_regno_mode_ok): Delete.
      	* config/bfin/bfin.h (HARD_REGNO_MODE_OK): Delete.
      	* config/bfin/bfin.c (hard_regno_mode_ok): Rename to...
      	(bfin_hard_regno_mode_ok): ...this.  Make static and return a bool.
      	(TARGET_HARD_REGNO_MODE_OK): Redefine.
      	* config/bfin/predicates.md (valid_reg_operand): Use
      	targetm.hard_regno_mode_ok instead of HARD_REGNO_MODE_OK.
      	* config/c6x/c6x.h (HARD_REGNO_MODE_OK): Delete.
      	* config/c6x/c6x.c (c6x_hard_regno_mode_ok): New function.
      	(TARGET_HARD_REGNO_MODE_OK): Redefine.
      	* config/cr16/cr16.h (HARD_REGNO_MODE_OK): Delete.
      	* config/cr16/cr16-protos.h (cr16_hard_regno_mode_ok): Delete.
      	* config/cr16/cr16.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
      	(cr16_hard_regno_mode_ok): Make static and return a bool.
      	* config/cris/cris.h (HARD_REGNO_MODE_OK): Delete.
      	* config/cris/cris.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
      	(cris_hard_regno_mode_ok): New function.
      	* config/epiphany/epiphany.h (epiphany_hard_regno_mode_ok): Delete.
      	(epiphany_mode_class): Delete.
      	(HARD_REGNO_MODE_OK): Delete.
      	* config/epiphany/epiphany-protos.h (hard_regno_mode_ok): Delete.
      	* config/epiphany/epiphany.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
      	(hard_regno_mode_ok): Rename to...
      	(epiphany_hard_regno_mode_ok): ...this.  Make static and return a bool.
      	* config/fr30/fr30.h (HARD_REGNO_MODE_OK): Delete.
      	* config/fr30/fr30.md: Refer to targetm.hard_regno_mode_ok instead of
      	HARD_REGNO_MODE_OK.
      	* config/frv/frv.h (HARD_REGNO_MODE_OK): Delete.
      	* config/frv/frv-protos.h (frv_hard_regno_mode_ok): Delete.
      	* config/frv/frv.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
      	(frv_hard_regno_mode_ok): Make static and return a bool.
      	* config/frv/frv.md: Refer to targetm.hard_regno_mode_ok instead of
      	HARD_REGNO_MODE_OK.
      	* config/ft32/ft32.h (HARD_REGNO_MODE_OK): Delete.
      	* config/h8300/h8300.h (HARD_REGNO_MODE_OK): Delete.
      	* config/h8300/h8300-protos.h (h8300_hard_regno_mode_ok): Delete.
      	* config/h8300/h8300.c (h8300_hard_regno_mode_ok): Make static
      	and return a bool.
      	(TARGET_HARD_REGNO_MODE_OK): Redefine.
      	* config/i386/i386.h (HARD_REGNO_MODE_OK): Delete.
      	* config/i386/i386-protos.h (ix86_hard_regno_mode_ok): Delete.
      	* config/i386/i386.c (ix86_hard_regno_mode_ok): Make static and
      	return a bool.
      	(TARGET_HARD_REGNO_MODE_OK): Redefine.
      	* config/ia64/ia64.h (HARD_REGNO_MODE_OK): Delete.
      	* config/ia64/ia64.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
      	(ia64_hard_regno_mode_ok): New function.
      	* config/iq2000/iq2000.h (HARD_REGNO_MODE_OK): Delete.
      	* config/iq2000/iq2000.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
      	(iq2000_hard_regno_mode_ok): New function.
      	* config/lm32/lm32.h (HARD_REGNO_MODE_OK): Delete.
      	* config/lm32/lm32.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
      	(lm32_hard_regno_mode_ok): New function.
      	* config/m32c/m32c.h (HARD_REGNO_MODE_OK): Delete.
      	* config/m32c/m32c-protos.h (m32c_hard_regno_ok): Delete.
      	* config/m32c/m32c.c (class_can_hold_mode): Use m32c_hard_regno_mode_ok
      	instead of HARD_REGNO_MODE_OK.
      	(m32c_hard_regno_ok): Rename to...
      	(m32c_hard_regno_mode_ok): ...this.  Make static and return a bool.
      	(m32c_cannot_change_mode_class): Update accordingly.
      	(TARGET_HARD_REGNO_MODE_OK): Redefine.
      	* config/m32r/m32r.h (m32r_hard_regno_mode_ok): Delete.
      	(m32r_mode_class): Delete.
      	(HARD_REGNO_MODE_OK): Delete.
      	* config/m32r/m32r.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
      	(m32r_hard_regno_mode_ok): Rename to...
      	(m32r_hard_regno_modes): ...this.
      	(m32r_mode_class): Make static.
      	(m32r_hard_regno_mode_ok): New function.
      	* config/m68k/m68k.h (HARD_REGNO_MODE_OK): Delete.
      	* config/m68k/m68k-protos.h (m68k_regno_mode_ok): Delete.
      	* config/m68k/m68k.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
      	(m68k_hard_regno_mode_ok): Make static.
      	* config/mcore/mcore.h (HARD_REGNO_MODE_OK): Delete.
      	* config/mcore/mcore.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
      	(mcore_hard_regno_mode_ok): New function.
      	* config/microblaze/microblaze.h (microblaze_hard_regno_mode_ok)
      	(HARD_REGNO_MODE_OK): Delete.
      	* config/microblaze/microblaze.c (microblaze_hard_regno_mode_ok):
      	Rename to...
      	(microblaze_hard_regno_mode_ok_p): ...this and make static.
      	(microblaze_hard_regno_mode_ok): New function.
      	(TARGET_HARD_REGNO_MODE_OK): Redefine.
      	* config/mips/mips.h (HARD_REGNO_MODE_OK): Delete.
      	(mips_hard_regno_mode_ok): Delete.
      	* config/mips/mips.c (mips_hard_regno_mode_ok): Rename to...
      	(mips_hard_regno_mode_ok_p): ...this and make static.
      	(mips_hard_regno_mode_ok_p): Rename to...
      	(mips_hard_regno_mode_ok_uncached): ...this.
      	(mips_hard_regno_mode_ok): New function.
      	(mips_class_max_nregs): Use mips_hard_regno_mode_ok instead
      	of HARD_REGNO_MODE_OK.
      	(mips_option_override): Update after above name changes.
      	(TARGET_HARD_REGNO_MODE_OK): Redefine.
      	* config/mmix/mmix.h (HARD_REGNO_MODE_OK): Delete.
      	* config/mn10300/mn10300.h (HARD_REGNO_MODE_OK): Delete.
      	* config/mn10300/mn10300-protos.h (mn10300_hard_regno_mode_ok): Delete.
      	* config/mn10300/mn10300.c (mn10300_hard_regno_mode_ok): Make static.
      	(TARGET_HARD_REGNO_MODE_OK): Redefine.
      	* config/moxie/moxie.h (HARD_REGNO_MODE_OK): Delete.
      	* config/msp430/msp430.h (HARD_REGNO_MODE_OK): Delete.
      	* config/msp430/msp430-protos.h (msp430_hard_regno_mode_ok): Delete.
      	* config/msp430/msp430.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
      	(msp430_hard_regno_mode_ok): Make static and return a bool.
      	* config/nds32/nds32.h (HARD_REGNO_MODE_OK): Delete.
      	* config/nds32/nds32-protos.h (nds32_hard_regno_mode_ok): Delete.
      	* config/nds32/nds32.c (nds32_hard_regno_mode_ok): Make static
      	and return a bool.
      	(TARGET_HARD_REGNO_MODE_OK): Redefine.
      	* config/nios2/nios2.h (HARD_REGNO_MODE_OK): Delete.
      	* config/nvptx/nvptx.h (HARD_REGNO_MODE_OK): Delete.
      	* config/pa/pa.h (MODES_TIEABLE_P): Update commentary.
      	* config/pa/pa32-regs.h (HARD_REGNO_MODE_OK): Rename to...
      	(PA_HARD_REGNO_MODE_OK): ...this
      	* config/pa/pa64-regs.h (HARD_REGNO_MODE_OK): Rename to...
      	(PA_HARD_REGNO_MODE_OK): ...this.
      	* config/pa/pa.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
      	(pa_hard_regno_mode_ok): New function.
      	* config/pdp11/pdp11.h (HARD_REGNO_MODE_OK): Delete.
      	* config/pdp11/pdp11.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
      	(pdp11_hard_regno_mode_ok): New function.
      	* config/powerpcspe/powerpcspe.h (HARD_REGNO_MODE_OK): Delete.
      	* config/powerpcspe/powerpcspe-protos.h (rs6000_hard_regno_mode_ok_p):
      	Delete.
      	* config/powerpcspe/powerpcspe.c (rs6000_hard_regno_mode_ok_p):
      	Make static.
      	(TARGET_HARD_REGNO_MODE_OK): Redefine.
      	(rs6000_hard_regno_mode_ok): Rename to...
      	(rs6000_hard_regno_mode_ok_uncached): ...this.
      	(rs6000_init_hard_regno_mode_ok): Update accordingly.
      	(rs6000_hard_regno_mode_ok): New function.
      	* config/riscv/riscv.h (HARD_REGNO_MODE_OK): Delete.
      	* config/riscv/riscv-protos.h (riscv_hard_regno_mode_ok_p): Delete.
      	* config/riscv/riscv.c (riscv_hard_regno_mode_ok_p): Rename to...
      	(riscv_hard_regno_mode_ok): ...this and make static.
      	(TARGET_HARD_REGNO_MODE_OK): Redefine.
      	* config/rl78/rl78.h (HARD_REGNO_MODE_OK): Delete.
      	* config/rl78/rl78-protos.h (rl78_hard_regno_mode_ok): Delete.
      	* config/rl78/rl78.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
      	(rl78_hard_regno_mode_ok): Make static and return bool.
      	* config/rs6000/rs6000.h (HARD_REGNO_MODE_OK): Delete.
      	* config/rs6000/rs6000-protos.h (rs6000_hard_regno_mode_ok_p):
      	Delete.
      	* config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok_p): Make static.
      	(TARGET_HARD_REGNO_MODE_OK): Redefine.
      	(rs6000_hard_regno_mode_ok): Rename to...
      	(rs6000_hard_regno_mode_ok_uncached): ...this.
      	(rs6000_init_hard_regno_mode_ok): Update accordingly.
      	(rs6000_hard_regno_mode_ok): New function.
      	* config/rx/rx.h (HARD_REGNO_MODE_OK): Delete.
      	* config/rx/rx.c (rx_hard_regno_mode_ok): New function.
      	(TARGET_HARD_REGNO_MODE_OK): Redefine.
      	* config/s390/s390.h (HARD_REGNO_MODE_OK): Delete.
      	* config/s390/s390-protos.h (s390_hard_regno_mode_ok): Delete.
      	* config/s390/s390.c (s390_hard_regno_mode_ok): Make static.
      	(TARGET_HARD_REGNO_MODE_OK): Redefine.
      	* config/sh/sh.h (HARD_REGNO_MODE_OK): Delete.
      	* config/sh/sh-protos.h (sh_hard_regno_mode_ok): Delete.
      	* config/sh/sh.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
      	(sh_hard_regno_mode_ok): Make static.
      	* config/sparc/constraints.md: Refer to targetm.hard_regno_mode_ok
      	instead of HARD_REGNO_MODE_OK.
      	* config/sparc/sparc.h (hard_regno_mode_classes): Delete.
      	(sparc_mode_class): Delete.
      	(HARD_REGNO_MODE_OK): Delete.
      	* config/sparc/sparc.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
      	(hard_regno_mode_classes): Make static.
      	(sparc_mode_class): Likewise.
      	(sparc_hard_regno_mode_ok): New function.
      	* config/spu/spu.h (HARD_REGNO_MODE_OK): Delete.
      	* config/stormy16/stormy16.h (HARD_REGNO_MODE_OK): Delete.
      	* config/stormy16/stormy16.c (xstormy16_hard_regno_mode_ok): New
      	function.
      	(TARGET_HARD_REGNO_MODE_OK): Redefine.
      	* config/tilegx/tilegx.h (HARD_REGNO_MODE_OK): Delete.
      	* config/tilepro/tilepro.h (HARD_REGNO_MODE_OK): Delete.
      	* config/v850/v850.h (HARD_REGNO_MODE_OK): Delete.
      	* config/v850/v850.c (v850_hard_regno_mode_ok): New function.
      	(TARGET_HARD_REGNO_MODE_OK): Redefine.
      	* config/vax/vax.h (HARD_REGNO_MODE_OK): Delete.
      	* config/visium/visium.h (HARD_REGNO_MODE_OK): Delete.
      	* config/visium/visium.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
      	(visium_hard_regno_mode_ok): New function.
      	* config/visium/visium.md: Refer to targetm.hard_regno_mode_ok
      	instead of HARD_REGNO_MODE_OK.
      	* config/xtensa/xtensa.h (xtensa_hard_regno_mode_ok): Delete.
      	(HARD_REGNO_MODE_OK): Delete.
      	* config/xtensa/xtensa.c (xtensa_hard_regno_mode_ok): Rename to...
      	(xtensa_hard_regno_mode_ok_p): ...this and make static.
      	(xtensa_option_override): Update accordingly.
      	(TARGET_HARD_REGNO_MODE_OK): Redefine.
      	(xtensa_hard_regno_mode_ok): New function.
      	* system.h (HARD_REGNO_MODE_OK): Poison.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r251646
      Richard Sandiford committed
  3. 23 Jun, 2017 1 commit
  4. 14 May, 2017 2 commits
    • move several bitmaps from gc memory to the default obstack and use auto_bitmap · 8f9b31f7
      These places where probably trying to use the default bitmap obstack,
      but passing 0 to bitmap_initialize actually uses gc allocation.  In any
      case they are all cleaned up before going out of scope so using
      auto_bitmap should be fine.
      
      gcc/ChangeLog:
      
      2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
      
      	* haifa-sched.c (estimate_shadow_tick): Replace manual bitmap
      	management with auto_bitmap.
      	(fix_inter_tick): Likewise.
      	(fix_recovery_deps): Likewise.
      	* ira.c (add_store_equivs): Likewise.
      	(find_moveable_pseudos): Likewise.
      	(split_live_ranges_for_shrink_wrap): Likewise.
      	* print-rtl.c (rtx_reuse_manager::rtx_reuse_manager): Likewise.
      	(rtx_reuse_manager::seen_def_p): Likewise.
      	(rtx_reuse_manager::set_seen_def): Likewise.
      	* print-rtl.h (class rtx_reuse_manager): Likewise.
      
      From-SVN: r248022
      Trevor Saunders committed
    • use auto_bitmap more · 0e3de1d4
      gcc/ChangeLog:
      
      2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
      
      	* bt-load.c (combine_btr_defs): Use auto_bitmap to manage bitmap
      	lifetime.
      	(migrate_btr_def): Likewise.
      	* cfgloop.c (get_loop_body_in_bfs_order): Likewise.
      	* df-core.c (loop_post_order_compute): Likewise.
      	(loop_inverted_post_order_compute): Likewise.
      	* hsa-common.h: Likewise.
      	* hsa-gen.c (hsa_bb::~hsa_bb): Likewise.
      	* init-regs.c (initialize_uninitialized_regs): Likewise.
      	* ipa-inline.c (resolve_noninline_speculation): Likewise.
      	(inline_small_functions): Likewise.
      	* ipa-reference.c (ipa_reference_write_optimization_summary): Likewise.
      	* ira.c (combine_and_move_insns): Likewise.
      	(build_insn_chain): Likewise.
      	* loop-invariant.c (find_invariants): Likewise.
      	* lower-subreg.c (propagate_pseudo_copies): Likewise.
      	* predict.c (tree_predict_by_opcode): Likewise.
      	(predict_paths_leading_to): Likewise.
      	(predict_paths_leading_to_edge): Likewise.
      	(estimate_loops_at_level): Likewise.
      	(estimate_loops): Likewise.
      	* shrink-wrap.c (try_shrink_wrapping): Likewise.
      	(spread_components): Likewise.
      	* tree-cfg.c (remove_edge_and_dominated_blocks): Likewise.
      	* tree-loop-distribution.c (rdg_build_partitions): Likewise.
      	* tree-predcom.c (tree_predictive_commoning_loop): Likewise.
      	* tree-ssa-coalesce.c (coalesce_ssa_name): Likewise.
      	* tree-ssa-phionlycprop.c (pass_phi_only_cprop::execute): Likewise.
      	* tree-ssa-pre.c (remove_dead_inserted_code): Likewise.
      	* tree-ssa-sink.c (nearest_common_dominator_of_uses): Likewise.
      	* tree-ssa-threadupdate.c (compute_path_counts): Likewise.
      	(mark_threaded_blocks): Likewise.
      	(thread_through_all_blocks): Likewise.
      	* tree-ssa.c (verify_ssa): Likewise.
      	(execute_update_addresses_taken): Likewise.
      	* tree-ssanames.c (verify_ssaname_freelists): Likewise.
      
      From-SVN: r248021
      Trevor Saunders committed
  5. 19 Apr, 2017 1 commit
  6. 28 Mar, 2017 1 commit
  7. 24 Feb, 2017 1 commit
  8. 16 Feb, 2017 1 commit
  9. 01 Jan, 2017 1 commit
  10. 12 Dec, 2016 1 commit
  11. 07 Dec, 2016 1 commit
    • GCC caches the whether a function is a leaf in crtl->is_leaf. · 0064f49e
      GCC caches the whether a function is a leaf in crtl->is_leaf. Using this
      in the backend is best as leaf_function_p may not work correctly (eg. while
      emitting prolog or epilog code).  There are many reads of crtl->is_leaf
      before it is initialized.  Many targets do in targetm.frame_pointer_required
      (eg. arm, aarch64, i386, mips, sparc), which is called before register 
      allocation by ira_setup_eliminable_regset and sched_init.
      
      Additionally, SHRINK_WRAPPING_ENABLED calls targetm.have_simple_return,
      which evaluates the condition of the simple_return instruction.  On ARM
      this results in a call to use_simple_return_p which requires crtl->is_leaf
      to be set correctly.
      
      To fix this, initialize crtl->is_leaf in ira_setup_eliminable_regset and
      early on in ira.  A bootstrap did not find any uninitialized reads of
      crtl->is_leaf on Thumb-2.  A follow-up patch will remove incorrect uses
      of leaf_function_p from the ARM backend.
      
          gcc/
      	* gcc/ira.c (ira_setup_eliminable_regset): Initialize crtl->is_leaf.
      	(ira): Move initialization of crtl->is_leaf earlier.
      
      From-SVN: r243347
      Wilco Dijkstra committed
  12. 30 Nov, 2016 2 commits
  13. 16 Nov, 2016 1 commit
    • R_MIPS_JALR failures · 8972f7e9
      This is a fix for my PR70890 patch, which incorrectly removed all
      REG_EQUIV notes rather than just one regarding a reg that dies.
      
      	PR rtl-optimization/78325
      	PR rtl-optimization/70890
      	* ira.c (combine_and_move_insns): Only remove REG_EQUIV notes
      	for dead regno.
      
      From-SVN: r242525
      Alan Modra committed
  14. 10 Nov, 2016 1 commit
    • target.def (additional_allocno_class_p): New. · e93f30a6
      2016-11-10  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* target.def (additional_allocno_class_p): New.
      	* hooks.h (hook_bool_reg_class_t_false): New prototype.
      	* hooks.c (hook_bool_reg_class_t_false): New.
      	* ira.c (setup_allocno_and_important_classes): Use the new hook.
      	* doc/tm.texi.in (TARGET_ADDITIONAL_ALLOCNO_CLASS_P): Add it.
      	* doc/tm.texi: Update.
      
      From-SVN: r242043
      Vladimir Makarov committed
  15. 07 Nov, 2016 1 commit
  16. 18 Oct, 2016 1 commit
    • tree-ssa-propagate.h (substitute_and_fold): Adjust prototype. · 62869a1c
      2016-10-18  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-propagate.h (substitute_and_fold): Adjust prototype.
      	* tree-ssa-propagate.c (ssa_prop_fini): Remove final BB_VISITED
      	clearing.
      	(substitute_and_fold_dom_walker): Adjust constructor.
      	(substitute_and_fold_dom_walker::before_dom_children): Remove
      	do_dce flag and handling (always true).
      	(substitute_and_fold): Likewise.
      	* tree-vrp.c (vrp_finalize): Adjust.
      	(execute_early_vrp): Remove final BB_VISITED clearing.
      	* tree-ssa-ccp.c (ccp_finalize): Adjust.
      	* tree-ssa-copy.c (fini_copy_prop): Likewise.
      	* ira.c (ira): Call clear_bb_flags.
      
      From-SVN: r241296
      Richard Biener committed
  17. 13 Oct, 2016 1 commit
    • Move MEMMODEL_* from coretypes.h to memmodel.h · 4d0cdd0c
      2016-10-13  Thomas Preud'homme  <thomas.preudhomme@arm.com>
      
          gcc/
          * coretypes.h: Move MEMMODEL_* macros and enum memmodel definition
          into ...
          * memmodel.h: This file.
          * alias.c, asan.c, auto-inc-dec.c, bb-reorder.c, bt-load.c,
            caller-save.c, calls.c, ccmp.c, cfgbuild.c, cfgcleanup.c,
            cfgexpand.c, cfgloopanal.c, cfgrtl.c, cilk-common.c, combine.c,
            combine-stack-adj.c, common/config/aarch64/aarch64-common.c,
            common/config/arm/arm-common.c, common/config/bfin/bfin-common.c,
            common/config/c6x/c6x-common.c, common/config/i386/i386-common.c,
            common/config/ia64/ia64-common.c, common/config/nvptx/nvptx-common.c,
            compare-elim.c, config/aarch64/aarch64-builtins.c,
            config/aarch64/aarch64-c.c, config/aarch64/cortex-a57-fma-steering.c,
            config/arc/arc.c, config/arc/arc-c.c, config/arm/arm-builtins.c,
            config/arm/arm-c.c, config/avr/avr.c, config/avr/avr-c.c,
            config/avr/avr-log.c, config/bfin/bfin.c, config/c6x/c6x.c,
            config/cr16/cr16.c, config/cris/cris.c, config/darwin-c.c,
            config/darwin.c, config/epiphany/epiphany.c,
            config/epiphany/mode-switch-use.c,
            config/epiphany/resolve-sw-modes.c, config/fr30/fr30.c,
            config/frv/frv.c, config/ft32/ft32.c, config/h8300/h8300.c,
            config/i386/i386-c.c, config/i386/winnt.c, config/iq2000/iq2000.c,
            config/lm32/lm32.c, config/m32c/m32c.c, config/m32r/m32r.c,
            config/m68k/m68k.c, config/mcore/mcore.c,
            config/microblaze/microblaze.c, config/mmix/mmix.c,
            config/mn10300/mn10300.c, config/moxie/moxie.c,
            config/msp430/msp430.c, config/nds32/nds32-cost.c,
            config/nds32/nds32-intrinsic.c, config/nds32/nds32-md-auxiliary.c,
            config/nds32/nds32-memory-manipulation.c,
            config/nds32/nds32-predicates.c, config/nds32/nds32.c,
            config/nios2/nios2.c, config/nvptx/nvptx.c, config/pa/pa.c,
            config/pdp11/pdp11.c, config/rl78/rl78.c, config/rs6000/rs6000-c.c,
            config/rx/rx.c, config/s390/s390-c.c, config/s390/s390.c,
            config/sh/sh.c, config/sh/sh-c.c, config/sh/sh-mem.cc,
            config/sh/sh_treg_combine.cc, config/sol2.c, config/spu/spu.c,
            config/stormy16/stormy16.c, config/tilegx/tilegx.c,
            config/tilepro/tilepro.c, config/v850/v850.c, config/vax/vax.c,
            config/visium/visium.c, config/vms/vms-c.c, config/xtensa/xtensa.c,
            coverage.c, cppbuiltin.c, cprop.c, cse.c, cselib.c, dbxout.c, dce.c,
            df-core.c, df-problems.c, df-scan.c, dojump.c, dse.c, dwarf2asm.c,
            dwarf2cfi.c, dwarf2out.c, emit-rtl.c, except.c, explow.c, expmed.c,
            expr.c, final.c, fold-const.c, function.c, fwprop.c, gcse.c,
            ggc-page.c, haifa-sched.c, hsa-brig.c, hsa-gen.c, hw-doloop.c,
            ifcvt.c, init-regs.c, internal-fn.c, ira-build.c, ira-color.c,
            ira-conflicts.c, ira-costs.c, ira-emit.c, ira-lives.c, ira.c, jump.c,
            loop-doloop.c, loop-invariant.c, loop-iv.c, loop-unroll.c,
            lower-subreg.c, lra.c, lra-assigns.c, lra-coalesce.c,
            lra-constraints.c, lra-eliminations.c, lra-lives.c, lra-remat.c,
            lra-spills.c, mode-switching.c, modulo-sched.c, omp-low.c, passes.c,
            postreload-gcse.c, postreload.c, predict.c, print-rtl-function.c,
            recog.c, ree.c, reg-stack.c, regcprop.c, reginfo.c, regrename.c,
            reload.c, reload1.c, reorg.c, resource.c, rtl-chkp.c, rtl-tests.c,
            rtlanal.c, rtlhooks.c, sched-deps.c, sched-rgn.c, sdbout.c,
            sel-sched-ir.c, sel-sched.c, shrink-wrap.c, simplify-rtx.c,
            stack-ptr-mod.c, stmt.c, stor-layout.c, target-globals.c,
            targhooks.c, toplev.c, tree-nested.c, tree-outof-ssa.c,
            tree-profile.c, tree-ssa-coalesce.c, tree-ssa-ifcombine.c,
            tree-ssa-loop-ivopts.c, tree-ssa-loop.c, tree-ssa-reassoc.c,
            tree-ssa-sccvn.c, tree-vect-data-refs.c, ubsan.c, valtrack.c,
            var-tracking.c, varasm.c: Include memmodel.h.
          * genattrtab.c (write_header): Include memmodel.h in generated file.
          * genautomata.c (main): Likewise.
          * gengtype.c (open_base_files): Likewise.
          * genopinit.c (main): Likewise.
          * genconditions.c (write_header): Include memmodel.h earlier in
          generated file.
          * genemit.c (main): Likewise.
          * genoutput.c (output_prologue): Likewise.
          * genpeep.c (main): Likewise.
          * genpreds.c (write_insn_preds_c): Likewise.
          * genrecog.c (write_header): Likewise.
          * Makefile.in (PLUGIN_HEADERS): Include memmodel.h
      
          gcc/ada/
          * gcc-interface/utils2.c: Include memmodel.h.
      
          gcc/c-family/
          * c-cppbuiltin.c: Include memmodel.h.
          * c-opts.c: Likewise.
          * c-pragma.c: Likewise.
          * c-warn.c: Likewise.
      
          gcc/c/
          * c-typeck.c: Include memmodel.h.
      
          gcc/cp/
          * decl2.c: Include memmodel.h.
          * rtti.c: Likewise.
      
          gcc/fortran/
          * trans-intrinsic.c: Include memmodel.h.
      
          gcc/go/
          * go-backend.c: Include memmodel.h.
      
          libgcc/
          * libgcov-profiler.c: Replace MEMMODEL_* macros by their __ATOMIC_*
          equivalent.
          * config/tilepro/atomic.c: Likewise and stop casting model to
          enum memmodel.
      
      From-SVN: r241121
      Thomas Preud'homme committed
  18. 23 Sep, 2016 1 commit
  19. 09 Sep, 2016 1 commit
    • tm.texi.in (INITIAL_FRAME_POINTER_OFFSET): Remove. · 53680238
      2016-09-10  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * doc/tm.texi.in (INITIAL_FRAME_POINTER_OFFSET): Remove.
              (ELIMINABLE_REGS, TARGET_CAN_ELIMINATE,
              INITIAL_ELIMINATION_OFFSET) : Update documentation.
              * target.def (frame_pointer_required, can_eliminate): Likewise.
              * doc/tm.texi: Regenerated.
              * builtins.c (expand_builtin_setjmp_receiver): Remove #ifdef
              ELIMINABLE_REGS.
              * df-scan.c (df_hard_reg_init): Likewise.
              * ira.c (ira_setup_eliminable_regset): Likewise.
              * lra-eliminations.c (reg_eliminate_1, (update_reg_eliminate,
              init_elim_table): Likewise.
              * reload1.c (reg_eliminate_1, verify_initial_elim_offsets,
              set_initial_elim_offsets, update_eliminables,
              init_elim_table): Likewise.
              * rtlanal.c (get_initial_register_offset): Likewise.
              * config/ft32/ft32.h (INITIAL_FRAME_POINTER_OFFSET): Remove.
              * config/m32r/m32r.h (INITIAL_FRAME_POINTER_OFFSET): Likewise.
              * config/moxie/moxie.h (INITIAL_FRAME_POINTER_OFFSET): Likewise.
              * config/vax/vax.h (INITIAL_FRAME_POINTER_OFFSET): Likewise.
              * config/fr30/fr30.h: Fix comment.
              * config/frv/frv.c: Likewise.
              * config/frv/frv.h: Likewise.
              * config/ft32/ft32.h: Likewise.
              * config/visium/visium.h: Likewise.
              * config/pa/pa64-linux.h: Likewise.
              * config/v850/v850.h: Likewise.
              * config/cris/cris.c: Likewise.
              * config/ia64/ia64.h: Likewise.
              * config/moxie/moxie.h: Likewise.
              * config/m32r/m32r.h: Likewise.
      
      From-SVN: r240058
      Bernd Edlinger committed
  20. 12 Aug, 2016 1 commit
    • re PR c/7652 (-Wswitch-break : Warn if a switch case falls through) · 191816a3
      	PR c/7652
      gcc/
      	* alias.c (find_base_value): Adjust fall through comment.
      	* cfgexpand.c (expand_debug_expr): Likewise.
      	* combine.c (find_split_point): Likewise.
      	(expand_compound_operation): Likewise.  Add FALLTHRU.
      	(make_compound_operation): Adjust fall through comment.
      	(canon_reg_for_combine): Add FALLTHRU.
      	(force_to_mode): Adjust fall through comment.
      	(simplify_shift_const_1): Likewise.
      	(simplify_comparison): Likewise.
      	* config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Add
      	FALLTHRU.
      	* config/aarch64/predicates.md: Likewise.
      	* config/i386/i386.c (function_arg_advance_32): Likewise.
      	(ix86_gimplify_va_arg): Likewise.
      	(print_reg): Likewise.
      	(ix86_print_operand): Likewise.
      	(ix86_build_const_vector): Likewise.
      	(ix86_expand_branch): Likewise.
      	(ix86_sched_init_global): Adjust fall through comment.
      	(ix86_expand_args_builtin): Add FALLTHRU.
      	(ix86_expand_builtin): Likewise.
      	(ix86_expand_vector_init_one_var): Likewise.
      	* config/rs6000/rs6000.c (rs6000_emit_vector_compare_inner): Likewise.
      	(rs6000_adjust_cost): Likewise.
      	(insn_must_be_first_in_group): Likewise.
      	* config/rs6000/rs6000.md: Likewise.  Adjust fall through comment.
      	* dbxout.c (dbxout_symbol): Adjust fall through comment.
      	* df-scan.c (df_uses_record): Likewise.
      	* dojump.c (do_jump): Add FALLTHRU.
      	* dwarf2out.c (mem_loc_descriptor): Likewise.  Adjust fall through
      	comment.
      	(resolve_args_picking_1): Adjust fall through comment.
      	(loc_list_from_tree_1): Likewise.
      	* expmed.c (make_tree): Likewise.
      	* expr.c (expand_expr_real_2): Add FALLTHRU.
      	(expand_expr_real_1): Likewise.  Adjust fall through comment.
      	* fold-const.c (const_binop): Adjust fall through comment.
      	(fold_truth_not_expr): Likewise.
      	(fold_cond_expr_with_comparison): Add FALLTHRU.
      	(fold_binary_loc): Likewise.
      	(contains_label_1): Adjust fall through comment.
      	(multiple_of_p): Likewise.
      	* gcov-tool.c (process_args): Add FALLTHRU.
      	* genattrtab.c (check_attr_test): Likewise.
      	(write_test_expr): Likewise.
      	* genconfig.c (walk_insn_part): Likewise.
      	* genpreds.c (validate_exp): Adjust fall through comment.
      	(needs_variable): Likewise.
      	* gensupport.c (get_alternatives_number): Add FALLTHRU.
      	(subst_dup): Likewise.
      	* gimple-pretty-print.c (dump_gimple_assign): Likewise.
      	* gimplify.c (gimplify_addr_expr): Adjust fall through comment.
      	(gimplify_scan_omp_clauses): Add FALLTHRU.
      	(goa_stabilize_expr): Likewise.
      	* graphite-isl-ast-to-gimple.c (substitute_ssa_name): Adjust fall
      	through comment.
      	* hsa-gen.c (get_address_from_value): Likewise.
      	* ipa-icf.c (sem_function::hash_stmt): Likewise.
      	* ira.c (ira_setup_alts): Add FALLTHRU.
      	* lra-eliminations.c (lra_eliminate_regs_1): Adjust fall through
      	comment.
      	* lto-streamer-out.c (lto_output_tree_ref): Add FALLTHRU.
      	* opts.c (common_handle_option): Likewise.
      	* read-rtl.c (read_rtx_code): Likewise.
      	* real.c (round_for_format): Likewise.
      	* recog.c (asm_operand_ok): Likewise.
      	* reginfo.c (reg_scan_mark_refs): Adjust fall through comment.
      	* reload1.c (set_label_offsets): Likewise.
      	(eliminate_regs_1): Likewise.
      	(reload_reg_reaches_end_p): Likewise.
      	* rtlanal.c (commutative_operand_precedence): Add FALLTHRU.
      	(rtx_cost): Likewise.
      	* sched-rgn.c (is_exception_free): Likewise.
      	* simplify-rtx.c (simplify_rtx): Adjust fall through comment.
      	* stor-layout.c (int_mode_for_mode): Likewise.
      	* toplev.c (print_to_asm_out_file): Likewise.
      	(print_to_stderr): Likewise.
      	* tree-cfg.c (gimple_verify_flow_info): Likewise.
      	* tree-chrec.c (chrec_fold_plus_1): Add FALLTHRU.
      	(chrec_fold_multiply): Likewise.
      	(evolution_function_is_invariant_rec_p): Likewise.
      	(for_each_scev_op): Likewise.
      	* tree-data-ref.c (siv_subscript_p): Likewise.
      	(get_references_in_stmt): Likewise.
      	* tree.c (find_placeholder_in_expr): Adjust fall through comment.
      	(substitute_in_expr): Likewise.
      	(type_cache_hasher::equal): Likewise.
      	(walk_type_fields): Likewise.
      	* var-tracking.c (adjust_mems): Add FALLTHRU.
      	(set_dv_changed): Adjust fall through comment.
      	* varasm.c (default_function_section): Add FALLTHRU.
      gcc/c-family/
      	* c-common.c (scalar_to_vector): Adjust fall through comment.
      	* c-opts.c (c_common_handle_option): Likewise.
      	* c-pragma.c (handle_pragma_pack): Add FALLTHRU.
      	* c-pretty-print.c (c_pretty_printer::postfix_expression): Adjust
      	fall through comment.
      	* cilk.c (extract_free_variables): Add FALLTHRU.
      gcc/c/
      	* c-parser.c (c_parser_external_declaration): Add FALLTHRU.
      	(c_parser_postfix_expression): Likewise.
      	* c-typeck.c (build_unary_op): Adjust fall through comment.
      	(c_mark_addressable): Likewise.
      gcc/cp/
      	* call.c (add_builtin_candidate): Add FALLTHRU.
      	(build_integral_nontype_arg_conv): Adjust fall through comment.
      	(build_new_op_1): Add FALLTHRU.
      	(convert_like_real): Adjust fall through comment.
      	* class.c (fixed_type_or_null): Likewise.
      	* constexpr.c (cxx_eval_constant_expression): Likewise.
      	(potential_constant_expression_1): Likewise.  Add FALLTHRU.
      	* cp-gimplify.c (cp_gimplify_expr): Adjust fall through comment.
      	(cp_fold): Add FALLTHRU.
      	* cvt.c (build_expr_type_conversion): Adjust fall through comment.
      	* cxx-pretty-print.c (pp_cxx_unqualified_id): Add FALLTHRU.
      	(pp_cxx_qualified_id): Likewise.
      	(cxx_pretty_printer::constant): Adjust fall through comment.
      	(cxx_pretty_printer::primary_expression): Add FALLTHRU.
      	(pp_cxx_pm_expression): Adjust fall through comment.
      	(cxx_pretty_printer::expression): Add FALLTHRU.
      	(cxx_pretty_printer::declaration_specifiers): Reformat code.
      	(pp_cxx_type_specifier_seq): Adjust fall through comment.
      	(pp_cxx_ptr_operator): Likewise.  Add FALLTHRU.
      	* error.c (dump_type): Adjust fall through comment.
      	(dump_decl): Likewise.
      	* mangle.c (write_type): Likewise.
      	* method.c (synthesized_method_walk): Add FALLTHRU.
      	* name-lookup.c (arg_assoc_type): Likewise.
      	* parser.c (cp_lexer_print_token): Adjust fall through comment.
      	(cp_parser_primary_expression): Add FALLTHRU.
      	(cp_parser_operator): Likewise.
      	* pt.c (find_parameter_packs_r): Likewise.
      	(tsubst_aggr_type): Adjust fall through comment.
      	* semantics.c (finish_omp_clauses): Add FALLTHRU.
      	* tree.c (lvalue_kind): Likewise.
      gcc/fortran/
      	* decl.c (match_attr_spec): Add FALLTHRU.
      	* primary.c (match_arg_list_function): Likewise.
      	* resolve.c (resolve_operator): Adjust fall through comment.
      	(fixup_charlen): Add FALLTHRU.
      	(resolve_allocate_expr): Adjust fall through comment.
      	* trans-array.c (gfc_conv_ss_startstride): Add FALLTHRU.
      	* trans-intrinsic.c (gfc_conv_intrinsic_len): Adjust fall through
      	comment.
      gcc/java/
      	* expr.c (java_truthvalue_conversion): Adjust fall through comment.
      	* jcf-io.c (verify_constant_pool): Likewise.
      	* typeck.c (promote_type): Likewise.
      gcc/objc/
      	* objc-encoding.c (encode_type): Add FALLTHRU.
      libcpp/
      	* lex.c (search_line_fast): Add FALLTHRU.
      	(_cpp_lex_direct): Likewise.
      	(cpp_token_val_index): Adjust fall through comment.
      	* macro.c (parse_params): Add FALLTHRU.
      	* pch.c (count_defs): Adjust fall through comment.
      	(write_defs): Likewise.
      libiberty/
      	* cp-demangle.c (d_print_mod): Add FALLTHRU.
      
      From-SVN: r239410
      Marek Polacek committed
  21. 06 Jun, 2016 1 commit
    • re PR c/24414 (Old-style asms don't clobber memory) · 93671519
      gcc/
      2016-06-06  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              PR c/24414
              * cfgexpand.c (expand_asm_loc): Remove handling for ADDR_EXPR.
              Implicitly clobber memory for basic asm with non-empty assembler
              string.  Use targetm.md_asm_adjust also here.
              * compare-elim.c (arithmetic_flags_clobber_p): Use asm_noperands here.
              * final.c (final_scan_insn): Handle basic asm in PARALLEL block.
              * gimple.c (gimple_asm_clobbers_memory_p): Handle basic asm with
              non-empty assembler string.
              * ira.c (compute_regs_asm_clobbered): Use asm_noperands here.
              * recog.c (asm_noperands): Handle basic asm in PARALLEL block.
              (decode_asm_operands): Handle basic asm in PARALLEL block.
              (extract_insn): Handle basic asm in PARALLEL block.
              * doc/extend.texi: Mention new behavior of basic asm.
              * config/ia64/ia64 (rtx_needs_barrier): Handle ASM_INPUT here.
              * config/pa/pa.c (branch_to_delay_slot_p, branch_needs_nop_p,
              branch_needs_nop_p): Use asm_noperands.
      
      gcc/testsuite/
      2016-06-06  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              PR c/24414
              * gcc.target/i386/pr24414.c: New test.
      
      From-SVN: r237133
      Bernd Edlinger committed
  22. 28 May, 2016 1 commit
    • ira.c bb_loop_depth again · f3c82ff9
      Follow the same practice as other places in ira.c, where
      free_dominance_info is called along with loop_optimizer_finalize.  Not
      doing so causes an ICE on gcc-5-branch, so avoid that possibility on
      trunk.
      
      	PR rtl-optimization/71275
      	* ira.c (ira): Free dominance info.
      
      From-SVN: r236843
      Alan Modra committed
  23. 26 May, 2016 1 commit
    • ira.c bb_loop_depth · c38c11a1
      	PR rtl-optimization/71275
      	* ira.c (ira): Call loop_optimizer_init to set up bb_loop_depth
      	for update_equiv_regs and combine_and_move_insns.
      
      From-SVN: r236789
      Alan Modra committed
  24. 03 May, 2016 2 commits
    • PR70890, stage2 miscompilation · fcc861d9
      	PR rtl-optimization/70890
      	* ira.c (combine_and_move_insns): When moving def_insn, remove
      	equivs on use_insn.
      
      From-SVN: r235825
      Alan Modra committed
    • Fix PR44281, bad RA with global regs. · f80041ef
      	PR rtl-optimization/44281
      	* hard-reg-set.h (struct target_hard_regs): New field
      	x_fixed_nonglobal_reg_set.
      	(fixed_nonglobal_reg_set): New macro.
      	* reginfo.c (init_reg_sets_1): Initialize it.
      	* ira.c (setup_alloc_regs): Use fixed_nonglobal_reg_set instead
      	of fixed_reg_set.
      	* df-scan.c (df_insn_refs_collect): Asms may reference global regs.
      
      testsuite/
      	PR rtl-optimization/44281
      	* gcc.target/i386/pr44281.c: New test.
      
      From-SVN: r235809
      Bernd Schmidt committed
  25. 30 Apr, 2016 3 commits
    • Goodbye REG_FREQ_CALLS_CROSSED and REG_N_THROWING_CALLS_CROSSED · 725842d0
      	* regs.h (struct reg_info_t): Delete freq_calls_crossed and
      	throw_calls_crossed.
      	(REG_FREQ_CALLS_CROSSED): Delete.
      	(REG_N_THROWING_CALLS_CROSSED): Delete.
      	* regstat.c (regstat_bb_compute_ri): Don't calculate
      	REG_FREQ_CALLS_CROSSED and REG_N_THROWING_CALLS_CROSSED.
      	(dump_reg_info): Don't print call cross frequency.
      	* ira.c (combine_and_move_insns): Don't set REG_FREQ_CALLS_CROSSED
      	and REG_N_THROWING_CALLS_CROSSED.
      
      From-SVN: r235664
      Alan Modra committed
    • Goodbye REG_LIVE_LENGTH · 91dabbb2
      	* regs.h (struct reg_info_t): Delete live_length.
      	(REG_LIVE_LENGTH): Delete macro.
      	* regstat.c (regstat_bb_compute_ri): Delete artificial_uses,
      	local_live, local_processed and local_live_last_luid params.
      	Replace bb_index param with bb.  Don't set REG_LIVE_LENGTH.
      	Formatting fixes.
      	(regstat_compute_ri): Adjust for above.  Don't set
      	REG_LIVE_LENGTH.
      	(dump_reg_info): Don't print live length.
      	* ira.c (update_equiv_regs): Replace test of REG_LIVE_LENGTH
      	with test of setjmp_crosses.  Don't set REG_LIVE_LENGTH.
      	Localize loop_depth var.
      
      From-SVN: r235663
      Alan Modra committed
    • ira.c validate_equiv_mem · 63ce14e0
      This function is used to validate REG_EQUIV notes generated by ira,
      and to validate potential insn combines performed by ira.  The two
      conditions are not exactly the same, with reload being more
      restrictive.  Separate them so more combines/moves can occur.
      
      For example, this sequence from cfgexpand.c:expand_gimple_cond
      	callq  _Z18update_bb_for_insnP15basic_block_def
      	mov    0x10(%rbx),%rdi
      	mov    0x0(%rip),%rbp        # x_rtl+0x34
      	callq  _Z9safe_as_aIP8rtx_insn7rtx_defET_PT0_
      	mov    %r13,%rdx
      	mov    %rbp,%rsi
      	mov    %rax,%rdi
      	callq  _Z18create_basic_blockP7rtx_defS0_P15basic_block_def
      
      becomes
      	callq  _Z18update_bb_for_insnP15basic_block_def
      	mov    0x10(%rbx),%rdi
      	callq  _Z9safe_as_aIP8rtx_insn7rtx_defET_PT0_
      	mov    0x0(%rip),%rsi        # x_rtl+0x34
      	mov    %r13,%rdx
      	mov    %rax,%rdi
      	callq  _Z18create_basic_blockP7rtx_defS0_P15basic_block_def
      
      	* ira.c (enum valid_equiv): New.
      	(validate_equiv_mem): Return enum.
      	(update_equiv_mem): Create replacement in more cases.
      	(add_store_equivs): Update validate_equiv_mem call.
      
      From-SVN: r235661
      Alan Modra committed
  26. 29 Apr, 2016 5 commits
    • ira.c use DF infrastructure for combine_and_move_insns · b00544fa
      This patch actually improves generated code, because REG_DEAD notes
      used by the old insn scan are not always present.  On x86_64, see
      gcc/wide-int-print.o:print_hex for an example of a function that is
      smaller and uses one less callee saved reg.
      
      	* ira.c (combine_and_move_insns): Rather than scanning insns,
      	use DF infrastucture to find use and def insns.
      
      From-SVN: r235660
      Alan Modra committed
    • ira.c combine_and_move_insns, and ordering of functions · 10e04446
      Notes added by add_store_equivs are not used directly or indirectly by
      combine_and_move_insns.  add_store_equivs can therefore run later
      without affecting the output of combine_and_move_insns, and thus
      add_store_equivs need not take into account potentially moved insns.
      Since not all potentially combined/moved insns are in fact combined or
      moved, this may allow add_store_equivs to add more REG_EQUIV notes.
      
      grow_reg_equivs isn't needed until the reload reg_equivs array is
      changed.
      
      	ira.c (combine_and_move_insns): Move invariant conditions..
      	(ira.c): ..to here.  Call combine_and_move_insns before
      	add_store_equivs.  Call grow_reg_equivs later.  Allocate
      	req_equiv later using max_reg_num() rather than global max_regno.
      	(contains_replace_regs): Delete.
      	(add_store_equivs): Remove contains_replace_regs test.
      
      From-SVN: r235659
      Alan Modra committed
    • ira.c tidies: validate_equiv_mem_from_store · c7a99fc6
      	* ira.c (struct equiv_mem_data): New.
      	(equiv_mem, equiv_mem_modified): Delete static vars.
      	(validate_equiv_mem_from_store): Use "data" param to communicate..
      	(validate_equiv_mem): ..from here.
      
      From-SVN: r235658
      Alan Modra committed
    • ira.c tidies: split update_reg_equivs · 42ae0d7f
      	* ira.c (add_store_equivs, combine_and_move_insns): New functions,
      	split out from..
      	(update_reg_equivs): ..here.  Move allocation and freeing of
      	reg_equiv, and calls to grow_reg_equivs, init_alias_analysis,
      	end_alias_analysis to..
      	(ira): ..here.
      
      From-SVN: r235657
      Alan Modra committed
    • ira.c tidies: move pdx_subregs into reg_equiv · 8c1d8b59
      Where pdx_subregs[regno] is used, reg_equiv[regno] is also used.
      
      	* ira.c (pdx_subregs): Delete.
      	(struct equivalence): Add pdx_subregs field.
      	(set_paradoxical_subreg): Remove pdx_subregs param.  Update
      	pdx_subregs access.
      	(update_equiv_regs): Don't create or free pdx_subregs.  Update
      	pdx_subregs access.
      
      From-SVN: r235656
      Alan Modra committed
  27. 31 Mar, 2016 1 commit
  28. 18 Mar, 2016 1 commit
    • re PR rtl-optimization/70263 (ICE at -O1 and above in both 32-bit and 64-bit… · 14d7d4be
      re PR rtl-optimization/70263 (ICE at -O1 and above in both 32-bit and 64-bit modes on x86_64-linux-gnu (segmentation fault))
      
      	PR rtl-optimization/70263
      	* ira.c (memref_used_between_p): Assert we found END in the insn chain.
      	(update_equiv_regs): When trying to move a store to after the insn
      	that sets the source of the store, make sure the store occurs after
      	the insn that sets the source of the store.  When successful note
      	the REG_EQUIV note created in the dump file.
      
      	PR rtl-optimization/70263
      	* gcc.c-torture/compile/pr70263-1.c: New test.
      	* gcc.target/i386/pr70263-2.c: New test.
      
      From-SVN: r234344
      Jeff Law committed
  29. 15 Mar, 2016 1 commit
  30. 10 Mar, 2016 1 commit
    • PR69195, Reload confused by invalid reg_equiv · ba52669f
      Optimizing indirect jumps to direct jumps, and deleting dead insns can
      lead to changes in register lifetimes, which in turn can result in bad
      reg_equiv info being passed to reload.  So do these tasks before
      calculating reg_equiv info.
      
      gcc/
      	PR rtl-optimization/69195
      	PR rtl-optimization/47992
      	* ira.c (recorded_label_ref): Delete.
      	(update_equiv_regs): Return void.
      	(indirect_jump_optimize): New function.
      	(ira): Call indirect_jump_optimize and delete_trivially_dead_insns
      	before regstat_compute_ri.  Don't rebuild_jump_labels here.
      	Delete update_regstat.
      gcc/testsuite/
      	* gcc.dg/pr69195.c: New.
      	* gcc.dg/pr69238.c: New.
      
      From-SVN: r234101
      Alan Modra committed
  31. 01 Mar, 2016 1 commit