1. 28 Mar, 2018 1 commit
    • Fix typos (PR other/84819). · cefc0906
      2018-03-28  Martin Liska  <mliska@suse.cz>
      
      	PR other/84819
      	* calls.c (initialize_argument_information): Fix trailing space.
      	* common.opt: Fix typo and provide better explanation for
      	-fsanitize-coverage option.
      	* config/i386/i386.opt: Fix typo.
      
      From-SVN: r258925
      Martin Liska committed
  2. 13 Feb, 2018 1 commit
    • common.opt (gas-loc-support, [...]): New. · 924c9e3e
      	* common.opt (gas-loc-support, gas-locview-support): New.
      	(ginline-points, ginternal-reset-location-views): New.
      	* doc/invoke.texi: Document them.  Use @itemx where intended.
      	(gvariable-location-views): Adjust.
      	* target.def (reset_location_view): New.
      	* doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New.
      	(TARGET_RESET_LOCATION_VIEW): New.
      	* doc/tm.texi: Rebuilt.
      	* dwarf2out.c (dwarf2out_default_as_loc_support): New.
      	(dwarf2out_default_as_locview_support): New.
      	(output_asm_line_debug_info): Use option variables.
      	(dwarf2out_maybe_output_loclist_view_pair): Likewise.
      	(output_loc_list): Likewise.
      	(add_high_low_attributes): Check option variables.
      	Don't output entry view attribute in strict mode.
      	(gen_inlined_subroutine_die): Check option variables.
      	(dwarf2out_inline_entry): Likewise.
      	(init_sections_and_labels): Likewise.
      	(dwarf2out_early_finish): Likewise.
      	(maybe_reset_location_view): New, from...
      	(dwarf2out_var_location): ... here.  Call it.
      	* debug.h (dwarf2out_default_as_loc_support): Declare.
      	(dwarf2out_default_as_locview_support): Declare.
      	* hooks.c (hook_int_rtx_insn_0): New.
      	* hooks.h (hook_int_rtx_insn_0): Declare.
      	* toplev.c (process_options): Take -gas-loc-support and
      	-gas-locview-support from dwarf2out.  Enable
      	-gvariable-location-views by default only with locview
      	assembler support.  Enable -ginternal-reset-location-views by
      	default only if the target defines the corresponding hook.
      	Enable -ginline-points by default if location views are
      	enabled; force it disabled if statement frontiers are
      	disabled.
      	* tree-inline.c (expand_call_inline): Check option variables.
      	* tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
      
      From-SVN: r257631
      Alexandre Oliva committed
  3. 09 Feb, 2018 1 commit
    • [LVU] Introduce location views · bd2b9f1e
      This patch introduces an option to enable the generation of location
      views along with location lists.  The exact format depends on the
      DWARF version: it can be a separate attribute (DW_AT_GNU_locviews) or
      (DW_LLE_view_pair) entries in DWARF5+ loclists.
      
      Line number tables are also affected.  If the assembler is found, at
      compiler build time, to support .loc views, we use them and
      assembler-computed view labels, otherwise we output compiler-generated
      line number programs with conservatively-computed view labels.  In
      either case, we output view information next to line number changes
      when verbose assembly output is requested.
      
      This patch requires an LVU patch that modifies the exported API of
      final_scan_insn.  It also expects the entire SFN patchset to be
      installed first, although SFN is not a requirement for LVU.
      
      for  include/ChangeLog
      
      	* dwarf2.def (DW_AT_GNU_locviews): New.
      	* dwarf2.h (enum dwarf_location_list_entry_type): Add
      	DW_LLE_GNU_view_pair.
      	(DW_LLE_view_pair): Define.
      
      for  gcc/ChangeLog
      
      	* common.opt (gvariable-location-views): New.
      	(gvariable-location-views=incompat5): New.
      	* config.in: Rebuilt.
      	* configure: Rebuilt.
      	* configure.ac: Test assembler for view support.
      	* dwarf2asm.c (dw2_asm_output_symname_uleb128): New.
      	* dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare.
      	* dwarf2out.c (var_loc_view): New typedef.
      	(struct dw_loc_list_struct): Add vl_symbol, vbegin, vend.
      	(dwarf2out_locviews_in_attribute): New.
      	(dwarf2out_locviews_in_loclist): New.
      	(dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists.
      	(enum dw_line_info_opcode): Add LI_adv_address.
      	(struct dw_line_info_table): Add view.
      	(RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros.
      	(DWARF2_ASM_VIEW_DEBUG_INFO): Define default.
      	(zero_view_p): New variable.
      	(ZERO_VIEW_P): New macro.
      	(output_asm_line_debug_info): New.
      	(struct var_loc_node): Add view.
      	(add_AT_view_list, AT_loc_list): New.
      	(add_var_loc_to_decl): Add view param.  Test it against last.
      	(new_loc_list): Add view params.  Record them.
      	(AT_loc_list_ptr): Handle loc and view lists.
      	(view_list_to_loc_list_val_node): New.
      	(print_dw_val): Handle dw_val_class_view_list.
      	(size_of_die): Likewise.
      	(value_format): Likewise.
      	(loc_list_has_views): New.
      	(gen_llsym): Set vl_symbol too.
      	(maybe_gen_llsym, skip_loc_list_entry): New.
      	(dwarf2out_maybe_output_loclist_view_pair): New.
      	(output_loc_list): Output view list or entries too.
      	(output_view_list_offset): New.
      	(output_die): Handle dw_val_class_view_list.
      	(output_dwarf_version): New.
      	(output_compilation_unit_header): Use it.
      	(output_skeleton_debug_sections): Likewise.
      	(output_rnglists, output_line_info): Likewise.
      	(output_pubnames, output_aranges): Update version comments.
      	(output_one_line_info_table): Output view numbers in asm comments.
      	(dw_loc_list): Determine current endview, pass it to new_loc_list.
      	Call maybe_gen_llsym.
      	(loc_list_from_tree_1): Adjust.
      	(add_AT_location_description): Create view list attribute if
      	needed, check it's absent otherwise.
      	(convert_cfa_to_fb_loc_list): Adjust.
      	(maybe_emit_file): Call output_asm_line_debug_info for test.
      	(dwarf2out_var_location): Reset views as needed.  Precompute
      	add_var_loc_to_decl args.  Call get_attr_min_length only if we have the
      	attribute.  Set view.
      	(new_line_info_table): Reset next view.
      	(set_cur_line_info_table): Call output_asm_line_debug_info for test.
      	(dwarf2out_source_line): Likewise.  Output view resets and labels to
      	the assembler, or select appropriate line info opcodes.
      	(prune_unused_types_walk_attribs): Handle dw_val_class_view_list.
      	(optimize_string_length): Catch it.  Adjust.
      	(resolve_addr): Copy vl_symbol along with ll_symbol.  Handle
      	dw_val_class_view_list, and remove it if no longer needed.
      	(hash_loc_list): Hash view numbers.
      	(loc_list_hasher::equal): Compare them.
      	(optimize_location_lists): Check whether a view list symbol is
      	needed, and whether the locview attribute is present, and
      	whether they match.  Remove the locview attribute if no longer
      	needed.
      	(index_location_lists): Call skip_loc_list_entry for test.
      	(dwarf2out_finish): Call output_asm_line_debug_info for test.
      	Use output_dwarf_version.
      	* dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list.
      	(struct dw_val_node): Add val_view_list.
      	* final.c (SEEN_NEXT_VIEW): New.
      	(set_next_view_needed): New.
      	(clear_next_view_needed): New.
      	(maybe_output_next_view): New.
      	(final_start_function): Rename to...
      	(final_start_function_1): ... this.  Take pointer to FIRST,
      	add SEEN parameter.  Emit param bindings in the initial view.
      	(final_start_function): Reintroduce SEEN-less interface.
      	(final): Rename to...
      	(final_1): ... this.  Take SEEN parameter.  Output final pending
      	next view at the end.
      	(final): Reintroduce seen-less interface.
      	(final_scan_insn): Output pending next view before switching
      	sections or ending a block.  Mark the next view as needed when
      	outputting variable locations.  Notify debug backend of section
      	changes, and of location view changes.
      	(rest_of_handle_final): Adjust.
      	* toplev.c (process_options): Autodetect value for debug variable
      	location views option.  Warn on incompat5 without -gdwarf-5.
      	* doc/invoke.texi (gvariable-location-views): New.
      	(gvariable-location-views=incompat5): New.
      	(gno-variable-location-views): New.
      
      From-SVN: r257510
      Alexandre Oliva committed
  4. 31 Jan, 2018 1 commit
  5. 18 Jan, 2018 1 commit
    • Add ability to remap file names in __FILE__, etc (PR other/70268) · 7365279f
      This commit adds the -fmacro-prefix-map option that allows remapping of file
      names in __FILE__, __BASE_FILE__, and __builtin_FILE(), similar to how
      -fdebug-prefix-map allows to do the same for debug information.
      
      Additionally, it adds -ffile-prefix-map which can be used to specify both
      mappings with a single option (and, should we need to add more -f*-prefix-map
      options in the future, those as well).
      
      libcpp/ChangeLog:
      
      2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>
      
              PR other/70268
              * include/cpplib.h (cpp_callbacks::remap_filename): New callback.
              * libcpp/macro.c (_cpp_builtin_macro_text): Call remap_filename for
              __FILE__ and __BASE_FILE__.
      
      
      gcc/ChangeLog:
      
      2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>
      
              PR other/70268
              * common.opt: (-ffile-prefix-map): New option.
              * opts.c (common_handle_option): Defer it.
              * opts-global.c (handle_common_deferred_options): Handle it.
              * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
              * file-prefix-map.h: New file.
              (remap_debug_filename, add_debug_prefix_map): ...here.
              (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
              * final.c (debug_prefix_map, add_debug_prefix_map
              remap_debug_filename): Move to...
              * file-prefix-map.c: New file.
              (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
              generalize, get rid of alloca(), use strrchr() instead of strchr().
              (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
              Implement in terms of add_prefix_map().
              (remap_macro_filename, remap_debug_filename): Implement in term of
              remap_filename().
              * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
              * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
              * dbxout.c: Include file-prefix-map.h.
              * varasm.c: Likewise.
              * vmsdbgout.c: Likewise.
              * xcoffout.c: Likewise.
              * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
              * doc/cppopts.texi (-fmacro-prefix-map): Document.
              * doc/invoke.texi (-ffile-prefix-map): Document.
      	(-fdebug-prefix-map): Update description.
      
      
      gcc/c-family/ChangeLog:
      
      2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>
      
              PR other/70268
              * c-family/c.opt (-fmacro-prefix-map): New option.
              * c-family/c-opts.c (c_common_handle_option): Handle it.
              * c-family/c-lex.c (init_c_lex): Set remap_filename cpp callback.
              * c-family/c-ppoutput.c (init_pp_output): Likewise.
      
      
      gcc/testsuite/ChangeLog:
      
      2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>
      
              PR other/70268
              * c-c++-common/ffile-prefix-map.c: New test.
              * c-c++-common/fmacro-prefix-map.c: New test.
              * c-c++-common/cpp/ffile-prefix-map.c: New test.
              * c-c++-common/cpp/fmacro-prefix-map.c: New test.
      
      From-SVN: r256847
      Boris Kolpackov committed
  6. 15 Jan, 2018 1 commit
    • re PR middle-end/82694 (Linux kernel miscompiled since r250765) · 3fccbb9e
      	PR middle-end/82694
      	* common.opt (fstrict-overflow): No longer an alias.
      	(fwrapv-pointer): New option.
      	* tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
      	also for pointer types based on flag_wrapv_pointer.
      	* opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
      	opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
      	opts->x_flag_wrapv got set.
      	* fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
      	changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
      	POINTER_TYPE_OVERFLOW_UNDEFINED.
      	* match.pd: Likewise in address comparison pattern.
      	* doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
      
      	* gcc.dg/no-strict-overflow-7.c: Revert 2017-08-01 changes.
      	* gcc.dg/tree-ssa/pr81388-1.c: Likewise.
      
      From-SVN: r256686
      Jakub Jelinek committed
  7. 03 Jan, 2018 1 commit
  8. 12 Dec, 2017 1 commit
    • [SFN] Introduce -gstatement-frontiers option, enable debug markers · 8697bf9f
      Introduce a command line option to enable statement frontiers, enabled
      by default in optimized builds with DWARF2+ debug information.
      
      This patch depends on an earlier patch that completed the
      infrastructure for debug markers, and on another patch that turns -g
      into a negatable option prefix.
      
      for  gcc/ChangeLog
      
      	* common.opt (gstatement-frontiers): New, setting
      	debug_nonbind_markers_p.
      	* rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): Activate.
      	* toplev.c (process_options): Autodetect value for debug statement
      	frontiers option.
      	* tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): Activate.
      	* doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers): New.
      
      From-SVN: r255569
      Alexandre Oliva committed
  9. 08 Dec, 2017 1 commit
    • re PR tree-optimization/83323 (186.crafty miscompares) · dc236397
      Fix PR83323
      
      	* gimple-loop-jam (unroll_jam_possible_p): Correct test for
      	head-controlled loops and loop BBs.
      	* common.opt (funroll-and-jam): Remove, instead ...
      	(floop-unroll-and-jam): ... reuse this option.
      	* opts.c (default_options_table): Use OPT_floop_unroll_and_jam.
      	* doc/invoke.texi (-funroll-and-jam): Move docu to ...
      	(-floop-unroll-and-jam): ... this option.
      
      testsuite/
      	* gcc.dg/pr83323.c: New test.
      	* gcc.dg/unroll-and-jam.c: Use -floop-unroll-and-jam.
      
      From-SVN: r255514
      Michael Matz committed
  10. 07 Dec, 2017 2 commits
    • re PR tree-optimization/81303 (410.bwaves regression caused by r249919) · fbdec14e
      	PR tree-optimization/81303
      	* Makefile.in (gimple-loop-interchange.o): New object file.
      	* common.opt (floop-interchange): Reuse the option from graphite.
      	* doc/invoke.texi (-floop-interchange): Ditto.  New document for
      	-floop-interchange and mention it for -O3.
      	* opts.c (default_options_table): Enable -floop-interchange at -O3.
      	* gimple-loop-interchange.cc: New file.
      	* params.def (PARAM_LOOP_INTERCHANGE_MAX_NUM_STMTS): New parameter.
      	(PARAM_LOOP_INTERCHANGE_STRIDE_RATIO): New parameter.
      	* passes.def (pass_linterchange): New pass.
      	* timevar.def (TV_LINTERCHANGE): New time var.
      	* tree-pass.h (make_pass_linterchange): New declaration.
      	* tree-ssa-loop-ivcanon.c (create_canonical_iv): Change to external
      	interchange.  Record IV before/after increment in new parameters.
      	* tree-ssa-loop-ivopts.h (create_canonical_iv): New declaration.
      	* tree-vect-loop.c (vect_is_simple_reduction): Factor out reduction
      	path check into...
      	(check_reduction_path): ...New function here.
      	* tree-vectorizer.h (check_reduction_path): New declaration.
      
      	gcc/testsuite
      	* gcc.dg/tree-ssa/loop-interchange-1.c: New test.
      	* gcc.dg/tree-ssa/loop-interchange-1b.c: New test.
      	* gcc.dg/tree-ssa/loop-interchange-2.c: New test.
      	* gcc.dg/tree-ssa/loop-interchange-3.c: New test.
      	* gcc.dg/tree-ssa/loop-interchange-4.c: New test.
      	* gcc.dg/tree-ssa/loop-interchange-5.c: New test.
      	* gcc.dg/tree-ssa/loop-interchange-6.c: New test.
      	* gcc.dg/tree-ssa/loop-interchange-7.c: New test.
      	* gcc.dg/tree-ssa/loop-interchange-8.c: New test.
      	* gcc.dg/tree-ssa/loop-interchange-9.c: New test.
      	* gcc.dg/tree-ssa/loop-interchange-10.c: New test.
      	* gcc.dg/tree-ssa/loop-interchange-11.c: New test.
      	* gcc.dg/tree-ssa/loop-interchange-12.c: New test.
      	* gcc.dg/tree-ssa/loop-interchange-13.c: New test.
      
      Co-Authored-By: Richard Biener <rguenther@suse.de>
      
      From-SVN: r255472
      Bin Cheng committed
    • Add unroll and jam pass · 1cc521f1
      	* gimple-loop-jam.c: New file.
      	* Makefile.in (OBJS): Add gimple-loop-jam.o.
      	* common.opt (funroll-and-jam): New option.
      	* opts.c (default_options_table): Add unroll-and-jam at -O3.
      	* params.def (PARAM_UNROLL_JAM_MIN_PERCENT): New param.
      	(PARAM_UNROLL_JAM_MAX_UNROLL): Ditto.
      	* passes.def: Add pass_loop_jam.
      	* timevar.def (TV_LOOP_JAM): Add.
      	* tree-pass.h (make_pass_loop_jam): Declare.
      	* cfgloop.c (flow_loop_tree_node_add): Add AFTER argument.
      	* cfgloop.h (flow_loop_tree_node_add): Adjust declaration.
      	* cfgloopmanip.c (duplicate_loop): Add AFTER argument, adjust call
      	to flow_loop_tree_node_add.
      	(duplicate_subloops, copy_loops_to): Append to sibling list.
      	* cfgloopmanip.h: (duplicate_loop): Adjust declaration.
      	* doc/invoke.texi (-funroll-and-jam): Document new option.
      	(unroll-jam-min-percent, unroll-jam-max-unroll): Document new params.
      
      testsuite/
      	* gcc.dg/unroll-and-jam.c: New test.
      
      From-SVN: r255467
      Michael Matz committed
  11. 02 Dec, 2017 1 commit
    • Delete obsolete DWARF1 references. · d7d5f241
      	gcc/
      	* common.opt (use_gnu_debug_info_extensions): Delete DWARF_DEBUG from
      	comment.
      	* config/vx-common.h (DWARF_DEBUGGING_INFO): Delete undef.
      	* doc/tm.texi.in (PREFERRED_DEBUGGING_TYPE): Delete DWARF_DEBUG
      	reference.
      	* doc/tm.texi: Regenerate.
      
      From-SVN: r255345
      Jim Wilson committed
  12. 22 Nov, 2017 1 commit
    • re PR c++/60336 (empty struct value is passed differently in C and C++) · 974aedcc
      	PR c++/60336
      	PR middle-end/67239
      	PR target/68355
      	* c-decl.c (grokdeclarator): Set DECL_PADDING_P on unnamed bit-fields.
      
      	* class.c (layout_class_type): Set DECL_PADDING_P on padding.
      	* decl.c (cxx_init_decl_processing): Set TRANSLATION_UNIT_WARN_EMPTY_P.
      	(grokdeclarator): Set DECL_PADDING_P on unnamed bit-fields.
      
      	* lto.c (compare_tree_sccs_1): Compare TYPE_EMPTY_P and DECL_PADDING_P.
      
      	* calls.c (initialize_argument_information): Call
      	warn_parameter_passing_abi target hook.
      	(store_one_arg): Use 0 for empty record size.  Don't push 0 size
      	argument onto stack.
      	(must_pass_in_stack_var_size_or_pad): Return false for empty types.
      	* common.opt: Update -fabi-version description.
      	* config/i386/i386.c (init_cumulative_args): Set cum->warn_empty.
      	(ix86_gimplify_va_arg): Call arg_int_size_in_bytes instead of
      	int_size_in_bytes.
      	(ix86_is_empty_record): New function.
      	(ix86_warn_parameter_passing_abi): New function.
      	(TARGET_EMPTY_RECORD_P): Redefine.
      	(TARGET_WARN_PARAMETER_PASSING_ABI): Redefine.
      	* config/i386/i386.h (CUMULATIVE_ARGS): Add warn_empty.
      	* doc/tm.texi: Regenerated.
      	* doc/tm.texi.in (TARGET_EMPTY_RECORD_P,
      	TARGET_WARN_PARAMETER_PASSING_ABI): Add.
      	* dwarf2out.c (get_ultimate_context): Move to tree.c.
      	* explow.c (hard_function_value): Call arg_int_size_in_bytes
      	instead of int_size_in_bytes.
      	* expr.c (copy_blkmode_to_reg): Likewise.
      	* function.c (aggregate_value_p): Return 0 for empty types.
      	(assign_parm_find_entry_rtl): Call warn_parameter_passing_abi target hook.
      	(locate_and_pad_parm): Call arg size_in_bytes instead
      	size_in_bytes.
      	* lto-streamer-out.c (hash_tree): Hash TYPE_EMPTY_P and DECL_PADDING_P.
      	* stor-layout.c (finalize_type_size): Set TYPE_EMPTY_P.
      	* target.def (empty_record_p, warn_parameter_passing_abi): New target
      	hooks.
      	* targhooks.c (hook_void_CUMULATIVE_ARGS_tree): New hook.
      	(std_gimplify_va_arg_expr): Skip empty records.  Call
      	arg_size_in_bytes instead size_in_bytes.
      	* targhooks.h (hook_void_CUMULATIVE_ARGS_tree): Declare.
      	* tree-core.h (tree_type_common): Add empty_flag.
      	(tree_decl_common): Update comments.
      	* tree-streamer-in.c (unpack_ts_decl_common_value_fields): Stream
      	DECL_PADDING_P.
      	(unpack_ts_type_common_value_fields): Stream TYPE_EMPTY_P.
      	* tree-streamer-out.c (pack_ts_decl_common_value_fields): Stream
      	DECL_PADDING_P.
      	(pack_ts_type_common_value_fields): Stream TYPE_EMPTY_P.
      	* tree.c (default_is_empty_type): New function.
      	(default_is_empty_record): New function.
      	(arg_int_size_in_bytes): New function.
      	(arg_size_in_bytes): New function.
      	(get_ultimate_context): New function.
      	* tree.h: Define TYPE_EMPTY_P, DECL_PADDING_P and
      	TRANSLATION_UNIT_WARN_EMPTY_P.
      	(default_is_empty_record, arg_int_size_in_bytes,
      	arg_size_in_bytes, get_ultimate_context): Declare.
      
      	* g++.dg/abi/empty12.C: New test.
      	* g++.dg/abi/empty12.h: New test.
      	* g++.dg/abi/empty12a.c: New test.
      	* g++.dg/abi/empty13.C: New test.
      	* g++.dg/abi/empty13.h: New test.
      	* g++.dg/abi/empty13a.c: New test.
      	* g++.dg/abi/empty14.C: New test.
      	* g++.dg/abi/empty14.h: New test.
      	* g++.dg/abi/empty14a.c: New test.
      	* g++.dg/abi/empty15.C: New test.
      	* g++.dg/abi/empty15.h: New test.
      	* g++.dg/abi/empty15a.c: New test.
      	* g++.dg/abi/empty16.C: New test.
      	* g++.dg/abi/empty16.h: New test.
      	* g++.dg/abi/empty16a.c: New test.
      	* g++.dg/abi/empty17.C: New test.
      	* g++.dg/abi/empty17.h: New test.
      	* g++.dg/abi/empty17a.c: New test.
      	* g++.dg/abi/empty18.C: New test.
      	* g++.dg/abi/empty18.h: New test.
      	* g++.dg/abi/empty18a.c: New test.
      	* g++.dg/abi/empty19.C: New test.
      	* g++.dg/abi/empty19.h: New test.
      	* g++.dg/abi/empty19a.c: New test.
      	* g++.dg/abi/empty20.C: New test.
      	* g++.dg/abi/empty21.C: New test.
      	* g++.dg/abi/empty22.C: New test.
      	* g++.dg/abi/empty22.h: New test.
      	* g++.dg/abi/empty22a.c: New test.
      	* g++.dg/abi/empty23.C: New test.
      	* g++.dg/abi/empty24.C: New test.
      	* g++.dg/abi/empty25.C: New test.
      	* g++.dg/abi/empty25.h: New test.
      	* g++.dg/abi/empty25a.c: New test.
      	* g++.dg/abi/empty26.C: New test.
      	* g++.dg/abi/empty26.h: New test.
      	* g++.dg/abi/empty26a.c: New test.
      	* g++.dg/abi/empty27.C: New test.
      	* g++.dg/abi/empty28.C: New test.
      	* g++.dg/abi/pr60336-1.C: New test.
      	* g++.dg/abi/pr60336-10.C: New test.
      	* g++.dg/abi/pr60336-11.C: New test.
      	* g++.dg/abi/pr60336-12.C: New test.
      	* g++.dg/abi/pr60336-2.C: New test.
      	* g++.dg/abi/pr60336-3.C: New test.
      	* g++.dg/abi/pr60336-4.C: New test.
      	* g++.dg/abi/pr60336-5.C: New test.
      	* g++.dg/abi/pr60336-6.C: New test.
      	* g++.dg/abi/pr60336-7.C: New test.
      	* g++.dg/abi/pr60336-8.C: New test.
      	* g++.dg/abi/pr60336-9.C: New test.
      	* g++.dg/abi/pr68355.C: New test.
      	* g++.dg/lto/pr60336_0.C: New test.
      
      Co-Authored-By: H.J. Lu <hongjiu.lu@intel.com>
      Co-Authored-By: Jason Merrill <jason@redhat.com>
      
      From-SVN: r255066
      Marek Polacek committed
  13. 29 Oct, 2017 2 commits
    • Emit a no longer supported warning for gcoff* options. · e7e95821
      	gcc/
      	* common.opt (gcoff): Re-add as ignored option.
      	(gcoff1, gcoff2, gcoff3): Likewise.
      
      From-SVN: r254207
      James E Wilson committed
    • Delete obsolete SDB debug info support. · 180295ed
      	gcc/
      	* Makefile.in (OBJS): Delete sdbout.o.
      	(GTFILES): Delete $(srcdir)/sdbout.c.
      	* debug.h: Delete sdb_debug_hooks.
      	* final.c: Delete sdbout.h include.
      	(final_scan_insn): Delete SDB_DEBUG check.
      	(rest_of_clean_state): Likewise.
      	* output.h: Delete sdb_begin_function_line.
      	* sdbout.c: Delete.
      	* sdbout.h: Delete.
      	* toplev.c: Delete sdbout.h include.
      	(process_options): Delete SDB_DEBUG check.
      	* tree-core.h (tree_type_common): Delete pointer field of
      	tree_type_symtab.
      	* tree.c (copy_node): Clear TYPE_SYMTAB_DIE instead of
      	TYPE_SYMTAB_POINTER.
      	* tree.h (TYPE_SYMTAB_POINTER): Delete.
      	(TYPE_SYMTAB_IS_POINTER): Delete.
      	(TYPE_SYMTAB_IS_DIE): Renumber.
      	* xcoffout.c: Refer to former sdbout.c file.
      	(xcoffout_begin_prologue): Use past tense for sdbout.c reference.
      
      	* doc/install.texi (--with-stabs): Delete COFF and ECOFF info.
      	* doc/invoke.texi (SEEALSO): Delete adb and sdb references.
      	(Debugging Options): Delete -gcoff.
      	(-gstabs): Delete SDB reference.
      	(-gcoff): Delete.
      	(-gcoff@var{level}): Delete.
      	* doc/passes.texi (Debugging information output): Delete SDB and
      	sdbout.c references.
      	* doc/tm.texi: Regenerate.
      	* doc/tm.texi.in (DWARF_CIE_DATA_ALIGNMENT): Delete SDB from xref.
      	(SDB and DWARF): Change node name to DWARF and delete SDB and COFF
      	references.
      	(DEBUGGER_AUTO_OFFSET): Delete COFF and SDB references.
      	(PREFERRED_DEBUGGING_TYPE): Delete SDB_DEBUG and -gcoff references.
      	(SDB_DEBUGGING_INFO): Delete.
      	(PUT_SDB_@dots{}, SDB_DELIM, SDB_ALLOW_UNKNOWN_REFERENCES)
      	SDB_ALLOW_FORWARD_REFERENCES, SDB_OUTPUT_SOURCE_LINE): Delete.
      	* target.def (output_source_filename): Delete COFF reference.
      
      	* common.opt (gcoff): Delete.
      	(gxcoff+): Update Negative chain.
      	* defaults.h: Delete all references to SDB_DEBUGGING_INFO and
      	SDB_DEBUG.
      	* dwarf2out.c (gen_array_type_die): Change SDB to debuggers.
      	* flag-types.h (enum debug_info_type): Delete SDB_DEBUG.
      	* function.c (number_blocks): Delete SDB_DEBUGGING_INFO, SDB_DEBUG,
      	and SDB references.
      	(expand_function_start): Change sdb reference to past tense.
      	(expand_function_end): Change sdb reference to past tense.
      	* gcc.c (cpp_unique_options): Delete gcoff3 reference.
      	* opts.c (debug_type_names): Delete coff entry.
      	(common_handle_option): Delete OPT_gcoff case.
      	* system.h (SDB_DEBUG, SDB_DEBUGGING_INFO): Poison.
      
      	* config/dbxcoff.h (PREFERRED_DEBUGGING_TYPE): Set to DBX_DEBUG.
      	* config/cris/cris.h: Delete SDB reference in comment.
      	* config/i386/cygming.h: Don't define SDB_DEBUGGING_INFO.
      	(ASM_DECLARE_FUNCTION_NAME): Delete SDB reference from comment.
      	* config/i386/gas.h: Don't define SDB_DEBUGGING_INFO.
      	* config/i386/i386.c (svr4_dbx_register_map): Change SDB references
      	to past tense.
      	(ix86_expand_prologue): Likewise.
      	* config/i386/winnt.c (i386_pe_start_function): Don't check SDB_DEBUG.
      	* config/ia64/ia64.h: Likewise.
      	* config/m68k/m68kelf.h (DBX_REGISTER_NUMBER): Delete SDB reference.
      	* config/mips/mips.h (SUBTARGET_ASM_DEBUGGING_SPEC): Delete gcoff*
      	support.
      	* config/mmix/mmix.h: Likewise.
      	* config/nds32/nds32.c: Likewise.
      	* config/stormy/storym16.h: Likewise.
      	* config/visium/visium.h: Likewise.
      	* config/vx-common.h (SDB_DEBUGGING_INFO): Delete undef.
      
      	gcc/fortran/
      	* invoke.texi: Delete adb and sdb references.
      
      	gccc/testsuite/
      	* lib/gcc-dg.exp (gcc-dg-debug-runtest): Delete -gcoff.
      	* lib/gfortran-dg.exp (gfortran-dg-debug-runtest): Delete
      	-gcoff.
      
      From-SVN: r254206
      James E Wilson committed
  14. 27 Oct, 2017 1 commit
    • Extend ipa-pure-const pass to propagate malloc attribute. · 0fab169b
      2017-10-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      
      	* cgraph.h (set_malloc_flag): Declare.
      	* cgraph.c (set_malloc_flag_1): New function.
      	(set_malloc_flag): Likewise.
      	* ipa-fnsummary.h (ipa_call_summary): Add new field is_return_callee.
      	* ipa-fnsummary.c (ipa_call_summary::reset): Set is_return_callee to
      	false.
      	(read_ipa_call_summary): Add support for reading is_return_callee.
      	(write_ipa_call_summary): Stream is_return_callee.
      	* ipa-inline.c (ipa_inline): Remove call to ipa_free_fn_summary.
      	* ipa-pure-const.c: Add headers ssa.h, alloc-pool.h, symbol-summary.h,
      	ipa-prop.h, ipa-fnsummary.h.
      	(pure_const_names): Change to static.
      	(malloc_state_e): Define.
      	(malloc_state_names): Define.
      	(funct_state_d): Add field malloc_state.
      	(varying_state): Set malloc_state to STATE_MALLOC_BOTTOM.
      	(check_retval_uses): New function.
      	(malloc_candidate_p): Likewise.
      	(analyze_function): Add support for malloc attribute.
      	(pure_const_write_summary): Stream malloc_state.
      	(pure_const_read_summary): Add support for reading malloc_state.
      	(dump_malloc_lattice): New function.
      	(propagate_malloc): New function.
      	(warn_function_malloc): New function.
      	(ipa_pure_const::execute): Call propagate_malloc and
      	ipa_free_fn_summary.
      	(pass_local_pure_const::execute): Add support for malloc attribute.
      	* ssa-iterators.h (RETURN_FROM_IMM_USE_STMT): New macro.
      	* doc/invoke.texi: Document Wsuggest-attribute=malloc.
      
      testsuite/
      	* gcc.dg/ipa/propmalloc-1.c: New test-case.
      	* gcc.dg/ipa/propmalloc-2.c: Likewise.
      	* gcc.dg/ipa/propmalloc-3.c: Likewise.
      
      From-SVN: r254140
      Prathamesh Kulkarni committed
  15. 23 Oct, 2017 1 commit
    • common.opt (gcolumn-info): Enable by default. · 8008dd1c
      	* common.opt (gcolumn-info): Enable by default.
      	* doc/invoke.texi (gcolumn-info): Document new default.
      
      	* lib/scanasm.exp (dg-function-on-line): Accept optional column info.
      	* gcc.dg/debug/dwarf2/pr53948.c: Likewise.
      	* g++.dg/debug/dwarf2/pr77363.C: Likewise.
      	* gcc.dg/debug/dwarf2/asm-line1.c: Add -gno-column-info to dg-options.
      	* gcc.dg/debug/dwarf2/discriminator.c: Likewise.
      	* g++.dg/debug/dwarf2/typedef6.C: Likewise.
      
      From-SVN: r254010
      Jakub Jelinek committed
  16. 20 Oct, 2017 1 commit
    • Add generic part for Intel CET enabling. The spec is available at · 5c5f0b65
      https://software.intel.com/sites/default/files/managed/4d/2a/control-flow-enforcement-technology-preview.pdf
      
      A proposal is to introduce a target independent flag
      -fcf-protection=[none|branch|return|full] with a semantic to
      instrument a code to control validness or integrity of control-flow
      transfers using jump and call instructions. The main goal is to detect
      and block a possible malware execution through transfer the execution
      to unknown target address. Implementation could be either software or
      target based. Any target platforms can provide their implementation
      for instrumentation under this option.
      
      The compiler should instrument any control-flow transfer points in a
      program (ex. call/jmp/ret) as well as any landing pads, which are
      targets of control-flow transfers.
      
      A new 'nocf_check' attribute is introduced to provide hand tuning
      support. The attribute directs the compiler to skip a call to a
      function and a function's landing pad from instrumentation. The
      attribute can be used for function and pointer to function types,
      otherwise it will be ignored.
      
      Currently all platforms except i386 will report the error and do no
      instrumentation. i386 will provide the implementation based on a
      specification published by Intel for a new technology called
      Control-flow Enforcement Technology (CET).
      
      gcc/c-family/
      	* c-attribs.c (handle_nocf_check_attribute): New function.
      	(c_common_attribute_table): Add 'nocf_check' handling.
      
      gcc/c/
      	* gimple-parser.c: Add second argument NULL to
      	gimple_build_call_from_tree.
      
      gcc/
      	* attrib.c (comp_type_attributes): Check nocf_check attribute.
      	* cfgexpand.c (expand_call_stmt): Set REG_CALL_NOCF_CHECK for
      	call insn.
      	* combine.c (distribute_notes): Add REG_CALL_NOCF_CHECK handling.
      	* common.opt: Add fcf-protection flag.
      	* emit-rtl.c (try_split): Add REG_CALL_NOCF_CHECK handling.
      	* flag-types.h: Add enum cf_protection_level.
      	* gimple.c (gimple_build_call_from_tree): Add second parameter.
      	Add 'nocf_check' attribute propagation to gimple call.
      	* gimple.h (gf_mask): Add GF_CALL_NOCF_CHECK.
      	(gimple_build_call_from_tree): Update prototype.
      	(gimple_call_nocf_check_p): New function.
      	(gimple_call_set_nocf_check): Likewise.
      	* gimplify.c: Add second argument to gimple_build_call_from_tree.
      	* ipa-icf.c: Add nocf_check attribute in statement hash.
      	* recog.c (peep2_attempt): Add REG_CALL_NOCF_CHECK handling.
      	* reg-notes.def: Add REG_NOTE (CALL_NOCF_CHECK).
      	* toplev.c (process_options): Add flag_cf_protection handling.
      
      From-SVN: r253936
      Igor Tsimbalist committed
  17. 12 Oct, 2017 1 commit
    • PR c/82301 - Updated test case g++.dg/ext/attr-ifunc-1.C (and others) in r253041… · 7a866e7e
      PR c/82301 - Updated test case g++.dg/ext/attr-ifunc-1.C (and others) in r253041 segfault on powerpc64
      
      PR c/82301 - Updated test case g++.dg/ext/attr-ifunc-1.C (and others) in r253041 segfault on powerpc64
      PR c/82435 - new __attribute__((alias)) warning gets in the way
      
      gcc/ChangeLog:
      
      	PR other/82301
      	PR c/82435
      	* cgraphunit.c (maybe_diag_incompatible_alias): New function.
      	(handle_alias_pairs): Call it.
      	* common.opt (-Wattribute-alias): New option.
      	* doc/extend.texi (ifunc attribute): Discuss C++ specifics.
      	* doc/invoke.texi (-Wattribute-alias): Document.
      
      gcc/testsuite/ChangeLog:
      
      	PR other/82301
      	PR c/82435
      	* g++.dg/ext/attr-ifunc-1.C: Update.
      	* g++.dg/ext/attr-ifunc-2.C: Same.
      	* g++.dg/ext/attr-ifunc-3.C: Same.
      	* g++.dg/ext/attr-ifunc-4.C: Same.
      	* g++.dg/ext/attr-ifunc-5.C: Same.
      	* g++.dg/ext/attr-ifunc-6.C: New test.
      	* g++.old-deja/g++.abi/vtable2.C: Update.
      	* gcc.dg/attr-ifunc-6.c: New test.
      	* gcc.dg/attr-ifunc-7.c: New test.
      	* gcc.dg/pr81854.c: Update.
      	* lib/target-supports.exp: Update.
      
      From-SVN: r253688
      Martin Sebor committed
  18. 07 Oct, 2017 1 commit
    • invoke.texi (Wsuggest-attribute=cold): Document. · 12b9f3ac
      	* invoke.texi (Wsuggest-attribute=cold): Document.
      	* common.opt (Wsuggest-attribute=cold): New
      	* ipa-pure-const.c (warn_function_cold): New function.
      	* predict.c (compute_function_frequency): Use it.
      	* predict.h (warn_function_cold): Declare.
      
      	* gcc.dg/cold-1.c: New testcase.
      
      From-SVN: r253513
      Jan Hubicka committed
  19. 21 Sep, 2017 1 commit
    • enable handling of -gno- command-line options as negated prefixes · 9ed32e27
      This patch that adds -g to the set of negatable prefixes along with -f,
      -m and -W.  Besides the mapping from -gno- to negated -g in option_map
      and adding g to the [fmW] matches for negatable options, I had to
      introduce gno- as an remapping prefix, for the option searching
      machinery to backtrack to and recognize as a remapping prefix, instead
      of backtracking to -g and stopping at it as if no-* was its Joined
      argument.  Adding such remapping prefixes to preempt further
      backtracking can be accomplished by introducing the prefix as an
      Undocumented option with a Joined argument and without Driver, Target,
      Common, or any language-specific option.  Whenever we match such a fake
      options prefix, we abandon further backtracking (it matches, after all),
      but find_opt returns the same code it would if it hadn't found any
      match, so that we resort to option mapping.
      
      I've arranged for such remapping prefixes to not be considered when
      looking for and suggesting a correct spelling for misspelled options.
      While testing that, I found a few -W-started options that were not
      marked as RejectNegative but should (-Wno-a, is not something we'd like
      to suggest ;-)  I've also marked as such -g-started options that
      it makes no sense to negate, and removed the explicit -gno- ones,
      allowing their opposites to be negated.
      
      for  gcc/ChangeLog
      
      	* common.opt (Wa, Wl, Wp, g, gz=): Add
      	RejectNegative.
      	(gno-column-info): Remove.
      	(gcolumn-info): Drop RejectNegative.
      	(gno-): New prefix.
      	(gno-record-gcc-switches): Remove.
      	(grecord-gcc-switches): Drop RejectNegative.
      	(gno-split-dwarf): Remove.
      	(gsplit-dwarf): Drop RejectNegative.
      	(gno-strict-dwarf): Remove.
      	(gstrict-dwarf): Drop RejectNegative.
      	* config/darwin.opt (gfull, gused): Add RejectNegative.
      	* dwarf2out.c (gen_producer_string): Drop
      	gno-record-gcc-switches handler.
      	* optc-gen.awk: Add g to prefixes with negative forms.
      	* opts-common.c (remapping_prefix_p): New.
      	(find_opt): Check it.
      	(generate_canonical_option): Test g prefix.
      	(option_map): Add -gno- mapping.
      	(add_misspelling_candidates): Check remapping_prefix_p.
      
      for  gcc/ada/ChangeLog
      
      	* gcc-interface/lang.opt (gant, gnatO, gnat): Add
              RejectNegative.
      
      for  gcc/c-family/ChangeLog
      
      	* c.opt (gen-decls): Add RejectNegative.
      
      From-SVN: r253047
      Alexandre Oliva committed
  20. 20 Sep, 2017 1 commit
    • common.opt (-fstack-clash-protection): New option. · ee8f15c6
      	* common.opt (-fstack-clash-protection): New option.
      	* flag-types.h (enum stack_check_type): Note difference between
      	-fstack-check= and -fstack-clash-protection.
      	* params.def (PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE): New PARAM.
      	(PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL): Likewise.
      	* toplev.c (process_options): Issue warnings/errors for cases
      	not handled with -fstack-clash-protection.
      	* doc/invoke.texi (-fstack-clash-protection): Document new option.
      	(-fstack-check): Note additional problem with -fstack-check=generic.
      	Note that -fstack-check is primarily for Ada and refer users
      	to -fstack-clash-protection for stack-clash-protection.
      	Document new params for stack clash protection.
      
      	* gcc.dg/stack-check-2.c: New test.
      	* lib/target-supports.exp
      	(check_effective_target_supports_stack_clash_protection): New function.
      	(check_effective_target_frame_pointer_for_non_leaf): Likewise.
      	(check_effective_target_caller_implicit_probes): Likewise.
      
      From-SVN: r252994
      Jeff Law committed
  21. 15 Sep, 2017 1 commit
    • common.opt (Wcast-align=strict): New warning option. · 1d933576
      2017-09-15  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * common.opt (Wcast-align=strict): New warning option.
              * doc/invoke.texi: Document -Wcast-align=strict.
      
      c:
      2017-09-15  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * c-typeck.c (build_c_cast): Implement -Wcast-align=strict.
      
      cp:
      2017-09-15  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * typeck.c (build_reinterpret_cast_1,
              build_const_cast_1): Implement -Wcast-align=strict.
      
      testsuite:
      2017-09-15  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * c-c++-common/Wcast-align.c: New test.
      
      From-SVN: r252832
      Bernd Edlinger committed
  22. 12 Sep, 2017 1 commit
    • Add -static-pie to GCC driver to create static PIE · b4fed890
      This patch adds -static-pie to GCC driver to create static PIE.  A static
      position independent executable (PIE) is similar to static executable,
      but can be loaded at any address without a dynamic linker.  All linker
      input files must be compiled with -fpie or -fPIE and linker must support
      --no-dynamic-linker to avoid linking with dynamic linker.  "-z text" is
      also needed to prevent dynamic relocations in read-only segments.
      
      	PR driver/81498
      	* common.opt (-static-pie): New alias.
      	(shared): Negate static-pie.
      	(-no-pie): Update help text.
      	(-pie): Likewise.
      	(static-pie): New option.
      	* config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Add
      	-static-pie support.
      	(GNU_USER_TARGET_ENDFILE_SPEC): Likewise.
      	(LINK_EH_SPEC): Likewise.
      	(LINK_GCC_C_SEQUENCE_SPEC): Likewise.
      	* config/i386/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): Likewise.
      	* config/i386/gnu-user64.h (GNU_USER_TARGET_LINK_SPEC): Likewise.
      	* gcc.c (LINK_COMMAND_SPEC): Likewise.
      	(init_gcc_specs): Likewise.
      	(init_spec): Likewise.
      	(display_help): Update help message for -pie.
      	* doc/invoke.texi: Update -pie, -no-pie and -static.  Document
      	-static-pie.
      
      From-SVN: r252034
      H.J. Lu committed
  23. 06 Sep, 2017 1 commit
    • asan.c (initialize_sanitizer_builtins): Add BT_FN_VOID_UINT8_UINT8... · f6e50a7d
      	* asan.c (initialize_sanitizer_builtins): Add
      	BT_FN_VOID_UINT8_UINT8, BT_FN_VOID_UINT16_UINT16,
      	BT_FN_VOID_UINT32_UINT32, BT_FN_VOID_UINT64_UINT64,
      	BT_FN_VOID_FLOAT_FLOAT, BT_FN_VOID_DOUBLE_DOUBLE and
      	BT_FN_VOID_UINT64_PTR variables.
      	* builtin-types.def (BT_FN_VOID_UINT8_UINT8): New fn type.
      	(BT_FN_VOID_UINT16_UINT16): Likewise.
      	(BT_FN_VOID_UINT32_UINT32): Likewise.
      	(BT_FN_VOID_FLOAT_FLOAT): Likewise.
      	(BT_FN_VOID_DOUBLE_DOUBLE): Likewise.
      	(BT_FN_VOID_UINT64_PTR): Likewise.
      	* common.opt (flag_sanitize_coverage): New variable.
      	(fsanitize-coverage=trace-pc): Remove.
      	(fsanitize-coverage=): Add.
      	* flag-types.h (enum sanitize_coverage_code): New enum.
      	* fold-const.c (fold_range_test): Disable non-short-circuit
      	optimization if flag_sanitize_coverage.
      	(fold_truth_andor): Likewise.
      	* tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise.
      	* opts.c (COVERAGE_SANITIZER_OPT): Define.
      	(coverage_sanitizer_opts): New array.
      	(get_closest_sanitizer_option): Add OPTS argument, handle also
      	OPT_fsanitize_coverage_.
      	(parse_sanitizer_options): Adjusted to also handle
      	OPT_fsanitize_coverage_.
      	(common_handle_option): Add OPT_fsanitize_coverage_.
      	* sancov.c (instrument_comparison, instrument_switch): New function.
      	(sancov_pass): Add trace-cmp support.
      	* sanitizer.def (BUILT_IN_SANITIZER_COV_TRACE_CMP1,
      	BUILT_IN_SANITIZER_COV_TRACE_CMP2, BUILT_IN_SANITIZER_COV_TRACE_CMP4,
      	BUILT_IN_SANITIZER_COV_TRACE_CMP8,
      	BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP1,
      	BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP2,
      	BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP4,
      	BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP8,
      	BUILT_IN_SANITIZER_COV_TRACE_CMPF, BUILT_IN_SANITIZER_COV_TRACE_CMPD,
      	BUILT_IN_SANITIZER_COV_TRACE_SWITCH): New builtins.
      	* doc/invoke.texi: Document -fsanitize-coverage=trace-cmp.
      
      	* gcc.dg/sancov/cmp0.c: New test.
      
      Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
      
      From-SVN: r251801
      Wish Wu committed
  24. 22 Aug, 2017 1 commit
    • common.opt (feliminate-dwarf2-dups): Ignore. · 1823c4f6
      2017-08-22  Richard Biener  <rguenther@suse.de>
      
      	* common.opt (feliminate-dwarf2-dups): Ignore.
      	* doc/invoke.texi (feliminate-dwarf2-dups): Remove documentation.
      	* dwarf2out.c (push_new_compile_unit, pop_compile_unit,
      	same_die_p_wrap, compute_section_prefix,
      	is_symbol_die, assign_symbol_names, break_out_includes): Remove.
      	(comdat_symbol_id, comdat_symbol_number): Likewise.
      	(cu_hash_table_entry, cu_hash_table_entry_hasher, cu_hash_type):
      	Likewise.
      	(check_duplicate_cu, record_comdat_symbol_number): Likewise.
      	(output_die): Mark unreachable path unreachable.
      	(dwarf2out_start_source_file): Do not create DW_TAG_GNU_BINCL.
      	(dwarf2out_end_source_file): Do not create DW_TAG_GNU_EINCL.
      	(dwarf2out_init): Remove code handling flag_eliminate_dwarf2_dups.
      	(dwarf2out_early_finish): Likewise.
      
      	* g++.dg/debug/dwarf2/dwarf2-1.C: Remove -feliminate-dwarf2-dups.
      	* g++.dg/debug/dwarf2/dwarf2-2.C: Likewise.
      	* g++.dg/debug/dwarf2/pr46123-2.C: Likewise.
      	* g++.dg/debug/dwarf2/typedef5.C: Likewise.
      	* gcc.dg/debug/dwarf2/dwarf2-3.c: Likewise.
      	* gcc.dg/debug/dwarf2/dwarf2-3.h: Likewise.
      	* gcc.dg/debug/dwarf2/dups-types.c: Remove.
      	* gcc.dg/debug/dwarf2/dups-types.h: Likewise.
      
      From-SVN: r251262
      Richard Biener committed
  25. 01 Aug, 2017 1 commit
    • Remove flag_tree_vectorize · 26d476cd
      gcc/
      
      	* common.opt (ftree-vectorize): No longer set flag_tree_vectorize.
      	(ftree-loop-vectorize): Set as EnabledBy ftree-vectorize.
      	(ftree-slp-vectorize): Likewise.
      	* omp-expand (expand_omp_simd): Remove flag_tree_vectorize, as it
      	can no longer be set independent of flag_tree_loop_vectorize.
      	* omp-general.c (emp_max_vf): Likewise.
      	* opts.c (enable_fdo_optimizations): Remove references to
      	flag_tree_vectorize, these are now implicit.
      	(common_handle_option): Remove handling for OPT_ftree_vectorize,
      	and leave it for the options machinery.
      
      From-SVN: r250774
      James Greenhalgh committed
  26. 25 Jul, 2017 1 commit
    • c-attribs.c (c_common_attribute_table): Add entry for "patchable_function_entry". · 417ca011
      2017-07-07  Torsten Duwe  <duwe@suse.de>
      
              c-family/
      	* c-attribs.c (c_common_attribute_table): Add entry for
      	"patchable_function_entry".
      
              lto/
      	* lto-lang.c (lto_attribute_table): Add entry for
      	"patchable_function_entry".
      
      	* common.opt: Introduce -fpatchable-function-entry
      	command line option, and its variables function_entry_patch_area_size
      	and function_entry_patch_area_start.
      	* opts.c (common_handle_option): Add -fpatchable_function_entry_ case,
      	including a two-value parser.
      	* target.def (print_patchable_function_entry): New target hook.
      	* targhooks.h (default_print_patchable_function_entry): New function.
      	* targhooks.c (default_print_patchable_function_entry): Likewise.
      	* toplev.c (process_options): Switch off IPA-RA if
      	patchable function entries are being generated.
      	* varasm.c (assemble_start_function): Look at the
      	patchable-function-entry command line switch and current
      	function attributes and maybe generate NOP instructions by
      	calling the print_patchable_function_entry hook.
      	* doc/extend.texi: Document patchable_function_entry attribute.
      	* doc/invoke.texi: Document -fpatchable_function_entry
      	command line option.
      	* doc/tm.texi.in (TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY):
      	New target hook.
      	* doc/tm.texi: Re-generate.
      
      	* c-c++-common/patchable_function_entry-default.c: New test.
      	* c-c++-common/patchable_function_entry-decl.c: Likewise.
      	* c-c++-common/patchable_function_entry-definition.c: Likewise.
      
      From-SVN: r250521
      Torsten Duwe committed
  27. 28 Jun, 2017 1 commit
    • Introduce IntegerRange for options (PR driver/79659). · 63010089
      2017-06-28  Martin Liska  <mliska@suse.cz>
      
      	PR driver/79659
      	* common.opt: Add IntegerRange to various options.
      	* opt-functions.awk (integer_range_info): New function.
      	* optc-gen.awk: Add integer_range_info to cl_options struct.
      	* opts-common.c (decode_cmdline_option): Handle
      	CL_ERR_INT_RANGE_ARG.
      	(cmdline_handle_error): Likewise.
      	* opts.c (print_filtered_help): Show valid interval in
      	when --help is provided.
      	* opts.h (struct cl_option): Add range_min and range_max fields.
      	* config/i386/i386.opt: Add IntegerRange for -mbranch-cost.
      2017-06-28  Martin Liska  <mliska@suse.cz>
      
      	PR driver/79659
      	* c.opt: Add IntegerRange to various options.
      2017-06-28  Martin Liska  <mliska@suse.cz>
      
      	PR driver/79659
      	* g++.dg/opt/pr79659.C: New test.
      
      From-SVN: r249734
      Martin Liska committed
  28. 13 Jun, 2017 1 commit
    • Implement no_sanitize function attribute · 45b2222a
      2017-06-13  Martin Liska  <mliska@suse.cz>
      
      	PR sanitize/78204
      	* c-c++-common/ubsan/attrib-2.c (float_cast2): Enhance the
      	test by adding no_sanitize attribute.
      	* gcc.dg/asan/use-after-scope-4.c: Likewise.
      2017-06-13  Martin Liska  <mliska@suse.cz>
      
      	PR sanitize/78204
      	* c-attribs.c (add_no_sanitize_value): New function.
      	(handle_no_sanitize_attribute): Likewise.
      	(handle_no_sanitize_address_attribute): Use the function.
      	(handle_no_sanitize_thread_attribute): New function.
      	(handle_no_address_safety_analysis_attribute): Use
      	add_no_sanitize_value.
      	(handle_no_sanitize_undefined_attribute): Likewise.
      	* c-common.h: Declare new functions.
      	* c-ubsan.c (ubsan_instrument_division): Use sanitize_flags_p.
      	(ubsan_instrument_shift): Likewise.
      	(ubsan_instrument_bounds): Likewise.
      	(ubsan_maybe_instrument_array_ref): Likewise.
      	(ubsan_maybe_instrument_reference_or_call): Likewise.
      2017-06-13  Martin Liska  <mliska@suse.cz>
      
      	PR sanitize/78204
      	* asan.c (asan_sanitize_stack_p): Use sanitize_flags_p.
      	(gate_asan): Likewise.
      	* asan.h (asan_no_sanitize_address_p): Remove the function.
      	(sanitize_flags_p): New function.
      	* builtins.def: Fix coding style.
      	* common.opt: Use renamed enum value.
      	* convert.c (convert_to_integer_1): Use sanitize_flags_p.
      	* doc/extend.texi: Document no_sanitize attribute.
      	* flag-types.h (enum sanitize_code): Rename SANITIZE_NONDEFAULT
      	to SANITIZE_UNDEFINED_NONDEFAULT.
      	* gcc.c (sanitize_spec_function): Use the renamed enum value.
      	* gimple-fold.c (optimize_atomic_compare_exchange_p):
      	Use sanitize_flags_p.
      	* gimplify.c (gimplify_function_tree): Likewise.
      	* ipa-inline.c (sanitize_attrs_match_for_inline_p): Likewise.
      	* opts.c (parse_no_sanitize_attribute): New function.
      	(common_handle_option): Use renamed enum value.
      	* opts.h (parse_no_sanitize_attribute): Declare.
      	* tree.c (sanitize_flags_p): New function.
      	* tree.h: Declared here.
      	* tsan.c: Use sanitize_flags_p.
      	* ubsan.c (ubsan_expand_null_ifn): Likewise.
      	(instrument_mem_ref): Likewise.
      	(instrument_bool_enum_load): Likewise.
      	(do_ubsan_in_current_function): Remove the function.
      	(pass_ubsan::execute): Use sanitize_flags_p.
      	* ubsan.h: Remove do_ubsan_in_current_function
      	* tree-cfg.c (print_no_sanitize_attr_value): New function.
      	(dump_function_to_file): Use it here.
      2017-06-13  Martin Liska  <mliska@suse.cz>
      
      	PR sanitize/78204
      	* class.c (build_base_path): Use sanitize_flags_p.
      	* cp-gimplify.c (cp_genericize_r): Likewise.
      	(cp_genericize_tree): Likewise.
      	(cp_genericize): Likewise.
      	* cp-ubsan.c (cp_ubsan_instrument_vptr_p): Likewise.
      	* decl.c (compute_array_index_type): Likewise.
      	(start_preparsed_function): Likewise.
      	* decl2.c (one_static_initialization_or_destruction): Likewise.
      	* init.c (finish_length_check): Likewise.
      	* lambda.c (maybe_add_lambda_conv_op): Likewise.
      	* typeck.c (cp_build_binary_op): Likewise.
      	(build_static_cast_1): Likewise.
      2017-06-13  Martin Liska  <mliska@suse.cz>
      
      	PR sanitize/78204
      	* c-convert.c (convert): Use sanitize_flags_p.
      	* c-decl.c (grokdeclarator): Likewise.
      	* c-typeck.c (convert_for_assignment): Likewise.
      	(c_finish_return): Likewise.
      	(build_binary_op): Likewise.
      
      From-SVN: r249158
      Martin Liska committed
  29. 05 Jun, 2017 1 commit
    • invoke.texi: Document the -fprofile-abs-path option. · 676519f7
      2017-06-05  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * doc/invoke.texi: Document the -fprofile-abs-path option.
              * common.opt (fprofile-abs-path): New option.
              * gcov-io.h (gcov_write_filename): Declare.
              * gcov-io.c (gcov_write_filename): New function.
              * coverage.c (coverage_begin_function): Use gcov_write_filename.
              * profile.c (output_location): Likewise.
      
      gcc/testsuite:
      2017-06-05  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * gcc.misc-tests/gcov-1a.c: New test.
      
      From-SVN: r248894
      Bernd Edlinger committed
  30. 08 May, 2017 1 commit
    • PR c++/80178 - parameter passing for uncopyable classes · f3ec182d
      	* tree.c (type_has_nontrivial_copy_init): True for classes with only
      	deleted copy/move ctors.
      	(remember_deleted_copy, maybe_warn_parm_abi): New.
      	* decl.c (require_complete_types_for_parms, check_function_type):
      	Call maybe_warn_parm_abi.
      	* call.c (convert_for_arg_passing, build_cxx_call): Likewise.
      
      From-SVN: r247757
      Jason Merrill committed
  31. 03 May, 2017 1 commit
  32. 02 May, 2017 2 commits
    • common.opt (fstrict-overflow): Alias negative to fwrapv. · 2bf54d93
      2017-05-02  Richard Biener  <rguenther@suse.de>
      
      	* common.opt (fstrict-overflow): Alias negative to fwrapv.
      	* doc/invoke.texi (fstrict-overflow): Remove all traces of
      	-fstrict-overflow documentation.
      	* tree.h (TYPE_OVERFLOW_UNDEFINED): Do not test flag_strict_overflow.
      	(POINTER_TYPE_OVERFLOW_UNDEFINED): Test !flag_wrapv instead of
      	flag_strict_overflow.
      	* ipa-inline.c (can_inline_edge_p): Do not test flag_strict_overflow.
      	* lto-opts.c (lto_write_options): Do not stream it.
      	* lto-wrapper.c (merge_and_complain): Do not handle it.
      	* opts.c (default_options_table): Do not set -fstrict-overflow.
      	(finish_options): Likewise do not clear it when sanitizing.
      	* simplify-rtx.c (simplify_const_relational_operation): Do not
      	test flag_strict_overflow.
      
      	ada/
      	* gcc-interface/misc.c (gnat_post_options): Do not set
      	-fstrict-overflow.
      
      	* c-c++-common/Wlogical-op-1.c: Add -fwrapv to restore previous
      	behavior.
      	* gcc.target/i386/pr46253.c: Make i unsigned to avoid warning.
      
      From-SVN: r247495
      Richard Biener committed
    • Fix 2 typos in documentation (PR other/80589). · 51956afe
      2017-05-02  Martin Liska  <mliska@suse.cz>
      
      	PR other/80589
      	* common.opt: Fix typo.
      	* doc/invoke.texi: Likewise.
      
      From-SVN: r247485
      Martin Liska committed
  33. 28 Feb, 2017 2 commits
    • Introduce =<number> for couple of options. · 9453ba0a
      2017-02-28  Martin Liska  <mliska@suse.cz>
      
      	* c.opt: Replace space with tabular for options of <number>
      	type.
      2017-02-28  Martin Liska  <mliska@suse.cz>
      
      	* common.opt: Replace space with tabular for options of <number>
      	type.
      	* config/i386/i386.opt: Show <number> value for
      	-mlarge-data-threshold.
      	* opts.c (print_filtered_help): Do not display number in hexadecimal
      	format.
      
      From-SVN: r245789
      Martin Liska committed
    • Add tabulars for options with enum values. · 6a825afe
      2017-02-28  Martin Liska  <mliska@suse.cz>
      
      	* common.opt: Fix --help=option -Q for options which are of
      	an enum type.
      2017-02-28  Martin Liska  <mliska@suse.cz>
      
      	* c.opt: Fix --help=option -Q for options which are of
      	an enum type.
      
      From-SVN: r245788
      Martin Liska committed
  34. 21 Feb, 2017 1 commit
  35. 18 Feb, 2017 1 commit
    • common.opt (gno-column-info, [...]): New options. · 0029b929
      	* common.opt (gno-column-info, gcolumn-info): New options.
      	* dwarf2out.c (dwarf2_lineno_debug_hooks): Formatting fix.
      	(check_die): Also test for multiple DW_AT_decl_column attributes.
      	(add_src_coords_attributes, dwarf2out_imported_module_or_decl_1): Add
      	DW_AT_decl_column if requested.
      	(gen_subprogram_die): Compare and/or add also DW_AT_decl_column
      	if requested.
      	(gen_variable_die): Likewise.
      	(add_call_src_coords_attributes): Add DW_AT_call_column if requested.
      	* doc/invoke.texi (-gcolumn-info, -gno-column-info): Document.
      
      From-SVN: r245563
      Jakub Jelinek committed
  36. 17 Jan, 2017 1 commit
    • re PR other/79046 (g++ -print-file-name=plugin uses full version number in path) · 3c36aa6b
      	PR other/79046
      	* configure: Regenerated.
      config/
      	* acx.m4 (GCC_BASE_VER): New m4 function.
      	(ACX_TOOL_DIRS): Require GCC_BASE_VER, for
      	--with-gcc-major-version-only use just major number from BASE-VER.
      gcc/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.in (version): Use @get_gcc_base_ver@ instead of cat to get
      	version from BASE-VER file.
      	(CFLAGS-gcc.o): Add -DBASEVER=$(BASEVER_s).
      	(gcc.o): Depend on $(BASEVER).
      	* common.opt (dumpfullversion): New option.
      	* gcc.c (driver_handle_option): Handle OPT_dumpfullversion.
      	* doc/invoke.texi: Document -dumpfullversion.
      	* doc/install.texi: Document --with-gcc-major-version-only.
      	* configure: Regenerated.
      libatomic/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* testsuite/Makefile.in: Regenerated.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      libgomp/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* testsuite/Makefile.in: Regenerated.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      libgcc/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.in (version): Use @get_gcc_base_ver@ instead of cat to get
      	version from BASE-VER file.
      	* configure: Regenerated.
      libssp/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      liboffloadmic/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* aclocal.m4: Include ../config/acx.m4.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      libquadmath/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      libmpx/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      libada/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.in (version): Use @get_gcc_base_ver@ instead of cat to get
      	version from BASE-VER file.
      	* configure: Regenerated.
      lto-plugin/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      libitm/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* testsuite/Makefile.in: Regenerated.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      fixincludes/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.in (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* configure: Regenerated.
      libcilkrts/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* aclocal.m4: Include ../config/acx.m4.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      libcc1/
      	* configure.ac: Add GCC_BASE_VER.  For --with-gcc-major-version-only
      	use just major number from BASE-VER.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      libobjc/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.in (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* configure: Regenerated.
      libstdc++-v3/
      	* configure.ac: Add GCC_BASE_VER.
      	* fragment.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* po/Makefile.in: Regenerated.
      	* libsupc++/Makefile.in: Regenerated.
      	* testsuite/Makefile.in: Regenerated.
      	* src/Makefile.in: Regenerated.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      	* include/Makefile.in: Regenerated.
      	* doc/Makefile.in: Regenerated.
      	* python/Makefile.in: Regenerated.
      	* src/c++11/Makefile.in: Regenerated.
      	* src/c++98/Makefile.in: Regenerated.
      	* src/filesystem/Makefile.in: Regenerated.
      libvtv/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* testsuite/Makefile.in: Regenerated.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      libsanitizer/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* libbacktrace/Makefile.in: Regenerated.
      	* interception/Makefile.in: Regenerated.
      	* asan/Makefile.in: Regenerated.
      	* ubsan/Makefile.in: Regenerated.
      	* configure: Regenerated.
      	* sanitizer_common/Makefile.in: Regenerated.
      	* lsan/Makefile.in: Regenerated.
      	* Makefile.in: Regenerated.
      	* tsan/Makefile.in: Regenerated.
      libgfortran/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      
      From-SVN: r244521
      Jakub Jelinek committed