1. 25 Jul, 2015 1 commit
  2. 23 Jul, 2015 1 commit
    • [PR64164] Drop copyrename, use coalescible partition as base when optimizing. · 7eb9f42e
      for  gcc/ChangeLog
      
      	PR rtl-optimization/64164
      	* Makefile.in (OBJS): Drop tree-ssa-copyrename.o.
      	* tree-ssa-copyrename.c: Removed.
      	* opts.c (default_options_table): Drop -ftree-copyrename.  Add
      	-ftree-coalesce-vars.
      	* passes.def: Drop all occurrences of pass_rename_ssa_copies.
      	* common.opt (ftree-copyrename): Ignore.
      	(ftree-coalesce-inlined-vars): Likewise.
      	* doc/invoke.texi: Remove the ignored options above.
      	* gimple-expr.h (gimple_can_coalesce_p): Move declaration
      	* tree-ssa-coalesce.h: ... here.
      	* tree-ssa-uncprop.c: Include tree-ssa-coalesce.h and other
      	headers required by it.
      	* gimple-expr.c (gimple_can_coalesce_p): Allow coalescing
      	across variables when flag_tree_coalesce_vars.  Check register
      	use and promoted modes to allow coalescing.  Moved to
      	tree-ssa-coalesce.c.
      	* tree-ssa-live.c (struct tree_int_map_hasher): Move along
      	with its member functions to tree-ssa-coalesce.c.
      	(var_map_base_init): Likewise.  Renamed to
      	compute_samebase_partition_bases.
      	(partition_view_normal): Drop want_bases parameter.
      	(partition_view_bitmap): Likewise.
      	* tree-ssa-live.h: Adjust declarations.
      	* tree-ssa-coalesce.c: Include explow.h.
      	(build_ssa_conflict_graph): Process PARM_ and RESULT_DECLs's
      	default defs at the entry point.
      	(dump_part_var_map): New.
      	(compute_optimized_partition_bases): New, called by...
      	(coalesce_ssa_name): ... when flag_tree_coalesce_vars, instead
      	of compute_samebase_partition_bases.  Adjust.
      	* alias.c (nonoverlapping_memrefs_p): Disregard gimple-regs.
      	* cfgexpand.c (leader_merge): New.
      	(get_rtl_for_parm_ssa_default_def): New.
      	(set_rtl): Merge exprs and attrs, even for MEMs and non-SSA
      	vars.  Update DECL_RTL for PARM_DECLs and RESULT_DECLs too.
      	(expand_one_stack_var_at): Handle anonymous SSA_NAMEs.  Drop
      	redundant MEM attr setting.
      	(expand_one_stack_var_1): Handle anonymous SSA_NAMEs.  Renamed
      	from...
      	(expand_one_stack_var): ... this.  New wrapper to check and
      	skip already expanded SSA partitions.
      	(record_alignment_for_reg_var): New, factored out of...
      	(expand_one_var): ... this.
      	(expand_one_ssa_partition): New.
      	(adjust_one_expanded_partition_var): New.
      	(expand_one_register_var): Check and skip already expanded SSA
      	partitions.
      	(expand_used_vars): Don't create DECLs for anonymous SSA
      	names.  Expand all SSA partitions, then adjust all SSA names.
      	(pass::execute): Replace the loops that set
      	SA.partition_to_pseudo from partition leaders and cleared
      	DECL_RTL for multi-location variables, and that which used to
      	rename vars and set attrs, with one that clears DECL_RTL and
      	checks that PARMs and RESULTs default_defs match DECL_RTL.
      	* cfgexpand.h (get_rtl_for_parm_ssa_default_def): Declare.
      	* emit-rtl.c (set_reg_attrs_for_parm): Handle NULL decl.
      	* explow.c (promote_ssa_mode): New.
      	* explow.h (promote_ssa_mode): Declare.
      	* expr.c (expand_expr_real_1): Handle anonymous SSA_NAMEs.
      	* function.c: Include cfgexpand.h.
      	(use_register_for_decl): Handle SSA_NAMEs, anonymous or not.
      	(use_register_for_parm_decl): Wrapper for the above to
      	special-case the result_ptr.
      	(rtl_for_parm): Ditto for get_rtl_for_parm_ssa_default_def.
      	(split_complex_args): Take assign_parm_data_all argument.
      	Pass it to rtl_for_parm.  Set up rtl and context for split
      	args.
      	(assign_parms_augmented_arg_list): Adjust.
      	(maybe_reset_rtl_for_parm): Reset DECL_RTL of parms with
      	multiple locations.  Recognize split complex args.
      	(assign_parm_adjust_stack_rtl): Add all and parm arguments,
      	for rtl_for_parm.  For SSA-assigned parms, zero stack_parm.
      	(assign_parm_setup_block): Prefer SSA-assigned location.
      	(assign_parm_setup_reg): Likewise.  Use entry_parm for equiv
      	if stack_parm is NULL.
      	(assign_parm_setup_stack): Prefer SSA-assigned location.
      	(assign_parms): Maybe reset DECL_RTL of params.  Adjust stack
      	rtl before testing for pointer bounds.  Special-case result_ptr.
      	(expand_function_start): Maybe reset DECL_RTL of result.
      	Prefer SSA-assigned location for result and static chain.
      	Factor out DECL_RESULT and SET_DECL_RTL.
      	* tree-outof-ssa.c (insert_value_copy_on_edge): Handle
      	anonymous SSA names.  Use promote_ssa_mode.
      	(get_temp_reg): Likewise.
      	(remove_ssa_form): Adjust.
      	* stor-layout.c (layout_decl): Don't set mem attributes of
      	non-MEMs.
      	* var-tracking.c (dataflow_set_clear_at_call): Take call_insn
      	and get its reg_usage for reg invalidation.
      	(compute_bb_dataflow): Pass it insn.
      	(emit_notes_in_bb): Likewise.
      
      for  gcc/testsuite/ChangeLog
      
      	* gcc.dg/guality/pr54200.c: Add -fno-tree-coalesce-vars.
      	* gcc.dg/ssp-1.c: Make counter a register.
      	* gcc.dg/ssp-2.c: Likewise.
      	* gcc.dg/torture/parm-coalesce.c: New.
      
      From-SVN: r226113
      Alexandre Oliva committed
  3. 15 Jul, 2015 1 commit
    • opth-gen.awk: Check for UNKNOWN_LOCATION rather than GCC_TM_H, don't include input.h. · 903f5c23
      2015-07-15  Andrew MacLeod  <amacleod@redhat.com>
      
      	* opth-gen.awk: Check for UNKNOWN_LOCATION rather than GCC_TM_H, don't
      	include input.h.
      	* opts.c: Remove multiline #include comment.
      
      
      2015-07-15  Andrew MacLeod  <amacleod@redhat.com>
      
      	* java/expr.c: Remove multiline #include comment.
      
      
      2015-07-15  Andrew MacLeod  <amacleod@redhat.com>
      
      	* fortran/trans-types.c: Remove multiline #include comment.
      
      
      2015-07-15  Andrew MacLeod  <amacleod@redhat.com>
      
      	* c-family/c-opts.c: Remove multiline #include comment.
      
      From-SVN: r225846
      Andrew MacLeod committed
  4. 10 Jun, 2015 1 commit
  5. 09 Jun, 2015 1 commit
    • [PR64164] Drop copyrename, use coalescible partition as base when optimizing. · 7b337d20
      for  gcc/ChangeLog
      
      	PR rtl-optimization/64164
      	* Makefile.in (OBJS): Drop tree-ssa-copyrename.o.
      	* tree-ssa-copyrename.c: Removed.
      	* opts.c (default_options_table): Drop -ftree-copyrename.  Add
      	-ftree-coalesce-vars.
      	* passes.def: Drop all occurrences of pass_rename_ssa_copies.
      	* common.opt (ftree-copyrename): Ignore.
      	(ftree-coalesce-inlined-vars): Likewise.
      	* doc/invoke.texi: Remove the ignored options above.
      	* gimple-expr.h (gimple_can_coalesce_p): Move declaration
      	* tree-ssa-coalesce.h: ... here.
      	* tree-ssa-uncprop.c: Include tree-ssa-coalesce.h and other
      	headers required by it.
      	* gimple-expr.c (gimple_can_coalesce_p): Allow coalescing
      	across variables when flag_tree_coalesce_vars.  Check register
      	use and promoted modes to allow coalescing.  Moved to
      	tree-ssa-coalesce.c.
      	* tree-ssa-live.c (struct tree_int_map_hasher): Move along
      	with its member functions to tree-ssa-coalesce.c.
      	(var_map_base_init): Likewise.  Renamed to
      	compute_samebase_partition_bases.
      	(partition_view_normal): Drop want_bases parameter.
      	(partition_view_bitmap): Likewise.
      	* tree-ssa-live.h: Adjust declarations.
      	* tree-ssa-coalesce.c: Include explow.h.
      	(build_ssa_conflict_graph): Process PARM_ and RESULT_DECLs's
      	default defs at the entry point.
      	(dump_part_var_map): New.
      	(compute_optimized_partition_bases): New, called by...
      	(coalesce_ssa_name): ... when flag_tree_coalesce_vars, instead
      	of compute_samebase_partition_bases.  Adjust.
      	* alias.c (nonoverlapping_memrefs_p): Disregard gimple-regs.
      	* cfgexpand.c (leader_merge): New.
      	(get_rtl_for_parm_ssa_default_def): New.
      	(set_rtl): Merge exprs and attrs, even for MEMs and non-SSA
      	vars.  Update DECL_RTL for PARM_DECLs and RESULT_DECLs too.
      	(expand_one_stack_var_at): Handle anonymous SSA_NAMEs.  Drop
      	redundant MEM attr setting.
      	(expand_one_stack_var_1): Handle anonymous SSA_NAMEs.  Renamed
      	from...
      	(expand_one_stack_var): ... this.  New wrapper to check and
      	skip already expanded SSA partitions.
      	(record_alignment_for_reg_var): New, factored out of...
      	(expand_one_var): ... this.
      	(expand_one_ssa_partition): New.
      	(adjust_one_expanded_partition_var): New.
      	(expand_one_register_var): Check and skip already expanded SSA
      	partitions.
      	(expand_used_vars): Don't create DECLs for anonymous SSA
      	names.  Expand all SSA partitions, then adjust all SSA names.
      	(pass::execute): Replace the loops that set
      	SA.partition_to_pseudo from partition leaders and cleared
      	DECL_RTL for multi-location variables, and that which used to
      	rename vars and set attrs, with one that clears DECL_RTL and
      	checks that PARMs and RESULTs default_defs match DECL_RTL.
      	* cfgexpand.h (get_rtl_for_parm_ssa_default_def): Declare.
      	* emit-rtl.c (set_reg_attrs_for_parm): Handle NULL decl.
      	* explow.c (promote_ssa_mode): New.
      	* explow.h (promote_ssa_mode): Declare.
      	* expr.c (expand_expr_real_1): Handle anonymous SSA_NAMEs.
      	* function.c: Include cfgexpand.h.
      	(use_register_for_decl): Handle SSA_NAMEs, anonymous or not.
      	(use_register_for_parm_decl): Wrapper for the above to
      	special-case the result_ptr.
      	(rtl_for_parm): Ditto for get_rtl_for_parm_ssa_default_def.
      	(maybe_reset_rtl_for_parm): Reset DECL_RTL of parms with
      	multiple locations.
      	(assign_parm_adjust_stack_rtl): Add all and parm arguments,
      	for rtl_for_parm.  For SSA-assigned parms, zero stack_parm.
      	(assign_parm_setup_block): Prefer SSA-assigned location.
      	(assign_parm_setup_reg): Likewise.  Use entry_parm for equiv
      	if stack_parm is NULL.
      	(assign_parm_setup_stack): Prefer SSA-assigned location.
      	(assign_parms): Maybe reset DECL_RTL of params.  Adjust stack
      	rtl before testing for pointer bounds.  Special-case result_ptr.
      	(expand_function_start): Maybe reset DECL_RTL of result.
      	Prefer SSA-assigned location for result and static chain.
      	Factor out DECL_RESULT and SET_DECL_RTL.
      	* tree-outof-ssa.c (insert_value_copy_on_edge): Handle
      	anonymous SSA names.  Use promote_ssa_mode.
      	(get_temp_reg): Likewise.
      	(remove_ssa_form): Adjust.
      	* var-tracking.c (dataflow_set_clear_at_call): Take call_insn
      	and get its reg_usage for reg invalidation.
      	(compute_bb_dataflow): Pass it insn.
      	(emit_notes_in_bb): Likewise.
      	* tree-ssa-loop-niter.c (loop_exits_before_overflow): Don't
      	fail assert on conversion between unsigned types.
      
      for  gcc/testsuite/ChangeLog
      
      	* gcc.dg/guality/pr54200.c: Add -fno-tree-coalesce-vars.
      	* gcc.dg/ssp-1.c: Make counter a register.
      	* gcc.dg/ssp-2.c: Likewise.
      	* gcc.dg/torture/parm-coalesce.c: New.
      
      From-SVN: r224262
      Alexandre Oliva committed
  6. 28 May, 2015 1 commit
    • Add --enable-default-pie option to GCC configure · 428b3812
      Add --enable-default-pie option to configure GCC to generate PIE by
      default.
      
      gcc/
      
      	* Makefile.in (COMPILER): Add @NO_PIE_CFLAGS@.
      	(BUILD_CFLAGS): Likewise.
      	(BUILD_CXXFLAGS): Likewise.
      	(LINKER): Add @NO_PIE_FLAG@.
      	(BUILD_LDFLAGS): Likewise.
      	(libgcc.mvars): Set NO_PIE_CFLAGS to -fno-PIE for
      	--enable-default-pie.
      	* common.opt (fPIE): Initialize to -1.
      	(fpie): Likewise.
      	(no-pie): New option.
      	(pie): Replace "Negative(shared)" with "Negative(no-pie)".
      	* configure.ac: Add --enable-default-pie.
      	(NO_PIE_CFLAGS): New.  Check if -fno-PIE works.  AC_SUBST.
      	(NO_PIE_FLAG): New.  Check if -no-pie works.  AC_SUBST.
      	* defaults.h (DEFAULT_FLAG_PIE): New.  Default PIE to -fPIE.
      	* gcc.c (NO_PIE_SPEC): New.
      	(PIE_SPEC): Likewise.
      	(NO_FPIE1_SPEC): Likewise.
      	(FPIE1_SPEC): Likewise.
      	(NO_FPIE2_SPEC): Likewise.
      	(FPIE2_SPEC): Likewise.
      	(NO_FPIE2_SPEC): Likewise.
      	(FPIE_SPEC): Likewise.
      	(NO_FPIE_SPEC): Likewise.
      	(NO_FPIC1_SPEC): Likewise.
      	(FPIC1_SPEC): Likewise.
      	(NO_FPIC2_SPEC): Likewise.
      	(FPIC2_SPEC): Likewise.
      	(NO_FPIC2_SPEC): Likewise.
      	(FPIC_SPEC): Likewise.
      	(NO_FPIC_SPEC): Likewise.
      	(NO_FPIE1_AND_FPIC1_SPEC): Likewise.
      	(FPIE1_OR_FPIC1_SPEC): Likewise.
      	(NO_FPIE2_AND_FPIC2_SPEC): Likewise.
      	(FPIE2_OR_FPIC2_SPEC): Likewise.
      	(NO_FPIE_AND_FPIC_SPEC): Likewise.
      	(FPIE_OR_FPIC_SPEC): Likewise.
      	(LD_PIE_SPEC): Likewise.
      	(LINK_PIE_SPEC): Handle -no-pie.  Use PIE_SPEC and LD_PIE_SPEC.
      	* opts.c (finish_options): Update opts->x_flag_pie if it is -1.
      	* config/darwin.h (PIE_SPEC): Renamed to ...
      	(DARWIN_PIE_SPEC): This.
      	(LINK_SPEC): Replace PIE_SPEC with DARWIN_PIE_SPEC.
      	* config/darwin9.h (PIE_SPEC): Renamed to ...
      	(DARWIN_PIE_SPEC): This.
      	* config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Use
      	PIE_SPEC and NO_PIE_SPEC if HAVE_LD_PIE is defined.
      	* config/openbsd.h (ASM_SPEC): Use FPIE1_OR_FPIC1_SPEC and
      	FPIE2_OR_FPIC2_SPEC.
      	* config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
      	* config/m68k/openbsd.h (ASM_SPEC): Likewise.
      	* gcc/config/sol2.h (ASM_PIC_SPEC): Likewise.
      	* config/arm/freebsd.h (SUBTARGET_EXTRA_ASM_SPEC): Likewise.
      	* config/arm/netbsd-elf.h (SUBTARGET_EXTRA_ASM_SPEC): Likewise.
      	* config/arm/semi.h (SUBTARGET_EXTRA_ASM_SPEC): Likewise.
      	* config/cris/linux.h (CRIS_ASM_SUBTARGET_SPEC): Likewise.
      	* config/m32r/m32r.h (ASM_SPEC): Likewise.
      	* config/m68k/uclinux.h (DRIVER_SELF_SPECS): Likewise.
      	* config/rs6000/linux64.h (ASM_SPEC32): Likewise.
      	* config/rs6000/sysv4.h (ASM_SPEC): Likewise.
      	* config/sparc/freebsd.h (ASM_SPEC): Likewise.
      	* config/sparc/linux.h (ASM_SPEC): Likewise.
      	* config/sparc/linux64.h (ASM_SPEC): Likewise.
      	* config/sparc/netbsd-elf.h (ASM_SPEC): Likewise.
      	* config/sparc/openbsd64.h (ASM_SPEC): Likewise.
      	* config/sparc/sp-elf.h (ASM_SPEC): Likewise.
      	* config/sparc/sp64-elf.h (ASM_SPEC): Likewise.
      	* config/sparc/sparc.h (ASM_SPEC): Likewise.
      	* config/sparc/sysv4.h (ASM_SPEC): Likewise.
      	* config/sparc/vxworks.h (ASM_SPEC): Likewise.
      	* config/c6x/elf-common.h (ASM_SPEC): Use NO_FPIC2_SPEC,
      	FPIC2_SPEC, FPIC1_SPEC and FPIC2_SPEC.
      	* config/c6x/uclinux-elf.h (LINK_SPEC): Use FPIE_SPEC.
      	* config/frv/frv.h (DRIVER_SELF_SPECS): Use FPIC_SPEC,
      	NO_FPIC_SPEC and NO_FPIE1_AND_FPIC1_SPEC.
      	(ASM_SPEC): Use FPIE1_OR_FPIC1_SPEC and FPIE2_OR_FPIC2_SPEC.
      	* config/m68k/m68k.h (ASM_PCREL_SPEC): Use FPIC_SPEC and
      	NO_FPIC_SPEC.
      	* config/mips/gnu-user.h (NO_SHARED_SPECS): Use
      	NO_FPIE_AND_FPIC_SPEC.
      	* config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Use FPIC_SPEC.
      	* config/rs6000/freebsd64.h (ASM_SPEC32): Likewise.
      	* config/rs6000/vxworks.h (ASM_SPEC): Likewise.
      	* config/vax/linux.h (ASM_SPEC): Likewise.
      	* doc/install.texi: Document --enable-default-pie.
      	* doc/invoke.texi: Document -no-pie.
      	* config.in: Regenerated.
      	* configure: Likewise.
      
      gcc/ada/
      
      	* gcc-interface/Makefile.in (TOOLS_LIBS): Add @NO_PIE_FLAG@.
      
      libgcc/
      
      	* Makefile.in (CRTSTUFF_CFLAGS): Add $(NO_PIE_CFLAGS).
      
      From-SVN: r223796
      H.J. Lu committed
  7. 18 May, 2015 1 commit
  8. 07 May, 2015 1 commit
    • c-ubsan.c (ubsan_instrument_bounds): Don't skip instrumenting flexible member… · e0f0d3b9
      c-ubsan.c (ubsan_instrument_bounds): Don't skip instrumenting flexible member array-like members if...
      
      	* c-ubsan.c (ubsan_instrument_bounds): Don't skip instrumenting
      	flexible member array-like members if SANITIZE_BOUNDS_STRICT.
      
      	* doc/invoke.texi: Document -fsanitize=bounds-strict.
      	* flag-types.h (enum sanitize_code): Add SANITIZE_BOUNDS_STRICT, or it
      	into SANITIZE_NONDEFAULT.
      	* opts.c (common_handle_option): Handle -fsanitize=bounds-strict.
      
      	* c-c++-common/ubsan/bounds-10.c: New test.
      
      From-SVN: r222871
      Marek Polacek committed
  9. 30 Apr, 2015 1 commit
    • Fix spurious semicolons · 6f3d1a5e
      gcc/ChangeLog:
      	* builtins.c (fold_builtin_1): Remove spurious second
      	semicolon.
      	* cgraph.h (symtab_node::get_availability): Likewise.
      	* opts.c (common_handle_option): Remove spurious second semicolon.
      	* tree-ssa-loop-ivopts.c (extract_cond_operands): Likewise.
      	* tree-ssa-loop-niter.c (derive_constant_upper_bound_ops): Likewise.
      
      gcc/cp/ChangeLog:
      	* cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove spurious
      	trailing semicolon.
      
      gcc/fortran/ChangeLog:
      	* options.c (gfc_init_options): Remove spurious second
      	semicolon.
      	* trans-stmt.c (gfc_trans_allocate): Likewise.
      
      From-SVN: r222658
      David Malcolm committed
  10. 17 Feb, 2015 1 commit
    • Add -fipa-cp-alignment · 3c99176a
      This patch adds -fipa-cp-alignment to provide a way to enable/disable
      alignment discovery and propagation in IPA-CP.
      
      gcc/
      
      	* common.opt (fipa-cp-alignment): New.
      	* ipa-cp.c (ipcp_store_alignment_results): Check
      	flag_ipa_cp_alignment.
      	* opts.c (default_options_table): Enable -fipa-cp-alignment for
      	-O2.
      	(enable_fdo_optimizations): Set x_flag_ipa_cp_alignment.
      	* doc/invoke.texi: Document -fipa-cp-alignment.
      
      gcc/testsuite/
      
      	* gcc.dg/ipa/propalign-3.c: New test.
      
      From-SVN: r220773
      H.J. Lu committed
  11. 12 Feb, 2015 1 commit
  12. 30 Jan, 2015 1 commit
    • Always pass explicit location to fatal_error. · 40fecdd6
      The patch <https://gcc.gnu.org/ml/gcc-patches/2014-11/msg00698.html>
      adding an overload for fatal_error that passes an explicit location
      broke gcc.pot regeneration because xgettext cannot handle function
      overloads with the diagnostic string argument in different positions.
      
      As the desired direction is for all diagnostics to have explicit
      locations, this patch addresses the regression by removing the version
      of fatal_error that does not pass a location, passing explicit
      input_location everywhere (in the hope that those will incrementally
      be changed to other locations, much as with the addition of a location
      argument to pedwarn some time ago - a lot of cases aren't meaningfully
      associated with a source file so UNKNOWN_LOCATION may be better).
      
      Note that this patch does not attempt to fix any existing issues with
      these diagnostics (such as wrongly starting with capital letters or
      ending with '.' or '\n'); it just adds the input_location argument.
      
      Bootstrapped with no regressions for x86_64-unknown-linux-gnu (Go
      excluded).
      
      gcc:
      	* diagnostic.c (fatal_error (const char *, ...)): Remove function.
      	* diagnostic-core.h (fatal_error (const char *, ...)): Remove
      	prototype.
      	* toplev.h (init_asm_output): Update comment on use of
      	UNKNOWN_LOCATION with fatal_error.
      	* cgraph.c, collect-utils.c, collect2.c, config/arc/arc.c,
      	config/arc/arc.md, config/avr/avr.c, config/c6x/c6x.h,
      	config/darwin.c, config/host-darwin.c, config/i386/host-cygwin.c,
      	config/i386/intelmic-mkoffload.c, config/nios2/nios2.c,
      	config/nvptx/mkoffload.c, config/nvptx/nvptx.h,
      	config/rs6000/host-darwin.c, config/rs6000/rs6000.c,
      	config/s390/s390.c, gcc.c, gcov-io.h, gcov-tool.c, ggc-common.c,
      	ggc-page.c, graph.c, ipa-inline-analysis.c, ipa-reference.c,
      	lto-cgraph.c, lto-section-in.c, lto-streamer-in.c, lto-streamer.c,
      	lto-wrapper.c, objc/objc-act.c, opts.c, passes.c, plugin.c,
      	tlink.c, toplev.c, tree-streamer-in.c, varpool.c: All callers of
      	fatal_error changed to pass input_location as first argument.
      
      gcc/c-family:
      	* c-opts.c, c-pch.c, cppspec.c: All callers of fatal_error changed
      	to pass input_location as first argument.
      
      gcc/cp:
      	* class.c, except.c, parser.c, pt.c: All callers of fatal_error
      	changed to pass input_location as first argument.
      
      gcc/fortran:
      	* f95-lang.c, gfortranspec.c, trans-const.c, trans-expr.c: All
      	callers of fatal_error changed to pass input_location as first
      	argument.
      
      gcc/java:
      	* class.c, expr.c, jcf-parse.c, jvspec.c: All callers of
      	fatal_error changed to pass input_location as first argument.
      
      gcc/lto:
      	* lto-object.c, lto-symtab.c, lto.c: All callers of fatal_error
      	changed to pass input_location as first argument.
      
      libcc1:
      	* plugin.cc: All callers of fatal_error changed to pass
      	input_location as first argument.
      
      From-SVN: r220293
      Joseph Myers committed
  13. 15 Jan, 2015 1 commit
    • flag-types.h (enum sanitize_code): Add SANITIZE_VPTR, include SANITIZE_VPTR in SANITIZE_UNDEFINED. · 35228ac7
      	* flag-types.h (enum sanitize_code): Add SANITIZE_VPTR,
      	include SANITIZE_VPTR in SANITIZE_UNDEFINED.
      	* opts.c (common_handle_option): Add -fsanitize=vptr.
      	* sanitizer.def (BUILT_IN_UBSAN_HANDLE_DYNAMIC_TYPE_CACHE_MISS,
      	BUILT_IN_UBSAN_HANDLE_DYNAMIC_TYPE_CACHE_MISS_ABORT): New.
      	* ubsan.h (enum ubsan_null_ckind): Add UBSAN_DOWNCAST_POINTER,
      	UBSAN_DOWNCAST_REFERENCE, UBSAN_UPCAST and UBSAN_CAST_TO_VBASE.
      	(ubsan_expand_vptr_ifn): New prototype.
      	* internal-fn.c (expand_ANNOTATE, expand_GOMP_SIMD_LANE,
      	expand_GOMP_SIMD_VF, expand_GOMP_SIMD_LAST_LANE, expand_UBSAN_NULL,
      	expand_UBSAN_BOUNDS, expand_UBSAN_OBJECT_SIZE, expand_ASAN_CHECK,
      	expand_LOOP_VECTORIZED): Make argument nameless, remove
      	ATTRIBUTE_UNUSED.
      	(expand_UBSAN_VPTR): New function.
      	* internal-fn.def (UBSAN_NULL, ASAN_CHECK): Use R instead of W
      	in fn spec.
      	(UBSAN_VPTR): New internal function.
      	* sanopt.c (tree_map_traits): Renamed to ...
      	(sanopt_tree_map_traits): ... this.
      	(sanopt_tree_triplet, sanopt_tree_triplet_map_traits): New classes.
      	(sanopt_ctx): Adjust asan_check_map type for tree_map_traits
      	to sanopt_tree_map_traits renaming.  Add vptr_check_map field.
      	(maybe_optimize_ubsan_vptr_ifn): New function.
      	(sanopt_optimize_walker): Handle IFN_UBSAN_VPTR.
      	(pass_sanopt::execute): Likewise.  Call sanopt_optimize even for
      	-fsanitize=vptr.
      	* tree-ssa-alias.c (call_may_clobber_ref_p_1): Handle certain
      	internal calls like pure functions for aliasing, even when they
      	have other side-effects that prevent making them ECF_PURE.
      	* ubsan.c (ubsan_vptr_type_cache_decl): New variable.
      	(ubsan_expand_vptr_ifn): New function.
      cp/
      	* cp-gimplify.c (cp_genericize_r): Call
      	cp_ubsan_maybe_instrument_member_call for member calls.
      	(cp_ubsan_check_member_access_r): New function.
      	(cp_genericize_tree): Call cp_ubsan_instrument_member_accesses.
      	* cp-tree.h (cp_ubsan_maybe_instrument_member_call,
      	cp_ubsan_instrument_member_accesses,
      	cp_ubsan_maybe_instrument_downcast,
      	cp_ubsan_maybe_instrument_cast_to_vbase): New prototypes.
      	* cp-ubsan.c: New file.
      	* Make-lang.in (CXX_AND_OBJCXX_OBJS): Add cp/cp-ubsan.o.
      	* constexpr.c (cxx_eval_call_expression): Return void_node
      	for IFN_UBSAN_VPTR.
      	(potential_constant_expression_1): Return true for
      	UBSAN_NULL, UBSAN_BOUNDS and UBSAN_VPTR internal calls.
      	* typeck.c (build_class_member_access_expr): Provide locus
      	for COMPONENT_REFs.
      	(build_static_cast_1): Instrument downcasts.
      	* class.c (build_base_path): For -fsanitize=vptr and !fixed_type_p
      	add ubsan instrumentation for virtual_access.
      	* call.c: Include internal-fn.h.
      	(set_flags_from_callee): Handle internal calls.
      gcc/testsuite/
      	* g++.dg/ubsan/vptr-1.C: New test.
      	* g++.dg/ubsan/vptr-2.C: New test.
      	* g++.dg/ubsan/vptr-3.C: New test.
      	* g++.dg/ubsan/vptr-4.C: New test.
      	* g++.dg/ubsan/vptr-5.C: New test.
      	* g++.dg/ubsan/vptr-6.C: New test.
      	* g++.dg/ubsan/vptr-7.C: New test.
      	* g++.dg/ubsan/vptr-8.C: New test.
      	* g++.dg/ubsan/vptr-9.C: New test.
      
      From-SVN: r219695
      Jakub Jelinek committed
  14. 06 Jan, 2015 1 commit
    • opts.c (common_handle_option): Add support for -fno-sanitize=all and -f{,no-}sanitize-recover=all. · fb153d02
      	* opts.c (common_handle_option): Add support for
      	-fno-sanitize=all and -f{,no-}sanitize-recover=all.
      	* doc/invoke.texi: Document -fno-sanitize=all,
      	-f{,no-}sanitize-recover=all.  Document that
      	-fsanitize=float-cast-overflow is not enabled
      	by -fsanitize=undefined.  Fix up documentation
      	of -f{,no-}sanitize-recover.
      
      	* c-c++-common/asan/sanitize-all-1.c: New test.
      	* c-c++-common/ubsan/sanitize-all-1.c: New test.
      	* c-c++-common/ubsan/sanitize-all-2.c: New test.
      	* c-c++-common/ubsan/sanitize-all-3.c: New test.
      	* c-c++-common/ubsan/sanitize-all-4.c: New test.
      
      From-SVN: r219241
      Jakub Jelinek committed
  15. 05 Jan, 2015 1 commit
  16. 11 Dec, 2014 1 commit
    • diagnostic.c (get_terminal_width): Renamed from · c9db45aa
      2014-12-11  Tobias Burnus  <burnus@net-b.de>
                  Manuel López-Ibáñez  <manu@gcc.gnu.org>
      
      gcc/
              * diagnostic.c (get_terminal_width): Renamed from
              * getenv_columns,
              removed static, and additionally use ioctl to get width.
              (diagnostic_set_caret_max_width): Update call.
              * diagnostic.h (get_terminal_width): Add prototype.
              * opts.c (print_specific_help): Use it for x_help_columns.
              * doc/invoke.texi (fdiagnostics-show-caret): Document how the
              width is set.
      
      gcc/fortran/
              * error.c (gfc_get_terminal_width): Renamed from
              get_terminal_width and use same-named common function.
              (gfc_error_init_1): Update call.
      
      
      Co-Authored-By: Manuel López-Ibáñez <manu@gcc.gnu.org>
      
      From-SVN: r218619
      Tobias Burnus committed
  17. 04 Dec, 2014 1 commit
    • diagnostic.c (diagnostic_color_init): New. · 97aa8bb6
      gcc/ChangeLog:
      
      2014-12-04  Manuel López-Ibáñez  <manu@gcc.gnu.org>
      
      	* diagnostic.c (diagnostic_color_init): New.
      	* diagnostic.h: Declare.
      	* gcc.c (driver::global_initializations): Use it.
      	(driver_handle_option): Handle -fdiagnostics-color_.
      	* toplev.c: Do not include diagnostic-color.h.
      	(process_options): Do not initialize color diagnostics here.
      	* common.opt (fdiagnostics-color=): Add Driver.
      	* opts-global.c (init_options_once): Initialize color here.
      	* opts.c (common_handle_option): Use diagnostics_color_init.
      	* diagnostic-color.h: Fix comment.
      
      From-SVN: r218406
      Manuel López-Ibáñez committed
  18. 03 Dec, 2014 1 commit
    • Rename fuse-caller-save · 1e288103
      2014-12-03  Tom de Vries  <tom@codesourcery.com>
      
      	PR rtl-optimization/63957
      	* doc/invoke.texi: Replace -fuse-caller-save with -fipa-ra.
      	* final.c (rest_of_handle_final): Replace flag_use_caller_save with
      	flag_ipa_ra.
      	(get_call_reg_set_usage): Same.
      	* lra-assigns.c (lra_assign): Same.
      	* lra-constraints.c (need_for_call_save_p): Same.
      	* lra-lives.c (process_bb_lives): Same.
      	* lra.c (lra): Same.
      	* calls.c (expand_call): Same.
      	(emit_library_call_value_1): Same.
      	* config/arm/arm.c (arm_option_override): Same.
      	* opts.c (default_options_table): Replace OPT_fuse_caller_save with
      	OPT_fipa_ra.
      	* target.def (call_fusage_contains_non_callee_clobbers): Replace
      	fuse-caller-save with fipa-ra.
      	* doc/tm.texi (TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS): Same.
      	* common.opt: Same.
      
      	* gcc.dg/ira-shrinkwrap-prep-1.c: Replace -fno-use-caller-save with
      	-fno-ipa-ra.
      	* gcc.dg/ira-shrinkwrap-prep-2.c: Same.
      	* gcc.target/aarch64/aapcs64/aapcs64.exp: Same.
      	* gcc.dg/fuse-caller-save.c: Replace -fuse-caller-save with -fipa-ra.
      	* gcc.target/aarch64/fuse-caller-save.c: Same.
      	* gcc.target/arm/fuse-caller-save.c: Same.
      	* gcc.target/i386/fuse-caller-save-rec.c: Same.
      	* gcc.target/i386/fuse-caller-save-xmm-run.c: Same.
      	* gcc.target/i386/fuse-caller-save-xmm.c: Same.
      	* gcc.target/i386/fuse-caller-save.c: Same.
      	* gcc.target/mips/fuse-caller-save-micromips.c: Same.
      	* gcc.target/mips/fuse-caller-save-mips16.c: Same.
      	* gcc.target/mips/fuse-caller-save.c: Same.
      	* gcc.target/mips/mips.exp: Replace use-caller-save with ipa-ra in
      	-ffoo/-fno-foo options.
      
      From-SVN: r218305
      Tom de Vries committed
  19. 26 Nov, 2014 1 commit
    • PR debug/38757 continued. Handle C11, C++11 and C++14. · 5d45c9c0
      Add experimental (minimal) DWARFv5 support.
      
      This change depends on the new DWARFv5 constants mentioned in the
      following draft: http://dwarfstd.org/doc/dwarf5.20141029.pdf
      
      gcc/ChangeLog
      
      	* doc/invoke.texi (-gdwarf-@{version}): Mention experimental DWARFv5.
      	* opts.c (common_handle_option): Accept -gdwarf-5.
      	* dwarf2out.c (is_cxx): Add DW_LANG_C_plus_plus_11 and
      	DW_LANG_C_plus_plus_14.
      	(lower_bound_default): Likewise. Plus DW_LANG_C11.
      	(gen_compile_unit_die): Output DW_LANG_C_plus_plus_11,
      	DW_LANG_C_plus_plus_14 or DW_LANG_C11.
      	(output_compilation_unit_header): Output at most a DWARFv4 header.
      	(output_skeleton_debug_sections): Likewise.
      	(output_line_info): Likewise.
      	(output_aranges): Document header version number.
      
      gcc/testsuite/ChangeLog
      
      	* gcc.dg/debug/dwarf2/lang-c11.c: New test.
      	* gcc.dg/debug/dwarf2/lang-c11-d4-strict.c: Likewise.
      	* g++.dg/debug/dwarf2/lang-cpp11.C: Likewise.
      	* g++.dg/debug/dwarf2/lang-cpp14.C: Likewise.
      	* g++.dg/debug/dwarf2/lang-cpp98.C: Likewise.
      
      include/ChangeLog
      
      	* dwarf2.h: Add DW_LANG_C_plus_plus_11, DW_LANG_C11 and
      	DW_LANG_C_plus_plus_14.
      
      From-SVN: r218077
      Mark Wielaard committed
  20. 19 Nov, 2014 1 commit
  21. 18 Nov, 2014 1 commit
  22. 13 Nov, 2014 3 commits
    • [PATCH 6/7] OpenMP 4.0 offloading infrastructure: option handling. · c713ddc0
      gcc/
      	* common.opt (foffload, foffload-abi): New options.
      	* config/i386/i386.c (ix86_offload_options): New static function.
      	(TARGET_OFFLOAD_OPTIONS): Define.
      	* coretypes.h (enum offload_abi): New enum.
      	* doc/tm.texi: Regenerate.
      	* doc/tm.texi.in (TARGET_OFFLOAD_OPTIONS): Document.
      	* gcc.c (offload_targets): New static variable.
      	(handle_foffload_option): New static function.
      	(driver_handle_option): Handle OPT_foffload_.
      	(driver::maybe_putenv_OFFLOAD_TARGETS): Set OFFLOAD_TARGET_NAMES
      	according to offload_targets.
      	* hooks.c (hook_charptr_void_null): New hook.
      	* hooks.h (hook_charptr_void_null): Declare.
      	* lto-opts.c: Include lto-section-names.h.
      	(lto_write_options): Append options from target offload_options hook and
      	store them to offload_lto section.  Do not store target-specific,
      	driver and diagnostic options in offload_lto section.
      	* lto-wrapper.c (merge_and_complain): Handle OPT_foffload_ and
      	OPT_foffload_abi_.
      	(append_compiler_options, append_linker_options)
      	(append_offload_options): New static functions.
      	(compile_offload_image): Add new arguments with options.
      	Call append_compiler_options and append_offload_options.
      	(compile_images_for_offload_targets): Add new arguments with options.
      	(find_and_merge_options): New static function.
      	(run_gcc): Outline options handling into the new functions:
      	find_and_merge_options, append_compiler_options, append_linker_options.
      	* opts.c (common_handle_option): Don't handle OPT_foffload_.
      	Forbid OPT_foffload_abi_ for non-offload compiler.
      	* target.def (offload_options): New target hook.
      
      Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
      Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
      
      From-SVN: r217493
      Bernd Schmidt committed
    • common.opt (flra-remat): New. · d9cf932c
      2014-11-12  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* common.opt (flra-remat): New.
      	* opts.c (default_options_table): Add entry for flra_remat.
      	* timevar_def (TV_LRA_REMAT): New.
      	* doc/invoke.texi (-flra-remat): Add description of the new
      	option.
      	* doc/passes.texi (-flra-remat): Remove lra-equivs.c and
      	lra-saves.c.  Add lra-remat.c.
      	* Makefile.in (OBJS): Add lra-remat.o.
      	* lra-remat.c: New file.
      	* lra.c: Add info about the rematerialization pass in the top
      	comment.
      	(collect_non_operand_hard_regs, add_regs_to_insn_regno_info):
      	Process unallocatable regs too.
      	(lra_constraint_new_insn_uid_start): Remove.
      	(lra): Add code for calling rematerialization sub-pass.
      	* lra-int.h (lra_constraint_new_insn_uid_start): Remove.
      	(lra_constrain_insn, lra_remat): New prototypes.
      	(lra_eliminate_regs_1): Add parameter.
      	* lra-lives.c (make_hard_regno_born, make_hard_regno_dead):
      	Process unallocatable hard regs too.
      	(process_bb_lives): Ditto.
      	* lra-spills.c (remove_pseudos): Add argument to
      	lra_eliminate_regs_1 call.
      	* lra-eliminations.c (lra_eliminate_regs_1): Add parameter.  Use it
      	for sp offset calculation.
      	(lra_eliminate_regs): Add argument for lra_eliminate_regs_1 call.
      	(eliminate_regs_in_insn): Add parameter.  Use it for sp offset
      	calculation.
      	(process_insn_for_elimination): Add argument for
      	eliminate_regs_in_insn call.
      	* lra-constraints.c (get_equiv_with_elimination):  Add argument
      	for lra_eliminate_regs_1 call.
      	(process_addr_reg): Add parameter.  Use it.
      	(process_address_1): Ditto.  Add argument for process_addr_reg
      	call.
      	(process_address): Ditto.
      	(curr_insn_transform): Add parameter.  Use it.  Add argument for
      	process_address calls.
      	(lra_constrain_insn): New function.
      	(lra_constraints): Add argument for curr_insn_transform call.
      
      From-SVN: r217458
      Vladimir Makarov committed
    • opts-global.c (postpone_unknown_option_warning): Fix spelling. · 778e02fd
      2014-11-13  Manuel López-Ibáñez  <manu@gcc.gnu.org>
      
      	* opts-global.c (postpone_unknown_option_warning): Fix spelling.
      	(print_ignored_options): Fix quoting.
      	* opts.c (common_handle_option): Likewise.
      	(set_debug_level): Likewise.
      	* toplev.c (process_options): Likewise.
      
      From-SVN: r217457
      Manuel López-Ibáñez committed
  23. 28 Oct, 2014 2 commits
    • Enable -fsanitize-recover for KASan. · fed4de37
      2014-10-28  Yury Gribov  <y.gribov@samsung.com>
      
      gcc/
      	* asan.c (report_error_func): Add noabort path.
      	(check_func): Ditto.  Formatting.
      	(asan_expand_check_ifn): Handle noabort path.
      	* common.opt (flag_sanitize_recover): Add SANITIZE_KERNEL_ADDRESS
      	to default value.
      	* doc/invoke.texi (-fsanitize-recover=): Mention KASan.
      	* opts.c (finish_options): Reword comment.
      	* sanitizer.def: Add noabort ASan builtins.
      
      gcc/testsuite/
      	* c-c++-common/asan/kasan-recover-1.c: New test.
      	* c-c++-common/asan/kasan-recover-2.c: New test.
      	* c-c++-common/asan/instrument-with-calls-1.c: Get rid of -save-temps.
      	* c-c++-common/asan/instrument-with-calls-2.c: Likewise.
      	* c-c++-common/asan/instrument-with-calls-3.c: Likewise.
      	* c-c++-common/asan/kasan-recover-1.c: Likewise.
      	* c-c++-common/asan/kasan-recover-2.c: Likewise.
      	* c-c++-common/asan/no-asan-globals.c: Likewise.
      	* c-c++-common/asan/no-instrument-reads.c: Likewise.
      	* c-c++-common/asan/no-instrument-writes.c: Likewise.
      	* c-c++-common/asan/no-use-after-return.c: Likewise.
      
      From-SVN: r216778
      Yury Gribov committed
    • Allow to override Asan shadow offset. · fd960af2
      2014-10-28  Yury Gribov  <y.gribov@samsung.com>
      
      gcc/
      	* asan.c (set_asan_shadow_offset): New function.
      	(asan_shadow_offset): Likewise.
      	(asan_emit_stack_protection): Call asan_shadow_offset.
      	(build_shadow_mem_access): Likewise.
      	* asan.h (set_asan_shadow_offset): Declare.
      	* common.opt (fasan-shadow-offset): New option.
      	(frandom-seed): Fixed parameter name.
      	* doc/invoke.texi (fasan-shadow-offset): Describe new option.
      	(frandom-seed): Fixed parameter name.
      	* opts-global.c (handle_common_deferred_options): Handle
      	-fasan-shadow-offset.
      	* opts.c (common_handle_option): Likewise.
      
      gcc/testsuite/
      	* c-c++-common/asan/shadow-offset-1.c: New test.
      
      From-SVN: r216773
      Yury Gribov committed
  24. 22 Oct, 2014 1 commit
    • New syntax for -fsanitize-recover. · d95a2703
      2014-10-22  Jakub Jelinek  <jakub@redhat.com>
      	    Yury Gribov  <y.gribov@samsung.com>
      
      gcc/
      	* common.opt (flag_sanitize_recover): New variable.
      	(fsanitize-recover): Remove Var/Init, deprecate.
      	(fsanitize-recover=): New option.
      	* doc/invoke.texi (fsanitize-recover): Update docs.
      	* opts.c (finish_options): Use opts->x_flag_sanitize
      	instead of flag_sanitize.  Prohibit -fsanitize-recover
      	for anything besides UBSan.  Formatting.
      	(common_handle_option): Handle OPT_fsanitize_recover_
      	and OPT_fsanitize_recover.  Use opts->x_flag_sanitize
      	instead of flag_sanitize.
      	* asan.c (pass_sanopt::execute): Fix up formatting.
      	* ubsan.c (ubsan_expand_bounds_ifn, ubsan_expand_null_ifn,
      	ubsan_expand_objsize_ifn, ubsan_build_overflow_builtin,
      	instrument_bool_enum_load, ubsan_instrument_float_cast,
      	instrument_nonnull_arg, instrument_nonnull_return): Check
      	bits in flag_sanitize_recover bitmask instead of
      	flag_sanitize_recover as bool flag.
      
      gcc/c-family/
      	* c-ubsan.c (ubsan_instrument_division, ubsan_instrument_shift,
      	ubsan_instrument_vla): Check bits in flag_sanitize_recover bitmask
      	instead of flag_sanitize_recover as bool flag.
      
      gcc/testsuite/
      	* c-c++-common/ubsan/align-1.c: Update cmdline options.
      	* c-c++-common/ubsan/align-3.c: Likewise.
      	* c-c++-common/ubsan/bounds-1.c: Likewise.
      	* c-c++-common/ubsan/div-by-zero-7.c: Likewise.
      	* c-c++-common/ubsan/float-cast-overflow-10.c: Likewise.
      	* c-c++-common/ubsan/float-cast-overflow-7.c: Likewise.
      	* c-c++-common/ubsan/float-cast-overflow-8.c: Likewise.
      	* c-c++-common/ubsan/float-cast-overflow-9.c: Likewise.
      	* c-c++-common/ubsan/nonnull-2.c: Likewise.
      	* c-c++-common/ubsan/nonnull-3.c: Likewise.
      	* c-c++-common/ubsan/object-size-3.c: Likewise.
      	* c-c++-common/ubsan/overflow-1.c: Likewise.
      	* c-c++-common/ubsan/overflow-add-1.c: Likewise.
      	* c-c++-common/ubsan/overflow-add-3.c: Likewise.
      	* c-c++-common/ubsan/overflow-mul-1.c: Likewise.
      	* c-c++-common/ubsan/overflow-mul-3.c: Likewise.
      	* c-c++-common/ubsan/overflow-negate-2.c: Likewise.
      	* c-c++-common/ubsan/overflow-sub-1.c: Likewise.
      	* c-c++-common/ubsan/pr59503.c: Likewise.
      	* c-c++-common/ubsan/pr60613-1.c: Likewise.
      	* c-c++-common/ubsan/save-expr-1.c: Likewise.
      	* c-c++-common/ubsan/shift-3.c: Likewise.
      	* c-c++-common/ubsan/shift-6.c: Likewise.
      	* c-c++-common/ubsan/undefined-1.c: Likewise.
      	* c-c++-common/ubsan/vla-2.c: Likewise.
      	* c-c++-common/ubsan/vla-3.c: Likewise.
      	* c-c++-common/ubsan/vla-4.c: Likewise.
      	* g++.dg/ubsan/cxx11-shift-1.C: Likewise.
      	* g++.dg/ubsan/return-2.C: Likewise.
      	* c-c++-common/ubsan/recovery-1.c: New test.
      	* c-c++-common/ubsan/recovery-2.c: New test.
      	* c-c++-common/ubsan/recovery-3.c: New test.
      	* c-c++-common/ubsan/recovery-common.inc: New file.
      
      Co-Authored-By: Yury Gribov <y.gribov@samsung.com>
      
      From-SVN: r216552
      Jakub Jelinek committed
  25. 21 Oct, 2014 1 commit
    • Add AutoFDO. · be3c16c4
      gcc/ChangeLog:
      
      2014-10-21  Dehao Chen  <dehao@google.com>
      
      	* auto-profile.c: New file.
      	* auto-profile.h: New file.
      	* basic-block.h (maybe_hot_count_p): New export func.
      	(add_working_set): New export func.
      	* gcov-io.h (GCOV_TAG_AFDO_FILE_NAMES): New tag.
      	(GCOV_TAG_AFDO_FUNCTION): Likewise.
      	(GCOV_TAG_AFDO_WORKING_SET): Likewise.
      	* opts.c (enable_fdo_optimizations): New func.
      	(common_handle_option): Handle -fauto-profile flag.
      	* ipa-inline.c (want_early_inline_function_p): Iterative-einline.
      	(class pass_early_inline): Export early_inliner.
      	(early_inliner): Likewise.
      	(pass_early_inline::execute): Likewise.
      	* ipa-inline.h (early_inliner): Likewise.
      	* predict.c (maybe_hot_count_p): New export func.
      	(counts_to_freqs): AutoFDO logic.
      	(rebuild_frequencies): Likewise.
      	* tree-profile.c (pass_ipa_tree_profile::gate): Likewise.
      	* profile.c (add_working_set): New func.
      	* Makefile.in (auto-profile.o): New object file.
      	* passes.def (pass_ipa_auto_profile): New pass.
      	* tree-ssa-live.c (remove_unused_scope_block_p): AutoFDO logic.
      	* tree-pass.h (make_pass_ipa_auto_profile): New pass.
      	* toplev.c (compile_file): AutoFDO logic.
      	* doc/invoke.texi (-fauto-profile): New doc.
      	* coverage.c (coverage_init): AutoFDO logic.
      	* common.opt (-fauto-profile): New flag.
      	* timevar.def (TV_IPA_AUTOFDO): New tag.
      	* value-prof.c (gimple_alloc_histogram_value): New export func.
      	(check_ic_target): Likewise.
      	* value-prof.h (gimple_alloc_histogram_value): Likewise.
      	(check_ic_target): Likewise.
      
      From-SVN: r216523
      Dehao Chen committed
  26. 17 Oct, 2014 1 commit
  27. 16 Oct, 2014 1 commit
    • IPA ICF pass, part 3/5 · b84d4347
      	* Makefile.in: New object files included.
      	* cgraph.c (cgraph_node::dump): New cgraph_node flag icf_merged
      	is printed.
      	(verify_edge_corresponds_to_fndecl): More sensitive verification
      	of nodes that are merged by IPA ICF.
      	* cgraph.h (cgraph_node::num_references): New function.
      	* cgraphunit.c (cgraph_node::expand_thunk): White space fixed.
      	* common.opt: New options ipa-icf, ipa-icf-functions and
      	ipa-icf-variables introduced.
      	* doc/invoke.texi: Documentation of new options introduced.
      	* ipa-icf-gimple.c: New file.
      	* ipa-icf-gimple.h: New file.
      	* ipa-icf.c: New file.
      	* ipa-icf.h: New file.
      	* lto-cgraph.c (lto_output_node): Streaming of icf_merged flag added.
      	(input_overwrite_node): Likewise.
      	* lto-section-in.c: New icf section added.
      	* lto-streamer.h (enum lto_section_type): Likewise.
      	* opts.c (common_handle_option): New option added.
      	* passes.def: New pass included.
      	* timevar.def: Time variable for IPA ICF added.
      	* tree-pass.h: New IPA ICF pass entry point added.
      
      
      Co-Authored-By: Jan Hubicka <hubicka@ucw.cz>
      
      From-SVN: r216305
      Martin Liska committed
  28. 10 Oct, 2014 1 commit
    • asan.c (pass_sanopt::execute): Handle IFN_UBSAN_OBJECT_SIZE. · 0e82f089
      	* asan.c (pass_sanopt::execute): Handle IFN_UBSAN_OBJECT_SIZE.
      	* doc/invoke.texi: Document -fsanitize=object-size.
      	* flag-types.h (enum sanitize_code): Add SANITIZE_OBJECT_SIZE and
      	or it into SANITIZE_UNDEFINED.
      	* gimple-fold.c (gimple_fold_call): Optimize IFN_UBSAN_OBJECT_SIZE.
      	* internal-fn.c (expand_UBSAN_OBJECT_SIZE): New function.
      	* internal-fn.def (UBSAN_OBJECT_SIZE): Define.
      	* opts.c (common_handle_option): Handle -fsanitize=object-size.
      	* ubsan.c: Include tree-object-size.h.
      	(ubsan_type_descriptor): Call tree_to_uhwi instead of tree_to_shwi. 
      	(ubsan_expand_bounds_ifn): Use false instead of 0.
      	(ubsan_expand_objsize_ifn): New function.
      	(instrument_object_size): New function.
      	(pass_ubsan::execute): Add object size instrumentation.
      	* ubsan.h (ubsan_expand_objsize_ifn): Declare.
      testsuite/
      	* c-c++-common/ubsan/object-size-1.c: New test.
      	* c-c++-common/ubsan/object-size-2.c: New test.
      	* c-c++-common/ubsan/object-size-3.c: New test.
      	* c-c++-common/ubsan/object-size-4.c: New test.
      	* c-c++-common/ubsan/object-size-5.c: New test.
      	* c-c++-common/ubsan/object-size-6.c: New test.
      	* c-c++-common/ubsan/object-size-7.c: New test.
      	* c-c++-common/ubsan/object-size-8.c: New test.
      	* c-c++-common/ubsan/object-size-9.c: New test.
      	* g++.dg/ubsan/object-size-1.C: New test.
      	* gcc.dg/ubsan/object-size-9.c: New test.
      
      From-SVN: r216099
      Marek Polacek committed
  29. 30 Sep, 2014 1 commit
    • Make -Q --help print param defaults and min/max values · ff5101bf
      Make -Q --help print the --param default, min, max values, similar
      to how it does print the defaults for other flags. This is useful
      to let a option auto tuner automatically query all needed information
      abourt gcc params (previously it needed to access the .def file in
      the source)
      
      gcc/:
      
      2014-09-29  Andi Kleen  <ak@linux.intel.com>
      
      	* opts.c (print_filtered_help): Print --param min/max/default
      	with -Q.
      
      From-SVN: r215704
      Andi Kleen committed
  30. 10 Sep, 2014 1 commit
    • flag-types.h (enum sanitize_code): Add SANITIZE_NONNULL_ATTRIBUTE and… · 126edc3f
      flag-types.h (enum sanitize_code): Add SANITIZE_NONNULL_ATTRIBUTE and SANITIZE_RETURNS_NONNULL_ATTRIBUTE...
      
      gcc/
      	* flag-types.h (enum sanitize_code): Add SANITIZE_NONNULL_ATTRIBUTE
      	and SANITIZE_RETURNS_NONNULL_ATTRIBUTE, or them into SANITIZE_UNDEFINED.
      	* opts.c (common_handle_option): Handle SANITIZE_NONNULL_ATTRIBUTE and
      	SANITIZE_RETURNS_NONNULL_ATTRIBUTE and disable
      	flag_delete_null_pointer_checks for them.
      	* sanitizer.def (BUILT_IN_UBSAN_HANDLE_NONNULL_ARG,
      	BUILT_IN_UBSAN_HANDLE_NONNULL_ARG_ABORT,
      	BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN,
      	BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_ABORT): New.
      	* ubsan.c (instrument_bool_enum_load): Set *gsi back to
      	stmt's iterator.
      	(instrument_nonnull_arg, instrument_nonnull_return): New functions.
      	(pass_ubsan::gate): Return true even for SANITIZE_NONNULL_ATTRIBUTE
      	or SANITIZE_RETURNS_NONNULL_ATTRIBUTE.
      	(pass_ubsan::execute): Call instrument_nonnull_{arg,return}.
      	* doc/invoke.texi (-fsanitize=nonnull-attribute,
      	-fsanitize=returns-nonnull-attribute): Document.
      gcc/testsuite/
      	* c-c++-common/ubsan/attrib-3.c: New test.
      	* c-c++-common/ubsan/nonnull-1.c: New test.
      	* c-c++-common/ubsan/nonnull-2.c: New test.
      	* c-c++-common/ubsan/nonnull-3.c: New test.
      	* c-c++-common/ubsan/nonnull-4.c: New test.
      	* c-c++-common/ubsan/nonnull-5.c: New test.
      libsanitizer/
      	* ubsan/ubsan_handlers.cc, ubsan/ubsan_handlers.h: Cherry pick
      	upstream r215485, r217389, r217391 and r217400.
      
      From-SVN: r215118
      Jakub Jelinek committed
  31. 03 Sep, 2014 1 commit
  32. 01 Aug, 2014 1 commit
    • opts.c (common_handle_option): Handle -fsanitize=alignment. · 944fa280
      	* opts.c (common_handle_option): Handle -fsanitize=alignment.
      	* ubsan.h (enum ubsan_null_ckind): Add UBSAN_CTOR_CALL.
      	(ubsan_expand_bounds_ifn, ubsan_expand_null_ifn): Change return
      	type to bool.
      	* stor-layout.h (min_align_of_type): New prototype.
      	* asan.c (pass_sanopt::execute): Don't perform gsi_next if
      	ubsan_expand* told us not to do it.  Remove the extra gsi_end_p
      	check.
      	* ubsan.c: Include builtins.h.
      	(ubsan_expand_bounds_ifn): Change return type to bool,
      	always return true.
      	(ubsan_expand_null_ifn): Change return type to bool, change
      	argument to gimple_stmt_iterator *.  Handle both null and alignment
      	sanitization, take type from ckind argument's type rather than
      	first argument.
      	(instrument_member_call): Removed.
      	(instrument_mem_ref): Remove t argument, add mem and base arguments.
      	Handle both null and alignment sanitization, don't say whole
      	struct access is member access.  Build 3 argument IFN_UBSAN_NULL
      	call instead of 2 argument.
      	(instrument_null): Adjust instrument_mem_ref caller.  Don't
      	instrument calls here.
      	(pass_ubsan::gate, pass_ubsan::execute): Handle SANITIZE_ALIGNMENT
      	like SANITIZE_NULL.
      	* stor-layout.c (min_align_of_type): New function.
      	* flag-types.h (enum sanitize_code): Add SANITIZE_ALIGNMENT.
      	Or it into SANITIZE_UNDEFINED.
      	* doc/invoke.texi (-fsanitize=alignment): Document.
      cp/
      	* cp-gimplify.c (cp_genericize_r): For -fsanitize=null and/or
      	-fsanitize=alignment call ubsan_maybe_instrument_reference
      	for casts to REFERENCE_TYPE and ubsan_maybe_instrument_member_call
      	for calls to member functions.
      c-family/
      	* c-common.h (min_align_of_type): Removed prototype.
      	* c-common.c (min_align_of_type): Removed.
      	* c-ubsan.h (ubsan_maybe_instrument_reference,
      	ubsan_maybe_instrument_member_call): New prototypes.
      	* c-ubsan.c: Include stor-layout.h and builtins.h.
      	(ubsan_maybe_instrument_reference_or_call,
      	ubsan_maybe_instrument_reference, ubsan_maybe_instrument_call): New
      	functions.
      testsuite/
      	* c-c++-common/ubsan/align-1.c: New test.
      	* c-c++-common/ubsan/align-2.c: New test.
      	* c-c++-common/ubsan/align-3.c: New test.
      	* c-c++-common/ubsan/align-4.c: New test.
      	* c-c++-common/ubsan/align-5.c: New test.
      	* c-c++-common/ubsan/attrib-4.c: New test.
      	* g++.dg/ubsan/align-1.C: New test.
      	* g++.dg/ubsan/align-2.C: New test.
      	* g++.dg/ubsan/align-3.C: New test.
      	* g++.dg/ubsan/attrib-1.C: New test.
      	* g++.dg/ubsan/null-1.C: New test.
      	* g++.dg/ubsan/null-2.C: New test.
      
      From-SVN: r213406
      Jakub Jelinek committed
  33. 31 Jul, 2014 1 commit
    • cpp.texi (__SANITIZE_ADDRESS__): Updated description. · fec4842d
      2014-07-31  Yury Gribov  <y.gribov@samsung.com>
      
      	* doc/cpp.texi (__SANITIZE_ADDRESS__): Updated description.
      	* doc/invoke.texi (-fsanitize=kernel-address): Describe new option.
      	* flag-types.h (SANITIZE_USER_ADDRESS, SANITIZE_KERNEL_ADDRESS):
      	New enums.
      	* gcc.c (sanitize_spec_function): Support new option.
      	(SANITIZER_SPEC): Remove now redundant check.
      	* opts.c (common_handle_option): Support new option.
      	(finish_options): Check for incompatibilities.
      	* toplev.c (process_options): Split userspace-specific checks.
      
      From-SVN: r213367
      Yury Gribov committed
  34. 15 Jul, 2014 1 commit
  35. 27 Jun, 2014 1 commit
    • Support compressed debug sections · 29d7cbd1
      	* configure.ac (gcc_cv_as_compress_debug): Check for assembler
      	compressed debug support.
      	(gcc_cv_ld_compress_debug): Check for linker compressed debug
      	support.
      	* configure: Regenerate.
      	* config.in: Regenerate.
      	* common.opt (compressed_debug_sections): New enum.
      	(gz, gz=): New options.
      	* gcc.c (LINK_COMPRESS_DEBUG_SPEC, ASM_COMPRESS_DEBUG_SPEC):
      	Define.
      	(LINK_COMMAND_SPEC): Invoke LINK_COMPRESS_DEBUG_SPEC.
      	(asm_options): Invoke ASM_COMPRESS_DEBUG_SPEC.
      	* config/darwin.h (LINK_COMMAND_SPEC_A): Invoke
      	LINK_COMPRESS_DEBUG_SPEC.
      	* config/i386/djgpp.h (LINK_COMMAND_SPEC): Likewise.
      	* opts.c (common_handle_option): Handle OPT_gz, OPT_gz_.
      	* doc/invoke.texi (Option Summary, Debugging Options): Add
      	-gz[=type].
      	(Debugging Options): Document -gz[=type].
      
      From-SVN: r212072
      Rainer Orth committed
  36. 26 Jun, 2014 1 commit
    • 2014-06-26 Martin Jambor <mjambor@suse.cz> · 680a5a7c
      	* params.def (PARAM_ALLOW_LOAD_DATA_RACES)
      	(PARAM_ALLOW_PACKED_LOAD_DATA_RACES)
      	(PARAM_ALLOW_PACKED_STORE_DATA_RACES): Removed.
      	(PARAM_ALLOW_STORE_DATA_RACES): Set default to zero.
      	* opts.c (default_options_optimization): Set
      	PARAM_ALLOW_STORE_DATA_RACES to one at -Ofast.
      	* doc/invoke.texi (allow-load-data-races)
      	(allow-packed-load-data-races, allow-packed-store-data-races):
      	Removed.
      	(allow-store-data-races): Document the new default.
      
      testsuite/
      	* g++.dg/simulate-thread/bitfields-2.C: Remove allow-load-data-races
      	parameter.
      	* g++.dg/simulate-thread/bitfields.C: Likewise.
      	* gcc.dg/simulate-thread/strict-align-global.c: Remove
      	allow-packed-store-data-races parameter.
      	* gcc.dg/simulate-thread/subfields.c: Likewise.
      	* gcc.dg/tree-ssa/20050314-1.c: Set parameter allow-store-data-races
      	to one.
      
      From-SVN: r212034
      Martin Jambor committed
  37. 20 Jun, 2014 1 commit
    • asan.c (pass_sanopt::execute): Handle IFN_UBSAN_BOUNDS. · 0e37a2f3
      	* asan.c (pass_sanopt::execute): Handle IFN_UBSAN_BOUNDS.
      	* flag-types.h (enum sanitize_code): Add SANITIZE_BOUNDS and or it
      	into SANITIZE_UNDEFINED.
      	* doc/invoke.texi: Describe -fsanitize=bounds.
      	* gimplify.c (gimplify_call_expr): Add gimplification of internal
      	functions created in the FEs.
      	* internal-fn.c: Move "internal-fn.h" after "tree.h".
      	(expand_UBSAN_BOUNDS): New function.
      	* internal-fn.def (UBSAN_BOUNDS): New internal function.
      	* internal-fn.h: Don't define internal functions here.
      	* opts.c (common_handle_option): Add -fsanitize=bounds.
      	* sanitizer.def (BUILT_IN_UBSAN_HANDLE_OUT_OF_BOUNDS,
      	BUILT_IN_UBSAN_HANDLE_OUT_OF_BOUNDS_ABORT): Add.
      	* tree-core.h: Define internal functions here.
      	(struct tree_base): Add ifn field.
      	* tree-pretty-print.c: Include "internal-fn.h".
      	(dump_generic_node): Handle functions without CALL_EXPR_FN.
      	* tree.c (get_callee_fndecl): Likewise.
      	(build_call_expr_internal_loc): New function.
      	* tree.def (CALL_EXPR): Update description.
      	* tree.h (CALL_EXPR_IFN): Define.
      	(build_call_expr_internal_loc): Declare.
      	* ubsan.c (get_ubsan_type_info_for_type): Return 0 for non-arithmetic
      	types.
      	(ubsan_type_descriptor): Change bool parameter to enum
      	ubsan_print_style.  Adjust the code.  Add handling of
      	UBSAN_PRINT_ARRAY.
      	(ubsan_expand_bounds_ifn): New function.
      	(ubsan_expand_null_ifn): Adjust ubsan_type_descriptor call.
      	(ubsan_build_overflow_builtin): Likewise.
      	(instrument_bool_enum_load): Likewise.
      	(ubsan_instrument_float_cast): Likewise.
      	* ubsan.h (enum ubsan_print_style): New enum.
      	(ubsan_expand_bounds_ifn): Declare.
      	(ubsan_type_descriptor): Adjust declaration.  Use a default parameter.
      c-family/
      	* c-gimplify.c: Include "c-ubsan.h" and "pointer-set.h".
      	(ubsan_walk_array_refs_r): New function.
      	(c_genericize): Instrument array bounds.
      	* c-ubsan.c: Include "internal-fn.h".
      	(ubsan_instrument_division): Mark instrumented arrays as having
      	side effects.  Adjust ubsan_type_descriptor call.
      	(ubsan_instrument_shift): Likewise.
      	(ubsan_instrument_vla): Adjust ubsan_type_descriptor call.
      	(ubsan_instrument_bounds): New function.
      	(ubsan_array_ref_instrumented_p): New function.
      	(ubsan_maybe_instrument_array_ref): New function.
      	* c-ubsan.h (ubsan_instrument_bounds): Declare.
      	(ubsan_array_ref_instrumented_p): Declare.
      	(ubsan_maybe_instrument_array_ref): Declare.
      testsuite/
      	* c-c++-common/ubsan/bounds-1.c: New test.
      	* c-c++-common/ubsan/bounds-2.c: New test.
      	* c-c++-common/ubsan/bounds-3.c: New test.
      	* c-c++-common/ubsan/bounds-4.c: New test.
      	* c-c++-common/ubsan/bounds-5.c: New test.
      	* c-c++-common/ubsan/bounds-6.c: New test.
      
      From-SVN: r211859
      Marek Polacek committed