1. 19 May, 2015 3 commits
    • rtl.def (REG): Change format to "r". · 9fccb335
      gcc/
      	* rtl.def (REG): Change format to "r".
      	* rtl.h (rtunion): Remove rt_reg.
      	(reg_info): New structure.
      	(rtx_def): Add reg field to main union.
      	(X0REGATTR): Delete.
      	(REG_CHECK): New macro.
      	(SET_REGNO_RAW, rhs_regno, REG_ATTRS): Use it.
      	* rtl.c (rtx_format): Document "r".
      	(rtx_code_size): Handle REG specially.
      	* gengenrtl.c (special_format): Return true for formats
      	that include 'r'.
      	* gengtype.c (adjust_field_rtx_def): Handle 'r' fields.
      	Deal with REG_ATTRS after the field loop.
      	* emit-rtl.c (gen_raw_REG): Call rtx_alloc_stat directly.
      	* expmed.c (init_expmed): Call gen_raw_REG instead of
      	gen_rtx_raw_REG.
      	* expr.c (init_expr_target): Likewise.
      	* regcprop.c (maybe_mode_change): Likewise.
      	* varasm.c (make_decl_rtl): Likewise.
      	* final.c (leaf_renumber_regs_insn): Return early after
      	handling REGs.
      	* genemit.c (gen_exp): Handle 'r' fields.
      	* genpeep.c (match_rtx): Likewise.
      	* gensupport.c (subst_pattern_match): Likewise.
      	(get_alternatives_number, collect_insn_data, alter_predicate_for_insn)
      	(alter_constraints, subst_dup): Likewise.
      	* read-rtl.c (read_rtx_code): Likewise.
      	* print-rtl.c (print_rtx): Likewise.
      	* genrecog.c (find_operand, find_matching_operand): Likewise.
      	(validate_pattern, match_pattern_2): Likewise.
      	(parameter::UINT, rtx_test::REGNO_FIELD): New enum values.
      	(rtx_test::regno_field): New function.
      	(operator ==, safe_to_hoist_p, transition_parameter_type)
      	(parameter_type_string, print_parameter_value)
      	(print_nonbool_test, print_test): Handle new enum values.
      	* cselib.c (rtx_equal_for_cselib_1): Handle REG specially.
      	* lra-constraints.c (operands_match_p): Likewise.
      
      From-SVN: r223339
      Richard Sandiford committed
    • df.h (df_ref_change_reg_with_loc): Remove old_regno parameter. · e1a2b021
      gcc/
      	* df.h (df_ref_change_reg_with_loc): Remove old_regno parameter.
      	Change type of new_regno to unsigned int.
      	* df-scan.c (df_ref_change_reg_with_loc_1): Change type of
      	new_regno to unsigned int.
      	(df_ref_change_reg_with_loc): Remove old_regno parameter.
      	Change type of new_regno to unsigned int.  Use SET_REGNO_RAW.
      	* rtl.h (SET_REGNO): Update call to df_ref_change_reg_with_loc.
      	(SET_REGNO_RAW): Add space after ",".
      
      From-SVN: r223338
      Richard Sandiford committed
    • rtl.h (REG_NREGS): New macro · dc8afb70
      gcc/
      	* rtl.h (REG_NREGS): New macro
      	* alias.c (record_set): Use it.
      	* cfgcleanup.c (mark_effect): Likewise.
      	* combine.c (likely_spilled_retval_1): Likewise.
      	(likely_spilled_retval_p, can_change_dest_mode): Likewise.
      	(move_deaths, distribute_notes): Likewise.
      	* cselib.c (cselib_record_set): Likewise.
      	* df-problems.c (df_simulate_one_insn_forwards): Likewise.
      	* df-scan.c (df_mark_reg): Likewise.
      	* dse.c (look_for_hardregs): Likewise.
      	* dwarf2out.c (reg_loc_descriptor): Likewise.
      	(multiple_reg_loc_descriptor): Likewise.
      	* expr.c (write_complex_part, read_complex_part): Likewise.
      	(emit_move_complex): Likewise.
      	* haifa-sched.c (setup_ref_regs): Likewise.
      	* ira-lives.c (mark_hard_reg_live): Likewise.
      	* lra.c (lra_set_insn_recog_data): Likewise.
      	* mode-switching.c (create_pre_exit): Likewise.
      	* postreload.c (reload_combine_recognize_const_pattern): Likewise.
      	(reload_combine_recognize_pattern): Likewise.
      	(reload_combine_note_use, move2add_record_mode): Likewise.
      	(reload_cse_move2add): Likewise.
      	* reg-stack.c (subst_stack_regs_pat): Likewise.
      	* regcprop.c (kill_value, copy_value): Likewise.
      	(copyprop_hardreg_forward_1): Likewise.
      	* regrename.c (verify_reg_in_set, scan_rtx_reg): Likewise.
      	(build_def_use): Likewise.
      	* sched-deps.c (mark_insn_reg_birth, mark_reg_death): Likewise.
      	(deps_analyze_insn): Likewise.
      	* sched-rgn.c (check_live_1, update_live_1): Likewise.
      	* sel-sched.c (count_occurrences_equiv): Likewise.
      	* valtrack.c (dead_debug_insert_temp): Likewise.
      
      From-SVN: r223337
      Richard Sandiford committed
  2. 09 May, 2015 12 commits
  3. 07 May, 2015 1 commit
    • rtl.h (always_void_p): New function. · f7df4a84
      gcc/
      	* rtl.h (always_void_p): New function.
      	* gengenrtl.c (always_void_p): Likewise.
      	(genmacro): Don't add a mode parameter to gen_rtx_foo if rtxes
      	with code foo are always VOIDmode.
      	* genemit.c (gen_exp): Update gen_rtx_foo calls accordingly.
      	* builtins.c, caller-save.c, calls.c, cfgexpand.c, combine.c,
      	compare-elim.c, config/aarch64/aarch64.c,
      	config/aarch64/aarch64.md, config/alpha/alpha.c,
      	config/alpha/alpha.md, config/arc/arc.c, config/arc/arc.md,
      	config/arm/arm-fixed.md, config/arm/arm.c, config/arm/arm.md,
      	config/arm/ldrdstrd.md, config/arm/thumb2.md, config/arm/vfp.md,
      	config/avr/avr.c, config/bfin/bfin.c, config/c6x/c6x.c,
      	config/c6x/c6x.md, config/cr16/cr16.c, config/cris/cris.c,
      	config/cris/cris.md, config/darwin.c, config/epiphany/epiphany.c,
      	config/epiphany/epiphany.md, config/fr30/fr30.c, config/frv/frv.c,
      	config/frv/frv.md, config/h8300/h8300.c, config/i386/i386.c,
      	config/i386/i386.md, config/i386/sse.md, config/ia64/ia64.c,
      	config/ia64/vect.md, config/iq2000/iq2000.c,
      	config/iq2000/iq2000.md, config/lm32/lm32.c, config/lm32/lm32.md,
      	config/m32c/m32c.c, config/m32r/m32r.c, config/m68k/m68k.c,
      	config/m68k/m68k.md, config/mcore/mcore.c, config/mcore/mcore.md,
      	config/mep/mep.c, config/microblaze/microblaze.c,
      	config/mips/mips.c, config/mips/mips.md, config/mmix/mmix.c,
      	config/mn10300/mn10300.c, config/msp430/msp430.c,
      	config/nds32/nds32-memory-manipulation.c, config/nds32/nds32.c,
      	config/nds32/nds32.md, config/nios2/nios2.c, config/nvptx/nvptx.c,
      	config/pa/pa.c, config/pa/pa.md, config/rl78/rl78.c,
      	config/rs6000/altivec.md, config/rs6000/rs6000.c,
      	config/rs6000/rs6000.md, config/rs6000/vector.md,
      	config/rs6000/vsx.md, config/rx/rx.c, config/rx/rx.md,
      	config/s390/s390.c, config/s390/s390.md, config/sh/sh.c,
      	config/sh/sh.md, config/sh/sh_treg_combine.cc,
      	config/sparc/sparc.c, config/sparc/sparc.md, config/spu/spu.c,
      	config/spu/spu.md, config/stormy16/stormy16.c,
      	config/tilegx/tilegx.c, config/tilegx/tilegx.md,
      	config/tilepro/tilepro.c, config/tilepro/tilepro.md,
      	config/v850/v850.c, config/v850/v850.md, config/vax/vax.c,
      	config/visium/visium.c, config/xtensa/xtensa.c, cprop.c, dse.c,
      	expr.c, gcse.c, ifcvt.c, ira.c, jump.c, lower-subreg.c,
      	lra-constraints.c, lra-eliminations.c, lra.c, postreload.c, ree.c,
      	reg-stack.c, reload.c, reload1.c, reorg.c, sel-sched.c,
      	var-tracking.c: Update calls accordingly.
      
      From-SVN: r222883
      Richard Sandiford committed
  4. 05 Jan, 2015 2 commits
    • rtlanal.c (refers_to_regno_p): Change return value from int to bool. · c9bd6bcd
      gcc/
      	* rtlanal.c (refers_to_regno_p): Change return value from int to bool.
      	* rtl.h (refers_to_regno_p): Add overload.
      	* cse.c: Use it.
      	* bt-load.c: Likewise.
      	* combine.c: Likewise.
      	* df-scan.c: Likewise.
      	* sched-deps.c: Likewise.
      	* config/s390/s390.c: Likewise.
      	* config/m32r/m32r.c: Likewise.
      	* config/rs6000/spe.md: Likewise.
      	* config/rs6000/rs6000.c: Likewise.
      	* config/pa/pa.c: Likewise.
      	* config/stormy16/stormy16.c: Likewise.
      	* config/cris/cris.c: Likewise.
      	* config/arc/arc.md: Likewise.
      	* config/arc/arc.c: Likewise.
      	* config/sh/sh.md: Likewise.
      	* config/sh/sh.c: Likewise.
      	* config/frv/frv.c: Likewise.
      
      From-SVN: r219203
      Oleg Endo committed
    • Update copyright years. · 5624e564
      From-SVN: r219188
      Jakub Jelinek committed
  5. 20 Nov, 2014 1 commit
    • implement a replacement for if_marked · aebf76a2
      gcc/ChangeLog:
      
      2014-11-20  Trevor Saunders  <tsaunders@mozilla.com>
      
      	* doc/gty.texi: Document the new cache gty attribute.
      	* gengtype.c (finish_cache_funcs): New function.
      	(write_roots): Call gt_clear_cache on global variables with the cache
      	gty attribute.
      	* ggc-common.c (ggc_mark_roots): Call gt_clear_caches.
      	* ggc.h (gt_clear_caches): New declaration.
      	* hash-table.h (struct ggc_cache_hasher): New hasher for caches in gc
      	memory.
      	(gt_cleare_cache): New function.
      	* emit-rtl.c, rtl.h, tree.c: Use hash_table instead of htab.
      
      From-SVN: r217866
      Trevor Saunders committed
  6. 12 Nov, 2014 1 commit
    • rtl.h (rtx_function, [...]): Delete. · e02101ff
      gcc/
      	* rtl.h (rtx_function, for_each_rtx, for_each_rtx_in_insn): Delete.
      	* rtlanal.c (non_rtx_starting_operands, for_each_rtx_1, for_each_rtx):
      	(for_each_rtx_in_insn): Delete.
      	(init_rtlanal): Remove initialization of non_rtx_starting_operands.
      	* df-core.c: Remove reference to for_each_rtx in comment.
      
      From-SVN: r217407
      Richard Sandiford committed
  7. 11 Nov, 2014 1 commit
    • system.h: Include algorithm and utility. · 9310366b
      	* system.h: Include algorithm and utility.
      	* rtl.h: Do not include utility here.
      	* wide-int.h: Ditto.
      	* tree-vect-data-refs.c (swap): Remove template.
      	(vect_prune_runtime_alias_test_list): Use std::swap instead of swap.
      
      From-SVN: r217348
      Uros Bizjak committed
  8. 05 Nov, 2014 2 commits
    • ipa-chkp.c: New. · d5e254e1
      gcc/
      
      2014-11-05  Ilya Enkovich  <ilya.enkovich@intel.com>
      
      	* ipa-chkp.c: New.
      	* ipa-chkp.h: New.
      	* tree-chkp.c: New.
      	* tree-chkp.h: New.
      	* tree-chkp-opt.c: New.
      	* rtl-chkp.c: New.
      	* rtl-chkp.h: New.
      	* Makefile.in (OBJS): Add ipa-chkp.o, rtl-chkp.o, tree-chkp.o
      	tree-chkp-opt.o.
      	(GTFILES): Add tree-chkp.c.
      	* mode-classes.def (MODE_POINTER_BOUNDS): New.
      	* tree.def (POINTER_BOUNDS_TYPE): New.
      	* genmodes.c (complete_mode): Support MODE_POINTER_BOUNDS.
      	(POINTER_BOUNDS_MODE): New.
      	(make_pointer_bounds_mode): New.
      	* machmode.h (POINTER_BOUNDS_MODE_P): New.
      	* stor-layout.c (int_mode_for_mode): Support MODE_POINTER_BOUNDS.
      	(layout_type): Support POINTER_BOUNDS_TYPE.
      	* tree-pretty-print.c (dump_generic_node): Support POINTER_BOUNDS_TYPE.
      	* tree-core.h (tree_index): Add TI_POINTER_BOUNDS_TYPE.
      	* tree.c (build_int_cst_wide): Support POINTER_BOUNDS_TYPE.
      	(type_contains_placeholder_1): Likewise.
      	(build_common_tree_nodes): Initialize
      	pointer_bounds_type_node.
      	* tree.h (POINTER_BOUNDS_TYPE_P): New.
      	(pointer_bounds_type_node): New.
      	(POINTER_BOUNDS_P): New.
      	(BOUNDED_TYPE_P): New.
      	(BOUNDED_P): New.
      	(CALL_WITH_BOUNDS_P): New.
      	* gimple.h (gf_mask): Add GF_CALL_WITH_BOUNDS.
      	(gimple_call_with_bounds_p): New.
      	(gimple_call_set_with_bounds): New.
      	(gimple_return_retbnd): New.
      	(gimple_return_set_retbnd): New
      	* gimple.c (gimple_build_return): Increase number of ops
      	for return statement.
      	(gimple_build_call_from_tree): Propagate CALL_WITH_BOUNDS_P
      	flag.
      	* gimple-pretty-print.c (dump_gimple_return): Print second op.
      	* rtl.h (CALL_EXPR_WITH_BOUNDS_P): New.
      	* gimplify.c (gimplify_init_constructor): Avoid infinite
      	loop during gimplification of bounds initializer.
      	* calls.c: Include tree-chkp.h, rtl-chkp.h, bitmap.h.
      	(special_function_p): Use original decl name when analyzing
      	instrumentation clone.
      	(arg_data): Add fields special_slot, pointer_arg and
      	pointer_offset.
      	(store_bounds): New.
      	(emit_call_1): Propagate instrumentation flag for CALL.
      	(initialize_argument_information): Compute pointer_arg,
      	pointer_offset and special_slot for pointer bounds arguments.
      	(finalize_must_preallocate): Preallocate when storing bounds
      	in bounds table.
      	(compute_argument_addresses): Skip pointer bounds.
      	(expand_call): Store bounds into tables separately.  Return
      	result joined with resulting bounds.
      	* cfgexpand.c: Include tree-chkp.h, rtl-chkp.h.
      	(expand_call_stmt): Propagate bounds flag for CALL_EXPR.
      	(expand_return): Add returned bounds arg.  Handle returned bounds.
      	(expand_gimple_stmt_1): Adjust to new expand_return signature.
      	(gimple_expand_cfg): Reset rtx bounds map.
      	* expr.c: Include tree-chkp.h, rtl-chkp.h.
      	(expand_assignment): Handle returned bounds.
      	(store_expr_with_bounds): New.  Replaces store_expr with new bounds
      	target argument.  Handle bounds returned by calls.
      	(store_expr): Now wraps store_expr_with_bounds.
      	* expr.h (store_expr_with_bounds): New.
      	* function.c: Include tree-chkp.h, rtl-chkp.h.
      	(bounds_parm_data): New.
      	(use_register_for_decl): Do not registerize decls used for bounds
      	stores and loads.
      	(assign_parms_augmented_arg_list): Add bounds of the result
      	structure pointer as the second argument.
      	(assign_parm_find_entry_rtl): Mark bounds are never passed on
      	the stack.
      	(assign_parm_is_stack_parm): Likewise.
      	(assign_parm_load_bounds): New.
      	(assign_bounds): New.
      	(assign_parms): Load bounds and determine a location for
      	returned bounds.
      	(diddle_return_value_1): New.
      	(diddle_return_value): Handle returned bounds.
      	* function.h (rtl_data): Add field for returned bounds.
      	* varasm.c: Include tree-chkp.h.
      	(output_constant): Support POINTER_BOUNDS_TYPE.
      	(output_constant_pool_2): Support MODE_POINTER_BOUNDS.
      	(ultimate_transparent_alias_target): Move up.
      	(make_decl_rtl): For instrumented function use
      	name of the original decl.
      	(assemble_start_function): Mark function as global
      	in case it is instrumentation clone of the global
      	function.
      	(do_assemble_alias): Follow transparent alias chain
      	for identifier.  Check if original alias is public.
      	(maybe_assemble_visibility): Use visibility of the
      	original function for instrumented version.
      	(default_unique_section): Likewise.
      	* emit-rtl.c (immed_double_const): Support MODE_POINTER_BOUNDS.
      	(init_emit_once): Build pointer bounds zero constants.
      	* explow.c (trunc_int_for_mode): Support MODE_POINTER_BOUNDS.
      	* target.def (builtin_chkp_function): New.
      	(chkp_bound_type): New.
      	(chkp_bound_mode): New.
      	(chkp_make_bounds_constant): New.
      	(chkp_initialize_bounds): New.
      	(load_bounds_for_arg): New.
      	(store_bounds_for_arg): New.
      	(load_returned_bounds): New.
      	(store_returned_bounds): New.
      	(chkp_function_value_bounds): New.
      	(setup_incoming_vararg_bounds): New.
      	(function_arg): Update hook description with new possible return
      	value CONST_INT.
      	* targhooks.h (default_load_bounds_for_arg): New.
      	(default_store_bounds_for_arg): New.
      	(default_load_returned_bounds): New.
      	(default_store_returned_bounds): New.
      	(default_chkp_bound_type): New.
      	(default_chkp_bound_mode): New.
      	(default_builtin_chkp_function): New.
      	(default_chkp_function_value_bounds): New.
      	(default_chkp_make_bounds_constant): New.
      	(default_chkp_initialize_bounds): New.
      	(default_setup_incoming_vararg_bounds): New.
      	* targhooks.c (default_load_bounds_for_arg): New.
      	(default_store_bounds_for_arg): New.
      	(default_load_returned_bounds): New.
      	(default_store_returned_bounds): New.
      	(default_chkp_bound_type): New.
      	(default_chkp_bound_mode); New.
      	(default_builtin_chkp_function): New.
      	(default_chkp_function_value_bounds): New.
      	(default_chkp_make_bounds_constant): New.
      	(default_chkp_initialize_bounds): New.
      	(default_setup_incoming_vararg_bounds): New.
      	* builtin-types.def (BT_BND): New.
      	(BT_FN_PTR_CONST_PTR): New.
      	(BT_FN_CONST_PTR_CONST_PTR): New.
      	(BT_FN_BND_CONST_PTR): New.
      	(BT_FN_CONST_PTR_BND): New.
      	(BT_FN_PTR_CONST_PTR_SIZE): New.
      	(BT_FN_PTR_CONST_PTR_CONST_PTR): New.
      	(BT_FN_VOID_PTRPTR_CONST_PTR): New.
      	(BT_FN_VOID_CONST_PTR_SIZE): New.
      	(BT_FN_VOID_PTR_BND): New.
      	(BT_FN_CONST_PTR_CONST_PTR_CONST_PTR): New.
      	(BT_FN_BND_CONST_PTR_SIZE): New.
      	(BT_FN_PTR_CONST_PTR_CONST_PTR_SIZE): New.
      	(BT_FN_VOID_CONST_PTR_BND_CONST_PTR): New.
      	* chkp-builtins.def: New.
      	* builtins.def: include chkp-builtins.def.
      	(DEF_CHKP_BUILTIN): New.
      	* builtins.c: Include tree-chkp.h and rtl-chkp.h.
      	(expand_builtin): Support BUILT_IN_CHKP_INIT_PTR_BOUNDS,
      	BUILT_IN_CHKP_NULL_PTR_BOUNDS, BUILT_IN_CHKP_COPY_PTR_BOUNDS,
      	BUILT_IN_CHKP_CHECK_PTR_LBOUNDS, BUILT_IN_CHKP_CHECK_PTR_UBOUNDS,
      	BUILT_IN_CHKP_CHECK_PTR_BOUNDS, BUILT_IN_CHKP_SET_PTR_BOUNDS,
      	BUILT_IN_CHKP_NARROW_PTR_BOUNDS, BUILT_IN_CHKP_STORE_PTR_BOUNDS,
      	BUILT_IN_CHKP_GET_PTR_LBOUND, BUILT_IN_CHKP_GET_PTR_UBOUND,
      	BUILT_IN_CHKP_BNDMK, BUILT_IN_CHKP_BNDSTX, BUILT_IN_CHKP_BNDCL,
      	BUILT_IN_CHKP_BNDCU, BUILT_IN_CHKP_BNDLDX, BUILT_IN_CHKP_BNDRET,
      	BUILT_IN_CHKP_INTERSECT, BUILT_IN_CHKP_NARROW,
      	BUILT_IN_CHKP_EXTRACT_LOWER, BUILT_IN_CHKP_EXTRACT_UPPER.
      	(std_expand_builtin_va_start): Init bounds for va_list.
      	* cppbuiltin.c (define_builtin_macros_for_compilation_flags): Add
      	__CHKP__ macro when Pointer Bounds Checker is on.
      	* params.def (PARAM_CHKP_MAX_CTOR_SIZE): New.
      	* passes.def (pass_ipa_chkp_versioning): New.
      	(pass_early_local_passes): Renamed to pass_build_ssa_passes.
      	(pass_fixup_cfg): Moved to pass_chkp_instrumentation_passes.
      	(pass_chkp_instrumentation_passes): New.
      	(pass_ipa_chkp_produce_thunks): New.
      	(pass_local_optimization_passes): New.
      	(pass_chkp_opt): New.
      	* tree-pass.h (make_pass_ipa_chkp_versioning): New.
      	(make_pass_ipa_chkp_produce_thunks): New.
      	(make_pass_chkp): New.
      	(make_pass_chkp_opt): New.
      	(make_pass_early_local_passes): Renamed to ...
      	(make_pass_build_ssa_passes): This.
      	(make_pass_chkp_instrumentation_passes): New.
      	(make_pass_local_optimization_passes): New.
      	* passes.c (pass_manager::execute_early_local_passes): Execute
      	early passes in three steps.
      	(execute_all_early_local_passes): Renamed to ...
      	(execute_build_ssa_passes): This.
      	(pass_data_early_local_passes): Renamed to ...
      	(pass_data_build_ssa_passes): This.
      	(pass_early_local_passes): Renamed to ...
      	(pass_build_ssa_passes): This.
      	(pass_data_chkp_instrumentation_passes): New.
      	(pass_chkp_instrumentation_passes): New.
      	(pass_data_local_optimization_passes): New.
      	(pass_local_optimization_passes): New.
      	(make_pass_early_local_passes): Renamed to ...
      	(make_pass_build_ssa_passes): This.
      	(make_pass_chkp_instrumentation_passes): New.
      	(make_pass_local_optimization_passes): New.
      	* c-family/c.opt (fcheck-pointer-bounds): New.
      	(fchkp-check-incomplete-type): New.
      	(fchkp-zero-input-bounds-for-main): New.
      	(fchkp-first-field-has-own-bounds): New.
      	(fchkp-narrow-bounds): New.
      	(fchkp-narrow-to-innermost-array): New.
      	(fchkp-optimize): New.
      	(fchkp-use-fast-string-functions): New.
      	(fchkp-use-nochk-string-functions): New.
      	(fchkp-use-static-bounds): New.
      	(fchkp-use-static-const-bounds): New.
      	(fchkp-treat-zero-dynamic-size-as-infinite): New.
      	(fchkp-check-read): New.
      	(fchkp-check-write): New.
      	(fchkp-store-bounds): New.
      	(fchkp-instrument-calls): New.
      	(fchkp-instrument-marked-only): New.
      	(Wchkp): New.
      	* c-family/c-common.c (handle_bnd_variable_size_attribute): New.
      	(handle_bnd_legacy): New.
      	(handle_bnd_instrument): New.
      	(c_common_attribute_table): Add bnd_variable_size, bnd_legacy
      	and bnd_instrument.  Fix documentation.
      	(c_common_format_attribute_table): Likewsie.
      	* toplev.c: include tree-chkp.h.
      	(process_options): Check Pointer Bounds Checker is supported.
      	(compile_file): Add chkp_finish_file call.
      	* ipa-cp.c (initialize_node_lattices): Use cgraph_local_p
      	to handle instrumentation clones properly.
      	(propagate_constants_accross_call): Do not propagate
      	through instrumentation thunks.
      	* ipa-pure-const.c (propagate_pure_const): Support
      	IPA_REF_CHKP.
      	* ipa-inline.c (early_inliner): Check edge has summary allocated.
      	* ipa-split.c: Include tree-chkp.h.
      	(find_retbnd): New.
      	(split_part_set_ssa_name_p): New.
      	(consider_split): Do not split retbnd and retval
      	producers.
      	(insert_bndret_call_after): new.
      	(split_function): Propagate Pointer Bounds Checker
      	instrumentation marks and handle returned bounds.
      	* tree-ssa-sccvn.h (vn_reference_op_struct): Transform opcode
      	into bit field and add with_bounds field.
      	* tree-ssa-sccvn.c (copy_reference_ops_from_call): Set
      	with_bounds field for instrumented calls.
      	* tree-ssa-pre.c (create_component_ref_by_pieces_1): Restore
      	CALL_WITH_BOUNDS_P flag for calls.
      	* tree-ssa-ccp.c: Include tree-chkp.h.
      	(insert_clobber_before_stack_restore): Handle
      	BUILT_IN_CHKP_BNDRET calls.
      	* tree-ssa-dce.c: Include tree-chkp.h.
      	(propagate_necessity): For free call fed by alloc check
      	bounds are also provided by the same alloc.
      	(eliminate_unnecessary_stmts): Handle BUILT_IN_CHKP_BNDRET
      	used by free calls.
      	* tree-inline.c: Include tree-chkp.h.
      	(declare_return_variable): Add arg holding
      	returned bounds slot.  Create and initialize returned bounds var.
      	(remap_gimple_stmt): Handle returned bounds.
      	Return sequence of statements instead of a single statement.
      	(insert_init_stmt): Add declaration.
      	(remap_gimple_seq): Adjust to new remap_gimple_stmt signature.
      	(copy_bb): Adjust to changed return type of remap_gimple_stmt.
      	Properly handle bounds in va_arg_pack and va_arg_pack_len.
      	(expand_call_inline): Handle returned bounds.  Add bounds copy
      	for generated mem to mem assignments.
      	* tree-inline.h (copy_body_data): Add fields retbnd and
      	assign_stmts.
      	* value-prof.c: Include tree-chkp.h.
      	(gimple_ic): Support returned bounds.
      	* ipa.c (cgraph_build_static_cdtor_1): Support contructors
      	with "chkp ctor" and "bnd_legacy" attributes.
      	(symtab_remove_unreachable_nodes): Keep initial values for
      	pointer bounds to be used for checks eliminations.
      	(process_references): Handle IPA_REF_CHKP.
      	(walk_polymorphic_call_targets): Likewise.
      	* ipa-visibility.c (cgraph_externally_visible_p): Mark
      	instrumented 'main' as externally visible.
      	(function_and_variable_visibility): Filter instrumentation
      	thunks.
      	* cgraph.h (cgraph_thunk_info): Add add_pointer_bounds_args
      	field.
      	(cgraph_node): Add instrumented_version, orig_decl and
      	instrumentation_clone fields.
      	(symtab_node::get_alias_target): Allow IPA_REF_CHKP reference.
      	(varpool_node): Add need_bounds_init field.
      	(cgraph_local_p): New.
      	* cgraph.c: Include tree-chkp.h.
      	(cgraph_node::remove): Fix instrumented_version
      	of the referenced node if any.
      	(cgraph_node::dump): Dump instrumentation_clone and
      	instrumented_version fields.
      	(cgraph_node::verify_node): Check correctness of IPA_REF_CHKP
      	references and instrumentation thunks.
      	(cgraph_can_remove_if_no_direct_calls_and_refs_p): Keep
      	all not instrumented instrumentation clones alive.
      	(cgraph_redirect_edge_call_stmt_to_callee): Support
      	returned bounds.
      	* cgraphbuild.c (rebuild_cgraph_edges): Rebuild IPA_REF_CHKP
      	reference.
      	(cgraph_rebuild_references): Likewise.
      	* cgraphunit.c: Include tree-chkp.h.
      	(assemble_thunks_and_aliases): Skip thunks calling instrumneted
      	function version.
      	(varpool_finalize_decl): Register statically initialized decls
      	in Pointer Bounds Checker.
      	(walk_polymorphic_call_targets): Do not mark generated call to
      	__builtin_unreachable as with_bounds.
      	(output_weakrefs): If there are both instrumented and original
      	versions, output only one of them.
      	(cgraph_node::expand_thunk): Set with_bounds flag
      	for created call statement.
      	* ipa-ref.h (ipa_ref_use): Add IPA_REF_CHKP.
      	(ipa_ref): increase size of use field.
      	* symtab.c (ipa_ref_use_name): Add element for IPA_REF_CHKP.
      	* varpool.c (dump_varpool_node): Dump need_bounds_init field.
      	(ctor_for_folding): Do not fold constant bounds vars.
      	* lto-streamer.h (LTO_minor_version): Change minor version from
      	0 to 1.
      	* lto-cgraph.c (compute_ltrans_boundary): Keep initial values for
      	pointer bounds.
      	(lto_output_node): Output instrumentation_clone,
      	thunk.add_pointer_bounds_args and orig_decl field.
      	(lto_output_ref): Adjust to new ipa_ref::use field size.
      	(input_overwrite_node): Read instrumentation_clone field.
      	(input_node): Read thunk.add_pointer_bounds_args and orig_decl
      	fields.
      	(input_ref): Adjust to new ipa_ref::use field size.
      	(input_cgraph_1): Compute instrumented_version fields and restore
      	IDENTIFIER_TRANSPARENT_ALIAS chains.
      	(lto_output_varpool_node): Output
      	need_bounds_init value.
      	(input_varpool_node): Read need_bounds_init value.
      	* lto-partition.c (add_symbol_to_partition_1): Keep original
      	and instrumented versions together.
      	(privatize_symbol_name): Restore transparent alias chain if required.
      	(add_references_to_partition): Add references to pointer bounds vars.
      	* dbxout.c (dbxout_type): Ignore POINTER_BOUNDS_TYPE.
      	* dwarf2out.c (gen_subprogram_die): Ignore bound args.
      	(gen_type_die_with_usage): Skip pointer bounds.
      	(dwarf2out_global_decl): Likewise.
      	(is_base_type): Support POINTER_BOUNDS_TYPE.
      	(gen_formal_types_die): Skip pointer bounds.
      	(gen_decl_die): Likewise.
      	* var-tracking.c (vt_add_function_parameters): Skip
      	bounds parameters.
      	* ipa-icf.c (sem_function::merge): Do not merge when instrumentation
      	thunk still exists.
      	(sem_variable::merge): Reset need_bounds_init flag.
      	* doc/extend.texi: Document Pointer Bounds Checker built-in functions
      	and attributes.
      	* doc/tm.texi.in (TARGET_LOAD_BOUNDS_FOR_ARG): New.
      	(TARGET_STORE_BOUNDS_FOR_ARG): New.
      	(TARGET_LOAD_RETURNED_BOUNDS): New.
      	(TARGET_STORE_RETURNED_BOUNDS): New.
      	(TARGET_CHKP_FUNCTION_VALUE_BOUNDS): New.
      	(TARGET_SETUP_INCOMING_VARARG_BOUNDS): New.
      	(TARGET_BUILTIN_CHKP_FUNCTION): New.
      	(TARGET_CHKP_BOUND_TYPE): New.
      	(TARGET_CHKP_BOUND_MODE): New.
      	(TARGET_CHKP_MAKE_BOUNDS_CONSTANT): New.
      	(TARGET_CHKP_INITIALIZE_BOUNDS): New.
      	* doc/tm.texi: Regenerated.
      	* doc/rtl.texi (MODE_POINTER_BOUNDS): New.
      	(BND32mode): New.
      	(BND64mode): New.
      	* doc/invoke.texi (-mmpx): New.
      	(-mno-mpx): New.
      	(chkp-max-ctor-size): New.
      	* config/i386/constraints.md (w): New.
      	(Ti): New.
      	(Tb): New.
      	* config/i386/i386-c.c (ix86_target_macros_internal): Add __MPX__.
      	* config/i386/i386-modes.def (BND32): New.
      	(BND64): New.
      	* config/i386/i386-protos.h (ix86_bnd_prefixed_insn_p): New.
      	* config/i386/i386.c: Include tree-chkp.h, rtl-chkp.h, tree-iterator.h.
      	(regclass_map): Add bound registers.
      	(dbx_register_map): Likewise.
      	(dbx64_register_map): Likewise.
      	(svr4_dbx_register_map): Likewise.
      	(isa_opts): Add -mmpx.
      	(PTA_MPX): New.
      	(ix86_option_override_internal): Support MPX ISA.
      	(ix86_conditional_register_usage): Support bound registers.
      	(ix86_code_end): Add MPX bnd prefix.
      	(output_set_got): Likewise.
      	(print_reg): Avoid prefixes for bound registers.
      	(ix86_print_operand): Add '!' (MPX bnd) print prefix support.
      	(ix86_print_operand_punct_valid_p): Likewise.
      	(ix86_print_operand_address): Support UNSPEC_BNDMK_ADDR and
      	UNSPEC_BNDLDX_ADDR.
      	(ix86_output_call_insn): Add MPX bnd prefix to branch instructions.
      	(ix86_class_likely_spilled_p): Add bound regs support.
      	(ix86_hard_regno_mode_ok): Likewise.
      	(x86_order_regs_for_local_alloc): Likewise.
      	(ix86_bnd_prefixed_insn_p): New.
      	(ix86_builtins): Add
      	IX86_BUILTIN_BNDMK, IX86_BUILTIN_BNDSTX,
      	IX86_BUILTIN_BNDLDX, IX86_BUILTIN_BNDCL,
      	IX86_BUILTIN_BNDCU, IX86_BUILTIN_BNDRET,
      	IX86_BUILTIN_BNDNARROW, IX86_BUILTIN_BNDINT,
      	IX86_BUILTIN_SIZEOF, IX86_BUILTIN_BNDLOWER,
      	IX86_BUILTIN_BNDUPPER.
      	(builtin_isa): Add leaf_p and nothrow_p fields.
      	(def_builtin): Initialize leaf_p and nothrow_p.
      	(ix86_add_new_builtins): Handle leaf_p and nothrow_p
      	flags.
      	(bdesc_mpx): New.
      	(bdesc_mpx_const): New.
      	(ix86_init_mpx_builtins): New.
      	(ix86_init_builtins): Call ix86_init_mpx_builtins.
      	(ix86_emit_cmove): New.
      	(ix86_emit_move_max): New.
      	(ix86_expand_builtin): Expand IX86_BUILTIN_BNDMK,
      	IX86_BUILTIN_BNDSTX, IX86_BUILTIN_BNDLDX,
      	IX86_BUILTIN_BNDCL, IX86_BUILTIN_BNDCU,
      	IX86_BUILTIN_BNDRET, IX86_BUILTIN_BNDNARROW,
      	IX86_BUILTIN_BNDINT, IX86_BUILTIN_SIZEOF,
      	IX86_BUILTIN_BNDLOWER, IX86_BUILTIN_BNDUPPER.
      	(ix86_function_value_bounds): New.
      	(ix86_builtin_mpx_function): New.
      	(ix86_get_arg_address_for_bt): New.
      	(ix86_load_bounds): New.
      	(ix86_store_bounds): New.
      	(ix86_load_returned_bounds): New.
      	(ix86_store_returned_bounds): New.
      	(ix86_mpx_bound_mode): New.
      	(ix86_make_bounds_constant): New.
      	(ix86_initialize_bounds):
      	(TARGET_LOAD_BOUNDS_FOR_ARG): New.
      	(TARGET_STORE_BOUNDS_FOR_ARG): New.
      	(TARGET_LOAD_RETURNED_BOUNDS): New.
      	(TARGET_STORE_RETURNED_BOUNDS): New.
      	(TARGET_CHKP_BOUND_MODE): New.
      	(TARGET_BUILTIN_CHKP_FUNCTION): New.
      	(TARGET_CHKP_FUNCTION_VALUE_BOUNDS): New.
      	(TARGET_CHKP_MAKE_BOUNDS_CONSTANT): New.
      	(TARGET_CHKP_INITIALIZE_BOUNDS): New.
      	(ix86_option_override_internal): Do not
      	support x32 with MPX.
      	(init_cumulative_args): Init stdarg, bnd_regno, bnds_in_bt
      	and force_bnd_pass.
      	(function_arg_advance_32): Return number of used integer
      	registers.
      	(function_arg_advance_64): Likewise.
      	(function_arg_advance_ms_64): Likewise.
      	(ix86_function_arg_advance): Handle pointer bounds.
      	(ix86_function_arg): Likewise.
      	(ix86_function_value_regno_p): Mark fisrt bounds registers as
      	possible function value.
      	(ix86_function_value_1): Handle pointer bounds type/mode
      	(ix86_return_in_memory): Likewise.
      	(ix86_print_operand): Analyse insn to decide abounf "bnd" prefix.
      	(ix86_expand_call): Generate returned bounds.
      	(ix86_setup_incoming_vararg_bounds): New.
      	(ix86_va_start): Initialize bounds for pointers in va_list.
      	(TARGET_SETUP_INCOMING_VARARG_BOUNDS): New.
      	* config/i386/i386.h (TARGET_MPX): New.
      	(TARGET_MPX_P): New.
      	(FIRST_PSEUDO_REGISTER): Fix to new value.
      	(FIXED_REGISTERS): Add bound registers.
      	(CALL_USED_REGISTERS): Likewise.
      	(REG_ALLOC_ORDER): Likewise.
      	(HARD_REGNO_NREGS): Likewise.
      	(VALID_BND_REG_MODE): New.
      	(FIRST_BND_REG): New.
      	(LAST_BND_REG): New.
      	(reg_class): Add BND_REGS.
      	(REG_CLASS_NAMES): Likewise.
      	(REG_CLASS_CONTENTS): Likewise.
      	(BND_REGNO_P): New.
      	(ANY_BND_REG_P): New.
      	(BNDmode): New.
      	(HI_REGISTER_NAMES): Add bound registers.
      	(ix86_args): Add bnd_regno, bnds_in_bt,	force_bnd_pass and
      	stdarg fields.
      	* config/i386/i386.md (UNSPEC_BNDMK): New.
      	(UNSPEC_BNDMK_ADDR): New.
      	(UNSPEC_BNDSTX): New.
      	(UNSPEC_BNDLDX): New.
      	(UNSPEC_BNDLDX_ADDR): New.
      	(UNSPEC_BNDCL): New.
      	(UNSPEC_BNDCU): New.
      	(UNSPEC_BNDCN): New.
      	(UNSPEC_MPX_FENCE): New.
      	(UNSPEC_SIZEOF): New.
      	(BND0_REG): New.
      	(BND1_REG): New.
      	(type): Add mpxmov, mpxmk, mpxchk, mpxld, mpxst.
      	(length_immediate): Support mpxmov, mpxmk, mpxchk, mpxld, mpxst.
      	(prefix_rep): Check for bnd prefix.
      	(prefix_0f): Support mpxmov, mpxmk, mpxchk, mpxld, mpxst.
      	(length_nobnd): New.
      	(length): Use length_nobnd when specified.
      	(memory): Support mpxmov, mpxmk, mpxchk, mpxld, mpxst.
      	(BND): New.
      	(bnd_ptr): New.
      	(BNDCHECK): New.
      	(bndcheck): New.
      	(*jcc_1): Add MPX bnd prefix.
      	(*jcc_2): Likewise.
      	(jump): Likewise.
      	(*indirect_jump): Likewise.
      	(*tablejump_1): Likewise.
      	(simple_return_internal): Likewise.
      	(simple_return_internal_long): Likewise.
      	(simple_return_pop_internal): Likewise.
      	(simple_return_indirect_internal): Likewise.
      	(<mode>_mk): New.
      	(*<mode>_mk): New.
      	(mov<mode>): New.
      	(*mov<mode>_internal_mpx): New.
      	(<mode>_<bndcheck>): New.
      	(*<mode>_<bndcheck>): New.
      	(<mode>_ldx): New.
      	(*<mode>_ldx): New.
      	(<mode>_stx): New.
      	(*<mode>_stx): New.
      	move_size_reloc_<mode>): New.
      	* config/i386/predicates.md (address_mpx_no_base_operand): New.
      	(address_mpx_no_index_operand): New.
      	(bnd_mem_operator): New.
      	(symbol_operand): New.
      	(x86_64_immediate_size_operand): New.
      	* config/i386/i386.opt (mmpx): New.
      	* config/i386/i386-builtin-types.def (BND): New.
      	(ULONG): New.
      	(BND_FTYPE_PCVOID_ULONG): New.
      	(VOID_FTYPE_BND_PCVOID): New.
      	(VOID_FTYPE_PCVOID_PCVOID_BND): New.
      	(BND_FTYPE_PCVOID_PCVOID): New.
      	(BND_FTYPE_PCVOID): New.
      	(BND_FTYPE_BND_BND): New.
      	(PVOID_FTYPE_PVOID_PVOID_ULONG): New.
      	(PVOID_FTYPE_PCVOID_BND_ULONG): New.
      	(ULONG_FTYPE_VOID): New.
      	(PVOID_FTYPE_BND): New.
      
      gcc/testsuite/
      
      2014-11-05  Ilya Enkovich  <ilya.enkovich@intel.com>
      
      	* gcc.target/i386/chkp-builtins-1.c: New.
      	* gcc.target/i386/chkp-builtins-2.c: New.
      	* gcc.target/i386/chkp-builtins-3.c: New.
      	* gcc.target/i386/chkp-builtins-4.c: New.
      	* gcc.target/i386/chkp-remove-bndint-1.c: New.
      	* gcc.target/i386/chkp-remove-bndint-2.c: New.
      	* gcc.target/i386/chkp-const-check-1.c: New.
      	* gcc.target/i386/chkp-const-check-2.c: New.
      	* gcc.target/i386/chkp-lifetime-1.c: New.
      	* gcc.dg/pr37858.c: Replace early_local_cleanups pass name
      	with build_ssa_passes.
      
      From-SVN: r217125
      Ilya Enkovich committed
    • simplify-rtx.c (simplify_binary_operation_1): Div check added. · 96023bba
      2014-11-05  Alex Velenko  <Alex.Velenko@arm.com>
      
          gcc/
          * simplify-rtx.c (simplify_binary_operation_1): Div check added.
          * rtl.h (SUBREG_P): New macro added.
      
          gcc/testsuite/
          * gcc.dg/asr-div1.c: New testcase.
      
      From-SVN: r217118
      Alex Velenko committed
  9. 29 Oct, 2014 2 commits
    • decl.c, [...]: Remove redundant enum from machine_mode. · ef4bddc2
      gcc/ada/
      	* gcc-interface/decl.c, gcc-interface/gigi.h, gcc-interface/misc.c,
      	gcc-interface/trans.c, gcc-interface/utils.c, gcc-interface/utils2.c:
      	Remove redundant enum from machine_mode.
      
      gcc/c-family/
      	* c-common.c, c-common.h, c-cppbuiltin.c, c-lex.c: Remove redundant
      	enum from machine_mode.
      
      gcc/c/
      	* c-decl.c, c-tree.h, c-typeck.c: Remove redundant enum from
      	machine_mode.
      
      gcc/cp/
      	* constexpr.c: Remove redundant enum from machine_mode.
      
      gcc/fortran/
      	* trans-types.c, trans-types.h: Remove redundant enum from
      	machine_mode.
      
      gcc/go/
      	* go-lang.c: Remove redundant enum from machine_mode.
      
      gcc/java/
      	* builtins.c, java-tree.h, typeck.c: Remove redundant enum from
      	machine_mode.
      
      gcc/lto/
      	* lto-lang.c: Remove redundant enum from machine_mode.
      
      gcc/
      	* addresses.h, alias.c, asan.c, auto-inc-dec.c, bt-load.c, builtins.c,
      	builtins.h, caller-save.c, calls.c, calls.h, cfgexpand.c, cfgloop.h,
      	cfgrtl.c, combine.c, compare-elim.c, config/aarch64/aarch64-builtins.c,
      	config/aarch64/aarch64-protos.h, config/aarch64/aarch64-simd.md,
      	config/aarch64/aarch64.c, config/aarch64/aarch64.h,
      	config/aarch64/aarch64.md, config/alpha/alpha-protos.h,
      	config/alpha/alpha.c, config/arc/arc-protos.h, config/arc/arc.c,
      	config/arc/arc.h, config/arc/predicates.md,
      	config/arm/aarch-common-protos.h, config/arm/aarch-common.c,
      	config/arm/arm-protos.h, config/arm/arm.c, config/arm/arm.h,
      	config/arm/arm.md, config/arm/neon.md, config/arm/thumb2.md,
      	config/avr/avr-log.c, config/avr/avr-protos.h, config/avr/avr.c,
      	config/avr/avr.md, config/bfin/bfin-protos.h, config/bfin/bfin.c,
      	config/c6x/c6x-protos.h, config/c6x/c6x.c, config/c6x/c6x.md,
      	config/cr16/cr16-protos.h, config/cr16/cr16.c,
      	config/cris/cris-protos.h, config/cris/cris.c, config/cris/cris.md,
      	config/darwin-protos.h, config/darwin.c,
      	config/epiphany/epiphany-protos.h, config/epiphany/epiphany.c,
      	config/epiphany/epiphany.md, config/fr30/fr30.c,
      	config/frv/frv-protos.h, config/frv/frv.c, config/frv/predicates.md,
      	config/h8300/h8300-protos.h, config/h8300/h8300.c,
      	config/i386/i386-builtin-types.awk, config/i386/i386-protos.h,
      	config/i386/i386.c, config/i386/i386.md, config/i386/predicates.md,
      	config/i386/sse.md, config/i386/sync.md, config/ia64/ia64-protos.h,
      	config/ia64/ia64.c, config/iq2000/iq2000-protos.h,
      	config/iq2000/iq2000.c, config/iq2000/iq2000.md,
      	config/lm32/lm32-protos.h, config/lm32/lm32.c,
      	config/m32c/m32c-protos.h, config/m32c/m32c.c,
      	config/m32r/m32r-protos.h, config/m32r/m32r.c,
      	config/m68k/m68k-protos.h, config/m68k/m68k.c,
      	config/mcore/mcore-protos.h, config/mcore/mcore.c,
      	config/mcore/mcore.md, config/mep/mep-protos.h, config/mep/mep.c,
      	config/microblaze/microblaze-protos.h, config/microblaze/microblaze.c,
      	config/mips/mips-protos.h, config/mips/mips.c,
      	config/mmix/mmix-protos.h, config/mmix/mmix.c,
      	config/mn10300/mn10300-protos.h, config/mn10300/mn10300.c,
      	config/moxie/moxie.c, config/msp430/msp430-protos.h,
      	config/msp430/msp430.c, config/nds32/nds32-cost.c,
      	config/nds32/nds32-intrinsic.c, config/nds32/nds32-md-auxiliary.c,
      	config/nds32/nds32-protos.h, config/nds32/nds32.c,
      	config/nios2/nios2-protos.h, config/nios2/nios2.c,
      	config/pa/pa-protos.h, config/pa/pa.c, config/pdp11/pdp11-protos.h,
      	config/pdp11/pdp11.c, config/rl78/rl78-protos.h, config/rl78/rl78.c,
      	config/rs6000/altivec.md, config/rs6000/rs6000-c.c,
      	config/rs6000/rs6000-protos.h, config/rs6000/rs6000.c,
      	config/rs6000/rs6000.h, config/rx/rx-protos.h, config/rx/rx.c,
      	config/s390/predicates.md, config/s390/s390-protos.h,
      	config/s390/s390.c, config/s390/s390.h, config/s390/s390.md,
      	config/sh/predicates.md, config/sh/sh-protos.h, config/sh/sh.c,
      	config/sh/sh.md, config/sparc/predicates.md,
      	config/sparc/sparc-protos.h, config/sparc/sparc.c,
      	config/sparc/sparc.md, config/spu/spu-protos.h, config/spu/spu.c,
      	config/stormy16/stormy16-protos.h, config/stormy16/stormy16.c,
      	config/tilegx/tilegx-protos.h, config/tilegx/tilegx.c,
      	config/tilegx/tilegx.md, config/tilepro/tilepro-protos.h,
      	config/tilepro/tilepro.c, config/v850/v850-protos.h,
      	config/v850/v850.c, config/v850/v850.md, config/vax/vax-protos.h,
      	config/vax/vax.c, config/vms/vms-c.c, config/xtensa/xtensa-protos.h,
      	config/xtensa/xtensa.c, coverage.c, cprop.c, cse.c, cselib.c, cselib.h,
      	dbxout.c, ddg.c, df-problems.c, dfp.c, dfp.h, doc/md.texi,
      	doc/rtl.texi, doc/tm.texi, doc/tm.texi.in, dojump.c, dse.c,
      	dwarf2cfi.c, dwarf2out.c, dwarf2out.h, emit-rtl.c, emit-rtl.h,
      	except.c, explow.c, expmed.c, expmed.h, expr.c, expr.h, final.c,
      	fixed-value.c, fixed-value.h, fold-const.c, function.c, function.h,
      	fwprop.c, gcse.c, gengenrtl.c, genmodes.c, genopinit.c, genoutput.c,
      	genpreds.c, genrecog.c, gensupport.c, gimple-ssa-strength-reduction.c,
      	graphite-clast-to-gimple.c, haifa-sched.c, hooks.c, hooks.h, ifcvt.c,
      	internal-fn.c, ira-build.c, ira-color.c, ira-conflicts.c, ira-costs.c,
      	ira-emit.c, ira-int.h, ira-lives.c, ira.c, ira.h, jump.c, langhooks.h,
      	libfuncs.h, lists.c, loop-doloop.c, loop-invariant.c, loop-iv.c,
      	loop-unroll.c, lower-subreg.c, lower-subreg.h, lra-assigns.c,
      	lra-constraints.c, lra-eliminations.c, lra-int.h, lra-lives.c,
      	lra-spills.c, lra.c, lra.h, machmode.h, omp-low.c, optabs.c, optabs.h,
      	output.h, postreload.c, print-tree.c, read-rtl.c, real.c, real.h,
      	recog.c, recog.h, ree.c, reg-stack.c, regcprop.c, reginfo.c,
      	regrename.c, regs.h, reload.c, reload.h, reload1.c, rtl.c, rtl.h,
      	rtlanal.c, rtlhash.c, rtlhooks-def.h, rtlhooks.c, sched-deps.c,
      	sel-sched-dump.c, sel-sched-ir.c, sel-sched-ir.h, sel-sched.c,
      	simplify-rtx.c, stmt.c, stor-layout.c, stor-layout.h, target.def,
      	targhooks.c, targhooks.h, tree-affine.c, tree-call-cdce.c,
      	tree-complex.c, tree-data-ref.c, tree-dfa.c, tree-if-conv.c,
      	tree-inline.c, tree-outof-ssa.c, tree-scalar-evolution.c,
      	tree-ssa-address.c, tree-ssa-ccp.c, tree-ssa-loop-ivopts.c,
      	tree-ssa-loop-ivopts.h, tree-ssa-loop-manip.c,
      	tree-ssa-loop-prefetch.c, tree-ssa-math-opts.c, tree-ssa-reassoc.c,
      	tree-ssa-sccvn.c, tree-streamer-in.c, tree-switch-conversion.c,
      	tree-vect-data-refs.c, tree-vect-generic.c, tree-vect-loop.c,
      	tree-vect-patterns.c, tree-vect-slp.c, tree-vect-stmts.c,
      	tree-vrp.c, tree.c, tree.h, tsan.c, ubsan.c, valtrack.c,
      	var-tracking.c, varasm.c: Remove redundant enum from
      	machine_mode.
      gcc/
      	* gengtype.c (main): Treat machine_mode as a scalar typedef.
      	* genmodes.c (emit_insn_modes_h): Hide inline functions if
      	USED_FOR_TARGET.
      
      From-SVN: r216834
      Richard Sandiford committed
    • PR rtl-optimization/63340 (part 2) · dab67d2c
      gcc/
      	PR rtl-optimization/63340 (part 2)
      	* rtl.h (invalid_mode_change_p): Delete.
      	(valid_mode_changes_for_regno): New function.
      	* reginfo.c (invalid_mode_change_p): Delete.
      	(valid_mode_changes_for_regno): New function.
      	* ira-costs.c (setup_regno_cost_classes_by_aclass): Restrict the
      	classes to registers that are allowed by valid_mode_changes_for_regno.
      	(setup_regno_cost_classes_by_mode): Likewise.
      	(print_allocno_costs): Remove invalid_mode_change_p test.
      	(print_pseudo_costs, find_costs_and_classes): Likewise.
      
      From-SVN: r216829
      Richard Sandiford committed
  10. 22 Oct, 2014 1 commit
    • cfgbuild.h: New. · 893479de
      
      2014-10-22  Andrew MacLeod  <amacleod@redhat.com>
      
      	* cfgbuild.h: New.  Add prototypes for cfgbuild.c.
      	* cfgcleanup.h: New.  Add prototypes for cfgcleanup.c.
      	* cfgloopmanip.h: New.  Add prototypes for cfgloopmanip.c.
      	* dominance.h: New.  Add prototypes for dominance.c.
      	* cfgloop.h: Move some prototypes/enum to cfgloopmanip.h and include it.
      	* cfghooks.h: (struct profile_record) Relocate here.
      	Relocate 2 prototypes from basic-block.h.
      	* basic-block.h: Move prototypes and struct to new header files.
      	Include cfgbuild.h, cfgcleanup.h, and dominance.h.
      	* rtl.h: Move a few prototypes to new header files.
      	* cfgcleanup.c (merge_memattrs): Make static.
      	* genopinit.c (main): Add predict.h to list of includes.
      	* predict.h: Update prototype list to match predict.c.
      	* predict.c (maybe_hot_count_p): Export.
      	(cgraph_edge::maybe_hot_p): Move to cgraph.c.
      	(cgraph_node::optimize_for_size_p): Move to cgraph.h.
      	* cgraph.h (cgraph_node::optimize_for_size_p): Relocate here.
      	* cgraph.c (cgraph_edge::maybe_hot_p): Relocate here.
      	* profile.h: Adjust prototypes.
      	* ifcvt.h: New.  Relocate struct ce_if_block here.
      	* ifcvt.c: Include ifcvt.h.
      
      	* config/frv/frv.c: Include ifcvt.h.
      	* config/frv/frv-protos.h: Add 'struct' to ce_if_block * parameters.
      
      From-SVN: r216559
      Andrew MacLeod committed
  11. 21 Oct, 2014 1 commit
    • cfgloopanal.c (seq_cost): Delete. · 11204b2d
      2014-10-21  Zhenqiang Chen  <zhenqiang.chen@arm.com>
      
      	* cfgloopanal.c (seq_cost): Delete.
      	* rtl.h (seq_cost): New prototype.
      	* rtlanal.c (seq_cost): New function.
      	* tree-ssa-loop-ivopts.c (seq_cost): Delete.
      
      From-SVN: r216501
      Zhenqiang Chen committed
  12. 20 Oct, 2014 1 commit
    • cfgrtl.h: New. · 59f2e9d8
      
      2014-10-20  Andrew MacLeod  <amacleod@redhat.com>
      
      	* cfgrtl.h: New.  Add prototypes for cfgrtl.c.
      	* basic-block.h: Remove prototypes for cfgrtl.c.
      	* cfghooks.h (cfg_layout_initialize, cfg_layout_finalize): Move
      	prototypes to cfgrtl.h.
      	* profile.h (profile_info): Add extern export declaration.
      	* rtl.h: Remove prototypes for cfgrtl.h.
      	* tree-cfg.h (gt_ggc_mx, gt_pch_nx): Move prototypes to here.
      	* ipa-inline.c: Include profile.h.
      	* loop-unroll.c: Ditto.
      	* modulo-sched.c: Ditto.
      	* postreload-gcse.c: Ditto.
      	* predict.c: Ditto.
      	* sched-ebb.c: Ditto.
      	* sched-rgn.c: Ditto.
      	* tracer.c: Ditto.
      	* tree-ssa-loop-ivcanon.c: Ditto.
      
      From-SVN: r216485
      Andrew MacLeod committed
  13. 16 Oct, 2014 1 commit
    • function.h: Flatten file. · 83685514
      2014-10-16  Andrew MacLeod  <amacleod@redhat.com>
      
      	* function.h: Flatten file.  Remove includes, adjust prototypes to 
      	reflect only what is in function.h.
      	(enum direction, struct args_size, struct locate_and_pad_arg_data,
      	ADD_PARM_SIZE, SUB_PARM_SIZE, ARGS_SIZE_TREE, ARGS_SIZE_RTX): Relocate
      	from expr.h.
      	(ASLK_REDUCE_ALIGN, ASLK_RECORD_PAD): Relocate from rtl.h.
      	(optimize_function_for_size_p, optimize_function_for_speed_p): Move
      	prototypes to predict.h.
      	(init_varasm_status): Move prototype to varasm.h.
      	* expr.h: Adjust include files.
      	(enum direction, struct args_size, struct locate_and_pad_arg_data,
      	ADD_PARM_SIZE, SUB_PARM_SIZE, ARGS_SIZE_TREE, ARGS_SIZE_RTX): Move
      	to function.h.
      	(locate_and_pad_parm): Move prototype to function.h.
      	* rtl.h: (assign_stack_local, ASLK_REDUCE_ALIGN, ASLK_RECORD_PAD,
      	assign_stack_local_1, assign_stack_temp, assign_stack_temp_for_type,
      	assign_temp, reposition_prologue_and_epilogue_notes,
      	prologue_epilogue_contains, sibcall_epilogue_contains,
      	update_temp_slot_address, maybe_copy_prologue_epilogue_insn,
      	set_return_jump_label): Move prototypes to function.h.
      	* predict.h (optimize_function_for_size_p,
      	optimize_function_for_speed_p): Relocate prototypes from function.h.
      	* shrink-wrap.h (emit_return_into_block, active_insn_between,
      	convert_jumps_to_returns, emit_return_for_exit): Move prototypes to
      	function.h.
      	* varasm.h (init_varasm_status): Relocate prototype from function.h.
      	* genattrtab.c (write_header): Add predict.h to include list.
      	* genconditions.c (write_header): Add predict.h to include list.
      	* genemit.c (main): Adjust header file includes.
      	* gengtype.c (ifiles): Add flattened function.h header files.
      	* genoutput.c (output_prologue): Add predict.h to include list.
      	* genpreds.c (write_insn_preds_c): Adjust header file includes.
      	* genrecog.c (write_header): Add flattened function.h header files.
      	* alias.c: Adjust include files.
      	* auto-inc-dec.c: Likewise.
      	* basic-block.h: Likewise.
      	* bb-reorder.c: Likewise.
      	* bt-load.c: Likewise.
      	* builtins.c: Likewise.
      	* caller-save.c: Likewise.
      	* calls.c: Likewise.
      	* cfgbuild.c: Likewise.
      	* cfgcleanup.c: Likewise.
      	* cfgexpand.c: Likewise.
      	* cfgloop.c: Likewise.
      	* cfgloop.h: Likewise.
      	* cfgrtl.c: Likewise.
      	* cgraph.h: Likewise.
      	* cgraphclones.c: Likewise.
      	* cgraphunit.c: Likewise.
      	* combine-stack-adj.c: Likewise.
      	* combine.c: Likewise.
      	* coverage.c: Likewise.
      	* cprop.c: Likewise.
      	* cse.c: Likewise.
      	* cselib.c: Likewise.
      	* dbxout.c: Likewise.
      	* ddg.c: Likewise.
      	* df-core.c: Likewise.
      	* df-problems.c: Likewise.
      	* df-scan.c: Likewise.
      	* dojump.c: Likewise.
      	* dwarf2cfi.c: Likewise.
      	* dwarf2out.c: Likewise.
      	* emit-rtl.c: Likewise.
      	* except.c: Likewise.
      	* explow.c: Likewise.
      	* expr.c: Likewise.
      	* final.c: Likewise.
      	* function.c: Likewise.
      	* gcse.c: Likewise.
      	* gimple-fold.c: Likewise.
      	* gimple-low.c: Likewise.
      	* gimple-streamer.h: Likewise.
      	* haifa-sched.c: Likewise.
      	* ifcvt.c: Likewise.
      	* ira.c: Likewise.
      	* jump.c: Likewise.
      	* lcm.c: Likewise.
      	* loop-invariant.c: Likewise.
      	* lra-assigns.c: Likewise.
      	* lra-coalesce.c: Likewise.
      	* lra-constraints.c: Likewise.
      	* lra-eliminations.c: Likewise.
      	* lra-lives.c: Likewise.
      	* lra-spills.c: Likewise.
      	* lra.c: Likewise.
      	* lto-cgraph.c: Likewise.
      	* lto-section-in.c: Likewise.
      	* lto-section-out.c: Likewise.
      	* lto-streamer-in.c: Likewise.
      	* lto-streamer-out.c: Likewise.
      	* mode-switching.c: Likewise.
      	* modulo-sched.c: Likewise.
      	* omp-low.c: Likewise.
      	* optabs.c: Likewise.
      	* passes.c: Likewise.
      	* postreload-gcse.c: Likewise.
      	* postreload.c: Likewise.
      	* predict.c: Likewise.
      	* profile.c: Likewise.
      	* recog.c: Likewise.
      	* ree.c: Likewise.
      	* reg-stack.c: Likewise.
      	* regcprop.c: Likewise.
      	* reginfo.c: Likewise.
      	* regrename.c: Likewise.
      	* reload.c: Likewise.
      	* reload1.c: Likewise.
      	* reorg.c: Likewise.
      	* resource.c: Likewise.
      	* rtlanal.c: Likewise.
      	* sched-deps.c: Likewise.
      	* sched-ebb.c: Likewise.
      	* sched-rgn.c: Likewise.
      	* sel-sched-dump.c: Likewise.
      	* sel-sched-ir.c: Likewise.
      	* sel-sched.c: Likewise.
      	* shrink-wrap.c: Likewise.
      	* simplify-rtx.c: Likewise.
      	* statistics.c: Likewise.
      	* stmt.c: Likewise.
      	* stor-layout.c: Likewise.
      	* store-motion.c: Likewise.
      	* symtab.c: Likewise.
      	* targhooks.c: Likewise.
      	* toplev.c: Likewise.
      	* trans-mem.c: Likewise.
      	* tree-cfg.c: Likewise.
      	* tree-cfgcleanup.c: Likewise.
      	* tree-dfa.c: Likewise.
      	* tree-eh.c: Likewise.
      	* tree-inline.c: Likewise.
      	* tree-into-ssa.c: Likewise.
      	* tree-nested.c: Likewise.
      	* tree-nrv.c: Likewise.
      	* tree-profile.c: Likewise.
      	* tree-ssa-alias.c: Likewise.
      	* tree-ssa-ccp.c: Likewise.
      	* tree-ssa-copy.c: Likewise.
      	* tree-ssa-copyrename.c: Likewise.
      	* tree-ssa-dom.c: Likewise.
      	* tree-ssa-operands.c: Likewise.
      	* tree-ssa-propagate.c: Likewise.
      	* tree-ssa-structalias.c: Likewise.
      	* tree-ssa-tail-merge.c: Likewise.
      	* tree-ssa-threadedge.c: Likewise.
      	* tree-ssa-threadupdate.c: Likewise.
      	* tree-ssa-uncprop.c: Likewise.
      	* tree-ssa-uninit.c: Likewise.
      	* tree-ssa.c: Likewise.
      	* tree-stdarg.c: Likewise.
      	* tree-tailcall.c: Likewise.
      	* tree.c: Likewise.
      	* tsan.c: Likewise.
      	* valtrack.c: Likewise.
      	* varasm.c: Likewise.
      	* vmsdbgout.c: Likewise.
      	* web.c: Likewise.
      	* testsuite/g++.dg/plugin/pragma_plugin.c: Adjust include files.
      	* config/aarch64/aarch64.c: Add flattened includes from function.h.
      	* config/alpha/alpha.c: Likewise.
      	* config/arc/arc.c: Likewise.
      	* config/arm/arm.c: Likewise.
      	* config/avr/avr-log.c: Likewise.
      	* config/avr/avr.c: Likewise.
      	* config/bfin/bfin.c: Likewise.
      	* config/c6x/c6x.c: Likewise.
      	* config/cr16/cr16.c: Likewise.
      	* config/cris/cris.c: Likewise.
      	* config/darwin.c: Likewise.
      	* config/epiphany/epiphany.c: Likewise.
      	* config/epiphany/mode-switch-use.c: Likewise.
      	* config/epiphany/resolve-sw-modes.c: Likewise.
      	* config/fr30/fr30.c: Likewise.
      	* config/frv/frv.c: Likewise.
      	* config/h8300/h8300.c: Likewise.
      	* config/i386/i386.c: Likewise.
      	* config/ia64/ia64.c: Likewise.
      	* config/iq2000/iq2000.c: Likewise.
      	* config/lm32/lm32.c: Likewise.
      	* config/m32c/m32c.c: Likewise.
      	* config/m32r/m32r.c: Likewise.
      	* config/m68k/m68k.c: Likewise.
      	* config/mcore/mcore.c: Likewise.
      	* config/mep/mep-pragma.c: Likewise.
      	* config/mep/mep.c: Likewise.
      	* config/microblaze/microblaze.c: Likewise.
      	* config/mips/mips.c: Likewise.
      	* config/mmix/mmix.c: Likewise.
      	* config/mn10300/mn10300.c: Likewise.
      	* config/moxie/moxie.c: Likewise.
      	* config/msp430/msp430.c: Likewise.
      	* config/nds32/nds32-cost.c: Likewise.
      	* config/nds32/nds32-fp-as-gp.c: Likewise.
      	* config/nds32/nds32-intrinsic.c: Likewise.
      	* config/nds32/nds32-isr.c: Likewise.
      	* config/nds32/nds32-md-auxiliary.c: Likewise.
      	* config/nds32/nds32-memory-manipulation.c: Likewise.
      	* config/nds32/nds32-pipelines-auxiliary.c: Likewise.
      	* config/nds32/nds32-predicates.c: Likewise.
      	* config/nds32/nds32.c: Likewise.
      	* config/nios2/nios2.c: Likewise.
      	* config/pa/pa.c: Likewise.
      	* config/pdp11/pdp11.c: Likewise.
      	* config/rl78/rl78.c: Likewise.
      	* config/rs6000/rs6000.c: Likewise.
      	* config/rx/rx.c: Likewise.
      	* config/s390/s390.c: Likewise.
      	* config/score/score.c: Likewise.
      	* config/sh/sh.c: Likewise.
      	* config/sparc/sparc.c: Likewise.
      	* config/spu/spu.c: Likewise.
      	* config/stormy16/stormy16.c: Likewise.
      	* config/tilegx/tilegx.c: Likewise.
      	* config/tilepro/tilepro.c: Likewise.
      	* config/v850/v850.c: Likewise.
      	* config/vax/vax.c: Likewise.
      	* config/xtensa/xtensa.c: Likewise.
      
      
      2014-10-16  Andrew MacLeod  <amacleod@redhat.com>
      
      	* ada/gcc-interface/misc.c: Adjust include files.
      
      2014-10-16  Andrew MacLeod  <amacleod@redhat.com>
      
      	* c/c-decl.c: Adjust include files.
      
      2014-10-16  Andrew MacLeod  <amacleod@redhat.com>
      
      	* c-family/c-pragma.c: Adjust include files.
      	* c-family/c-semantics.c: Likewise.
      
      2014-10-16  Andrew MacLeod  <amacleod@redhat.com>
      
      	* cp/cp-tree.h: Adjust include files.
      
      2014-10-16  Andrew MacLeod  <amacleod@redhat.com>
      
      	* fortran/f95-lang.c: Adjust include files.
      	* fortran/trans-decl.c: Likewise.
      
      2014-10-16  Andrew MacLeod  <amacleod@redhat.com>
      
      	* java/class.c: Adjust include files.
      	* java/resource.c: Likewise.
      
      2014-10-16  Andrew MacLeod  <amacleod@redhat.com>
      
      	* objc/objc-act.c: Adjust include files.
      
      From-SVN: r216337
      Andrew MacLeod committed
  14. 12 Oct, 2014 1 commit
    • move many gc hashtab to hash_table · 2a22f99c
      gcc/
      
      * asan.c, cfgloop.c, cfgloop.h, cgraph.c, cgraph.h,
      	config/darwin.c, config/m32c/m32c.c, config/mep/mep.c,
      	config/mips/mips.c, config/rs6000/rs6000.c, dwarf2out.c,
      	function.c, function.h, gimple-ssa.h, libfuncs.h, optabs.c,
      	output.h, rtl.h, sese.c, symtab.c, tree-cfg.c, tree-dfa.c,
      	tree-ssa.c, varasm.c: Use hash-table instead of hashtab.
      	* doc/gty.texi (for_user): Document new option.
      	* gengtype.c (create_user_defined_type): Don't try to get a struct for
      	char.
      	(walk_type): Don't error out on for_user option.
      	(write_func_for_structure): Emit user marking routines if requested by
      	for_user option.
      	(write_local_func_for_structure): Likewise.
      	(main): Mark types with for_user option as used.
      	* ggc.h (gt_pch_nx): Add overload for unsigned int.
      	* hash-map.h (hash_map::hash_entry::pch_nx_helper): AddOverloads.
      	* hash-table.h (ggc_hasher): New struct.
      	(hash_table::create_ggc): New function.
      	(gt_pch_nx): New overload for hash_table.
      
      java/
      
      	* class.c, decl.c, except.c, expr.c, java-tree.h, lang.c: Use
      	hash_table instead of hashtab.
      
      objc/
      
      	* objc-act.c: use hash_table instead of hashtab.
      
      cp/
      
      	* cp-gimplify.c, cp-tree.h, decl.c, mangle.c, name-lookup.c,
      	pt.c, semantics.c, tree.c, typeck2.c: Use hash_table instead of
      	hashtab.
      
      fortran/
      
      	* trans-decl.c, trans.c, trans.h: Use hash_table instead of hashtab.
      
      c-family/
      
      	* c-common.c: Use hash_table instead of hashtab.
      
      From-SVN: r216127
      Trevor Saunders committed
  15. 22 Sep, 2014 2 commits
    • hard-reg-set.h: Include hash-table.h. · 6969eb0d
      gcc/
      	* hard-reg-set.h: Include hash-table.h.
      	(target_hard_regs): Add a finalize method and a x_simplifiable_subregs
      	field.
      	* target-globals.c (target_globals::~target_globals): Call
      	hard_regs->finalize.
      	* rtl.h (subreg_shape): New structure.
      	(shape_of_subreg): New function.
      	(simplifiable_subregs): Declare.
      	* reginfo.c (simplifiable_subreg): New structure.
      	(simplifiable_subregs_hasher): Likewise.
      	(simplifiable_subregs): New function.
      	(invalid_mode_changes): Delete.
      	(alid_mode_changes, valid_mode_changes_obstack): New variables.
      	(record_subregs_of_mode): Remove subregs_of_mode parameter.
      	Record valid mode changes in valid_mode_changes.
      	(find_subregs_of_mode): Remove subregs_of_mode parameter.
      	Update calls to record_subregs_of_mode.
      	(init_subregs_of_mode): Remove invalid_mode_changes and bitmap
      	handling.  Initialize new variables.  Update call to
      	find_subregs_of_mode.
      	(invalid_mode_change_p): Check new variables instead of
      	invalid_mode_changes.
      	(finish_subregs_of_mode): Finalize new variables instead of
      	invalid_mode_changes.
      	(target_hard_regs::finalize): New function.
      	* ira-costs.c (print_allocno_costs): Call invalid_mode_change_p
      	even when CLASS_CANNOT_CHANGE_MODE is undefined.
      
      From-SVN: r215449
      Richard Sandiford committed
    • rtl.h (subreg_info): Expand commentary · 0cb07998
      gcc/
      	* rtl.h (subreg_info): Expand commentary
      	* rtlanal.c (subreg_get_info): Likewise.
      
      From-SVN: r215447
      Richard Sandiford committed
  16. 16 Sep, 2014 2 commits
    • Replace INSN_DELETED_P with rtx_insn member functions · 4654c0cf
      gcc/
      
      	* cfgrtl.c, combine.c, config/arc/arc.c, config/mcore/mcore.c,
      	config/rs6000/rs6000.c, config/sh/sh.c, cprop.c, dwarf2out.c,
      	emit-rtl.c, final.c, function.c, gcse.c, jump.c, reg-stack.c,
      	reload1.c, reorg.c, resource.c, sel-sched-ir.c: Replace INSN_DELETED_P
      	macro with statically checked member functions.
      	* rtl.h (rtx_insn::deleted): New method.
      	(rtx_insn::set_deleted): Likewise.
      	(rtx_insn::set_undeleted): Likewise.
      	(INSN_DELETED_P): Remove.
      
      From-SVN: r215282
      Trevor Saunders committed
    • use rtx_insn * more · e73de8f3
      gcc/ChangeLog:
      
      2014-09-15  Trevor Saunders  <tsaunders@mozilla.com>
      
      	* config/mn10300/mn10300.c (mn10300_insert_setlb_lcc): Assign the
      	result of emit_jump_insn_before to a new variable.
      	* jump.c (mark_jump_label): Change the type of insn to rtx_insn *.
      	(mark_jump_label_1): Likewise.
      	(mark_jump_label_asm): Likewise.
      	* reload1.c (gen_reload): Change type of tem to rtx_insn *.
      	* rtl.h (mark_jump_label): Adjust.
      
      From-SVN: r215281
      Trevor Saunders committed
  17. 12 Sep, 2014 1 commit
    • params 2 and 3 of reg_set_between_p · a5d567ec
      gcc/ChangeLog:
      	* config/alpha/alpha.c (alpha_ra_ever_killed): Replace NULL_RTX
      	with NULL when dealing with an insn.
      	* config/sh/sh.c (sh_reorg): Strengthen local "last_float_move"
      	from rtx to rtx_insn *.
      	* rtl.h (reg_set_between_p): Strengthen params 2 and 3 from
      	const_rtx to const rtx_insn *.
      	* rtlanal.c (reg_set_between_p): Likewise, removing a checked cast.
      
      From-SVN: r215222
      David Malcolm committed
  18. 11 Sep, 2014 1 commit
    • Introduce LABEL_REF_LABEL · a827d9b1
      gcc/ChangeLog:
      2014-09-11  David Malcolm  <dmalcolm@redhat.com>
      
      	* rtl.h (LABEL_REF_LABEL): New macro.
      
      	* alias.c (rtx_equal_for_memref_p): Use LABEL_REF_LABEL in place
      	of XEXP (, 0), where we know that we have a LABEL_REF.
      	* cfgbuild.c (make_edges): Likewise.
      	(purge_dead_tablejump_edges): Likewise.
      	* cfgexpand.c (convert_debug_memory_address): Likewise.
      	* cfgrtl.c (patch_jump_insn): Likewise.
      	* combine.c (distribute_notes): Likewise.
      	* cse.c (hash_rtx_cb): Likewise.
      	(exp_equiv_p): Likewise.
      	(fold_rtx): Likewise.
      	(check_for_label_ref): Likewise.
      	* cselib.c (rtx_equal_for_cselib_1): Likewise.
      	(cselib_hash_rtx): Likewise.
      	* emit-rtl.c (mark_label_nuses): Likewise.
      	* explow.c (convert_memory_address_addr_space): Likewise.
      	* final.c (output_asm_label): Likewise.
      	(output_addr_const): Likewise.
      	* gcse.c (add_label_notes): Likewise.
      	* genconfig.c (walk_insn_part): Likewise.
      	* genrecog.c (validate_pattern): Likewise.
      	* ifcvt.c (cond_exec_get_condition): Likewise.
      	(noce_emit_store_flag): Likewise.
      	(noce_get_alt_condition): Likewise.
      	(noce_get_condition): Likewise.
      	* jump.c (maybe_propagate_label_ref): Likewise.
      	(mark_jump_label_1): Likewise.
      	(redirect_exp_1): Likewise.
      	(rtx_renumbered_equal_p): Likewise.
      	* lra-constraints.c (operands_match_p): Likewise.
      	* reload.c (operands_match_p): Likewise.
      	(find_reloads): Likewise.
      	* reload1.c (set_label_offsets): Likewise.
      	* reorg.c (get_branch_condition): Likewise.
      	* rtl.c (rtx_equal_p_cb): Likewise.
      	(rtx_equal_p): Likewise.
      	* rtlanal.c (reg_mentioned_p): Likewise.
      	(rtx_referenced_p): Likewise.
      	(get_condition): Likewise.
      	* sched-vis.c (print_value): Likewise.
      	* varasm.c (const_hash_1): Likewise.
      	(compare_constant): Likewise.
      	(const_rtx_hash_1): Likewise.
      	(output_constant_pool_1): Likewise.
      
      From-SVN: r215190
      David Malcolm committed
  19. 09 Sep, 2014 3 commits
    • single_set takes an insn · e8a54173
      gcc/ChangeLog:
      2014-09-09  David Malcolm  <dmalcolm@redhat.com>
      
      	* rtl.h (single_set_2): Strengthen first param from const_rtx to
      	const rtx_insn *, and move prototype to above...
      	(single_set): ...this.  Convert this from a macro to an inline
      	function, enforcing the requirement that the param is a const
      	rtx_insn *.
      	(find_args_size_adjust): Strengthen param from rtx to rtx_insn *.
      
      	* config/arm/aarch-common-protos.h (aarch_crypto_can_dual_issue):
      	Strengthen both params from rtx to rtx_insn *.
      	* config/arm/aarch-common.c (aarch_crypto_can_dual_issue):
      	Likewise; introduce locals "producer_set", "consumer_set", using
      	them in place of "producer" and "consumer" when dealing with SET
      	rather than insn.
      	* config/avr/avr.c (avr_out_plus): Add checked cast to rtx_insn *
      	when invoking single_set in region guarded by INSN_P.
      	(avr_out_bitop): Likewise.
      	(_reg_unused_after): Introduce local rtx_sequence * "seq" in
      	region guarded by GET_CODE check, using methods to strengthen
      	local "this_insn" from rtx to rtx_insn *, and for clarity.
      	* config/avr/avr.md (define_insn_and_split "xload8<mode>_A"):
      	Strengthen local "insn" from rtx to rtx_insn *.
      	(define_insn_and_split "xload<mode>_A"): Likewise.
      	* config/bfin/bfin.c (trapping_loads_p): Likewise for param
      	"insn".
      	(find_load): Likewise for return type.
      	(workaround_speculation): Likewise for both locals named
      	"load_insn".
      	* config/cris/cris.c (cris_cc0_user_requires_cmp): Likewise for
      	local "cc0_user".
      	* config/cris/cris.md (define_peephole2 ; moversideqi): Likewise
      	for local "prev".
      	* config/h8300/h8300-protos.h (notice_update_cc): Likewise for
      	param 2.
      	* config/h8300/h8300.c (notice_update_cc): Likewise.
      	* config/i386/i386.c (ix86_flags_dependent): Likewise for params
      	"insn" and "dep_insn".
      	(exact_store_load_dependency): Likewise for both params.
      	(ix86_macro_fusion_pair_p): Eliminate local named "single_set"
      	since this now clashes with inline function.  Instead, delay
      	calling single_set until the point where its needed, and then
      	assign the result to "compare_set" and rework the conditional that
      	follows.
      	* config/ia64/ia64.md (define_expand "tablejump"): Strengthen
      	local "last" from rtx to rtx_insn *.
      	* config/mips/mips-protos.h (mips_load_store_insns): Likewise for
      	second param.
      	(mips_store_data_bypass_p): Likewise for both params.
      	* config/mips/mips.c (mips_load_store_insns): Likewise for second
      	param.
      	(mips_store_data_bypass_p): Likewise for both params.
      	(mips_orphaned_high_part_p): Likewise for param "insn".
      	* config/mn10300/mn10300.c (extract_bundle): Likewise.
      	(mn10300_bundle_liw): Likewise for locals "r", "insn1", "insn2".
      	Introduce local rtx "insn2_pat".
      	* config/rl78/rl78.c (move_elim_pass): Likewise for locals "insn",
      	"ninsn".
      	(rl78_remove_unused_sets): Likewise for locals "insn", "ninsn".
      	Introduce local rtx "set", using it in place of "insn" for the
      	result of single_set.  This appears to fix a bug, since the call
      	to find_regno_note on a SET does nothing.
      	* config/rs6000/rs6000.c (set_to_load_agen): Strengthen both
      	params from rtx to rtx_insn *.
      	(set_to_load_agen): Likewise.
      	* config/s390/s390.c (s390_label_align): Likewise for local
      	"prev_insn".  Introduce new rtx locals "set" and "src", using
      	them in place of "prev_insn" for the results of single_set
      	and SET_SRC respectively.
      	(s390_swap_cmp): Strengthen local "jump" from rtx to rtx_insn *.
      	Introduce new rtx local "set" using in place of "jump" for the
      	result of single_set.  Use SET_SRC (set) rather than plain
      	XEXP (set, 1).
      	* config/sh/sh.c (noncall_uses_reg): Strengthen param 2from
      	rtx to rtx_insn *.
      	(noncall_uses_reg): Likewise.
      	(reg_unused_after): Introduce local rtx_sequence * "seq" in region
      	guarded by GET_CODE check, using its methods for clarity, and to
      	enable strengthening local "this_insn" from rtx to rtx_insn *.
      	* config/sh/sh.md (define_expand "mulhisi3"): Strengthen local
      	"insn" from rtx to rtx_insn *.
      	(define_expand "umulhisi3"): Likewise.
      	(define_expand "smulsi3_highpart"): Likewise.
      	(define_expand "umulsi3_highpart"): Likewise.
      	* config/sparc/sparc.c (sparc_do_work_around_errata): Likewise for
      	local "after".  Replace GET_CODE check with a dyn_cast,
      	introducing new local rtx_sequence * "seq", using insn method for
      	typesafety.
      
      	* dwarf2cfi.c (dwarf2out_frame_debug): Strengthen param "insn"
      	from rtx to rtx_insn *.  Introduce local rtx "pat", using it in
      	place of "insn" once we're dealing with patterns rather than the
      	input insn.
      	(scan_insn_after): Strengthen param "insn" from rtx to rtx_insn *.
      	(scan_trace): Likewise for local "elt", updating lookups within
      	sequence to use insn method rather than element method.
      	* expr.c (find_args_size_adjust): Strengthen param "insn" from rtx
      	to rtx_insn *.
      	* gcse.c (gcse_emit_move_after): Likewise for local "new_rtx".
      	* ifcvt.c (noce_try_abs): Likewise for local "insn".
      	* ira.c (fix_reg_equiv_init): Add checked cast to rtx_insn * when
      	invoking single_set.
      	* lra-constraints.c (insn_rhs_dead_pseudo_p): Strengthen param
      	"insn" from rtx to rtx_insn *.
      	(skip_usage_debug_insns): Likewise for return type, adding a
      	checked cast.
      	(check_secondary_memory_needed_p): Likewise for local "insn".
      	(inherit_reload_reg): Likewise.
      	* modulo-sched.c (sms_schedule): Likewise for local "count_init".
      	* recog.c (peep2_attempt): Likewise for local "old_insn", adding
      	checked casts.
      	(store_data_bypass_p): Likewise for both params.
      	(if_test_bypass_p): Likewise.
      	* recog.h (store_data_bypass_p): Likewise for both params.
      	(if_test_bypass_p): Likewise.
      	* reload.c (find_equiv_reg): Likewise for local "where".
      	* reorg.c (delete_jump): Likewise for param "insn".
      	* rtlanal.c (single_set_2): Strenghen param "insn" from const_rtx
      	to const rtx_insn *.
      	* store-motion.c (replace_store_insn): Likewise for param "del".
      	(delete_store): Strengthen local "i" from rtx to rtx_insn_list *,
      	and use its methods for clarity, and to strengthen local "del"
      	from rtx to rtx_insn *.
      	(build_store_vectors): Use insn method of "st" when calling
      	replace_store_insn for typesafety and clarity.
      
      From-SVN: r215089
      David Malcolm committed
    • INSN_LOCATION takes an rtx_insn · a1950df3
      gcc/ChangeLog:
      2014-09-09  David Malcolm  <dmalcolm@redhat.com>
      
      	* rtl.h (INSN_LOCATION): Strengthen param from const_rtx to
      	const rtx_insn *, and from rtx to rtx_insn * for the other
      	overloaded variant.
      	(RTL_LOCATION): Add a checked cast to rtx_insn * when invoking
      	INSN_LOCATION, since we know INSN_P holds.
      	(insn_line): Strengthen param from const_rtx to const rtx_insn *.
      	(insn_file): Likewise.
      	(insn_scope): Likewise.
      	(insn_location): Likewise.
      
      	* config/mips/mips.c (mips16_gp_pseudo_reg): Strengthen local
      	"insn" from rtx to rtx_insn *, introducing a new local rtx "set"
      	for the result of gen_load_const_gp.
      	* config/rs6000/rs6000-protos.h (output_call): Strengthen first
      	param from rtx to rtx_insn *.
      	* config/rs6000/rs6000.c (output_call): Likewise.
      	* dwarf2out.c (dwarf2out_var_location): Likewise for local "prev",
      	introducing a checked cast to rtx_sequence * and use of the insn
      	method.
      	* emit-rtl.c (emit_copy_of_insn_after): Strengthen both params
      	from rtx to rtx_insn *.
      	(insn_scope): Strengthen param from const_rtx to const rtx_insn *.
      	(insn_line): Likewise.
      	(insn_file): Likewise.
      	(insn_location): Likewise.
      	* emit-rtl.h (emit_copy_of_insn_after): Strengthen both params
      	from rtx to rtx_insn *.
      	* print-rtl.c (print_rtx): Introduce local "in_insn" via a checked
      	cast, using it for calls to INSN_HAS_LOCATION and insn_location.
      	* recog.c (peep2_attempt): Introduce local rtx_insn * "peepinsn"
      	via a checked cast.
      	* reorg.c (relax_delay_slots): Strengthen locals named "after"
      	from rtx to rtx_insn *; use methods of "pat" for type-safety.
      
      From-SVN: r215084
      David Malcolm committed
    • Handcode gen_rtx_INSN · d6e1e8b8
      gcc/ChangeLog:
      2014-09-09  David Malcolm  <dmalcolm@redhat.com>
      
      	* combine.c (try_combine): Eliminate checked cast on result of
      	gen_rtx_INSN.
      	* emit-rtl.c (gen_rtx_INSN): New function, improving over the prior
      	autogenerated one by strengthening the return type and params 2 and 3
      	from rtx to rtx_insn *, and by naming the params.
      	* gengenrtl.c (special_rtx): Add INSN to those that are
      	special-cased.
      	* rtl.h (gen_rtx_INSN): New prototype.
      
      From-SVN: r215083
      David Malcolm committed
  20. 05 Sep, 2014 1 commit
    • Use rtx_insn for various jump-handling functions and predicates · 68a1a6c0
      gcc/ChangeLog:
      2014-09-05  David Malcolm  <dmalcolm@redhat.com>
      
      	* config/arc/arc.c (arc_print_operand): Use insn method of
      	final_sequence for type-safety.
      	* config/bfin/bfin.c (bfin_hardware_loop): Strengthen param
      	"insn" from rtx to rtx_insn *.
      	* config/frv/frv.c (frv_print_operand_jump_hint): Likewise.
      	* config/mn10300/mn10300.c (mn10300_scan_for_setlb_lcc):
      	Likewise for locals "branch", "label".
      	* config/h8300/h8300.c (same_cmp_preceding_p): Likewise for
      	locals "i1", "i2".  Use NULL rather than NULL_RTX in comparisons.
      	(same_cmp_following_p): Likewise for locals "i2", "i3".
      	* config/sh/sh_optimize_sett_clrt.cc
      	(sh_optimize_sett_clrt::sh_cbranch_ccreg_value): Likewise for
      	param "cbranch_insn".
      	* function.c (convert_jumps_to_returns): Likewis for local "jump".
      	* ifcvt.c (cond_exec_get_condition): Likewise for param "jump".
      	* jump.c (simplejump_p): Strengthen param "insn" from const_rtx to
      	const rtx_insn *.
      	(condjump_p): Likewise.
      	(condjump_in_parallel_p): Likewise.
      	(pc_set): Likewise.
      	(any_uncondjump_p): Likewise.
      	(any_condjump_p): Likewise.
      	(condjump_label): Likewise.
      	(returnjump_p): Strengthen param "insn" from rtx to
      	const rtx_insn *.
      	(onlyjump_p): Strengthen param "insn" from const_rtx to
      	const rtx_insn *.
      	(jump_to_label_p): Likewise.
      	(invert_jump_1): Strengthen param "jump" from rtx to rtx_insn *.
      	(invert_jump): Likewise.
      	* reorg.c (simplejump_or_return_p): Add checked cast when calling
      	simplejump_p.
      	(get_jump_flags): Strengthen param "insn" from rtx to
      	const rtx_insn *.
      	(get_branch_condition): Likewise.
      	(condition_dominates_p): Likewise.
      	(make_return_insns): Move declaration of local "pat" earlier, to
      	after we've handled NONJUMP_INSN_P and non-sequences, using its
      	methods to simplify the code and for type-safety.
      	* rtl.h (find_constant_src): Strengthen param from const_rtx to
      	const rtx_insn *.
      	(jump_to_label_p): Strengthen param from rtx to const rtx_insn *.
      	(condjump_p): Strengthen param from const_rtx to
      	const rtx_insn *.
      	(any_condjump_p): Likewise.
      	(any_uncondjump_p): Likewise.
      	(pc_set): Likewise.
      	(condjump_label): Likewise.
      	(simplejump_p): Likewise.
      	(returnjump_p): Likewise.
      	(onlyjump_p): Likewise.
      	(invert_jump_1): Strengthen param 1 from rtx to rtx_insn *.
      	(invert_jump): Likewise.
      	(condjump_in_parallel_p): Strengthen param from const_rtx to
      	const rtx_insn *.
      	* rtlanal.c (find_constant_src): Strengthen param from const_rtx
      	to const rtx_insn *.
      	* sel-sched-ir.c (fallthru_bb_of_jump): Strengthen param from rtx
      	to const rtx_insn *.
      	* sel-sched-ir.h (fallthru_bb_of_jump): Likewise.
      
      From-SVN: r214970
      David Malcolm committed