1. 26 Jul, 2018 1 commit
    • Add linker_output as prefix for LTO temps (PR lto/86548). · c00c9d03
      2018-07-26  Martin Liska  <mliska@suse.cz>
      
              PR lto/86548
      	* lto-wrapper.c: Add linker_output as prefix
              for ltrans_output_file.
      2018-07-26  Martin Liska  <mliska@suse.cz>
      
              PR lto/86548
      	* libiberty.h (make_temp_file_with_prefix): New function.
      2018-07-26  Martin Liska  <mliska@suse.cz>
      
              PR lto/86548
      	* make-temp-file.c (TEMP_FILE): Remove leading 'cc'.
      	(make_temp_file): Call make_temp_file_with_prefix with
              first argument set to NULL.
      	(make_temp_file_with_prefix): Support also prefix.
      
      From-SVN: r262999
      Martin Liska committed
  2. 30 May, 2018 1 commit
  3. 28 May, 2018 1 commit
    • splay-tree.h (splay_tree_compare_strings, [...]): Declare new utility functions. · b0c31bc6
      include:
      2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * splay-tree.h (splay_tree_compare_strings,
              splay_tree_delete_pointers): Declare new utility functions.
      
      libiberty:
      2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * splay-tree.c (splay_tree_compare_strings,
              splay_tree_delete_pointers): New utility functions.
      
      gcc:
      2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * tree-dump.c (dump_node): Use splay_tree_delete_pointers.
      
      c-family:
      2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * c-lex.c (get_fileinfo): Use splay_tree_compare_strings and
              splay_tree_delete_pointers.
      
      cp:
      2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * decl2.c (start_static_storage_duration_function): Use
              splay_tree_delete_pointers.
      
      From-SVN: r260850
      Bernd Edlinger committed
  4. 24 May, 2018 1 commit
  5. 02 May, 2018 2 commits
  6. 09 Feb, 2018 2 commits
    • [IEPM] Introduce inline entry point markers · 58006663
      Output DW_AT_entry_pc based on markers.
      
      Introduce DW_AT_GNU_entry_view as a DWARF extension.
      
      If views are enabled are we're not in strict compliance mode, output
      DW_AT_GNU_entry_view if it might be nonzero.
      
      This patch depends on SFN and LVU patchsets, and on the IEPM patch that
      introduces the inline_entry debug hook.
      
      for  include/ChangeLog
      
      	* dwarf2.def (DW_AT_GNU_entry_view): New.
      
      for  gcc/ChangeLog
      
      	* cfgexpand.c (expand_gimple_basic_block): Handle inline entry
      	markers.
      	* dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
      	(BLOCK_INLINE_ENTRY_LABEL): New.
      	(dwarf2out_var_location): Disregard inline entry markers.
      	(inline_entry_data): New struct.
      	(inline_entry_data_hasher): New hashtable type.
      	(inline_entry_data_hasher::hash): New.
      	(inline_entry_data_hasher::equal): New.
      	(inline_entry_data_table): New variable.
      	(add_high_low_attributes): Add DW_AT_entry_pc and
      	DW_AT_GNU_entry_view attributes if a pending entry is found
      	in inline_entry_data_table.  Add old entry_pc attribute only
      	if debug nonbinding markers are disabled.
      	(gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
      	markers are enabled.
      	(block_within_block_p, dwarf2out_inline_entry): New.
      	(dwarf2out_finish): Check that no entries remained in
      	inline_entry_data_table.
      	* final.c (reemit_insn_block_notes): Handle inline entry notes.
      	(final_scan_insn, notice_source_line): Likewise.
      	(rest_of_clean_state): Skip inline entry markers.
      	* gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
      	markers.
      	* gimple.c (gimple_build_debug_inline_entry): New.
      	* gimple.h (enum gimple_debug_subcode): Add
      	GIMPLE_DEBUG_INLINE_ENTRY.
      	(gimple_build_debug_inline_entry): Declare.
      	(gimple_debug_inline_entry_p): New.
      	(gimple_debug_nonbind_marker_p): Adjust.
      	* insn-notes.def (INLINE_ENTRY): New.
      	* print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
      	inline entry marker notes.
      	(print_insn): Likewise.
      	* rtl.h	(NOTE_MARKER_P): Add INLINE_ENTRY support.
      	(INSN_DEBUG_MARKER_KIND): Likewise.
      	(GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
      	* tree-inline.c	(expand_call_inline): Build and insert
      	debug_inline_entry stmt.
      	* tree-ssa-live.c (remove_unused_scope_block_p): Preserve
      	inline entry blocks early, if nonbind markers are enabled.
      	(dump_scope_block): Dump fragment info.
      	* var-tracking.c (reemit_marker_as_note): Handle inline entry note.
      	* doc/gimple.texi (gimple_debug_inline_entry_p): New.
      	(gimple_build_debug_inline_entry): New.
      	* doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
      	Enable/disable inline entry points too.
      	* doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
      	(DEBUG_INSN): Describe inline entry markers.
      
      From-SVN: r257511
      Alexandre Oliva committed
    • [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
  7. 03 Jan, 2018 1 commit
  8. 20 Nov, 2017 1 commit
  9. 10 Nov, 2017 1 commit
    • Add plugin API for processing plugin-added input files. · f382ac6d
      Gold plugins may wish to further process an input file added by a plugin. For
      example, the plugin may need to assign a unique segment for sections in a
      plugin-generated input file. This patch adds a plugin callback that the linker
      will call when reading symbols from a new input file added after the
      all_symbols_read event (i.e. an input file added by a plugin).
      
      2017-11-10  Stephen Crane <sjc@immunant.com>
      
      	* plugin-api.h: Add plugin API for processing plugin-added
      	input files.
      
      From-SVN: r254640
      Stephen Crane committed
  10. 23 Oct, 2017 1 commit
    • Add INCLUDE_UNIQUE_PTR and use it (PR bootstrap/82610) · b367de5d
      gcc/ChangeLog:
      	PR bootstrap/82610
      	* system.h: Conditionally include "unique-ptr.h" if
      	INCLUDE_UNIQUE_PTR is defined.
      	* unique-ptr-tests.cc: Remove include of "unique-ptr.h" in favor
      	of defining INCLUDE_UNIQUE_PTR before including "system.h".
      
      include/ChangeLog:
      	* unique-ptr.h: Make include of <memory> conditional on C++11 or
      	later.
      
      From-SVN: r254024
      David Malcolm committed
  11. 16 Oct, 2017 1 commit
    • Add gnu::unique_ptr · 46d2b77d
      This is a version of the patch posted by Trevor Saunders on 2017-07-31,
      for which he wrote:
      > For most of the history of this see
      >   https://sourceware.org/ml/gdb-patches/2016-10/msg00223.html
      > The changes are mostly s/gdb/gtl/g
      
      This version was updated by me (dmalcolm) adding these changes:
      - renaming of "gtl" to "gnu" (3 letters, and one of the ones Richi
        proposed, and not a match for "*tl")
      - renaming of DEFINE_GDB_UNIQUE_PTR to DEFINE_GNU_UNIQUE_PTR
      - renaming of xfree_deleter to xmalloc_deleter, and making it
        use "free" rather than "xfree" (which doesn't exist)
      - added a gcc/unique-ptr-tests.cc
      - implement unique_xmalloc_ptr<T[]> (taken from gdb, but changing
        "xfree" to "free", and adding support for pre-C++-11)
      
      gcc/ChangeLog:
      
      	David Malcolm <dmalcolm@redhat.com>
      
      	* Makefile.in (OBJS): Add unique-ptr-tests.o.
      	* selftest-run-tests.c (selftest::run_tests): Call
      	selftest::unique_ptr_tests_cc_tests.
      	* selftest.h (selftest::unique_ptr_tests_cc_tests): New decl.
      	* unique-ptr-tests.cc: New file.
      
      include/ChangeLog:
      
      	Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
      	David Malcolm <dmalcolm@redhat.com>
      
      	* unique-ptr.h: New file.
      
      From-SVN: r253797
      David Malcolm committed
  12. 15 Sep, 2017 2 commits
  13. 12 Sep, 2017 1 commit
    • Add DW_CFA_AARCH64_negate_ra_state to dwarf2.def/h and dwarfnames.c · ff971abe
        A new vendor CFA DW_CFA_AARCH64_negate_ra_state was introduced for ARMv8.3-A
      return address signing, it is multiplexing DW_CFA_GNU_window_save in CFA vendor
      extension space.
      
        This patch adds necessary code to make it available to external, the GDB
      patch (https://sourceware.org/ml/gdb-patches/2017-08/msg00215.html) is intended
      to use it.
      
        A new DW_CFA_DUP for it is added in dwarf2.def.  The use of DW_CFA_DUP is to
      avoid duplicated case value issue when included in libiberty/dwarfnames.
      
        Native x86 builds OK to make sure no macro expanding errors.
      
      Committed on behalf of Jiong Wang.
      
          include/
      	* dwarf2.def (DW_CFA_AARCH64_negate_ra_state): New DW_CFA_DUP.
      	* dwarf2.h (DW_CFA_DUP): New define.
      
          libiberty/
      	* dwarfnames.c (DW_CFA_DUP): New define.
      
      From-SVN: r252037
      Jiong Wang committed
  14. 21 Aug, 2017 1 commit
    • re PR go/78628 (GO fails to build a translation unit decl) · 1ea85365
      2017-08-21  Richard Biener  <rguenther@suse.de>
      
      	include/
      	* simple-object.h (simple_object_copy_lto_debug_sections): New
      	function.
      
      	libiberty/
      	* simple-object-common.h (struct simple_object_functions): Add
      	copy_lto_debug_sections hook.
      	* simple-object.c: Include fcntl.h.
      	(handle_lto_debug_sections): New helper function.
      	(simple_object_copy_lto_debug_sections): New function copying
      	early LTO debug sections to regular debug sections in a new file.
      	(simple_object_start_write): Handle NULL segment_name.
      	* simple-object-coff.c (simple_object_coff_functions): Adjust
      	for not implemented copy_lto_debug_sections hook.
      	* simple-object-mach-o.c (simple_object_mach_o_functions): Likewise.
      	* simple-object-xcoff.c (simple_object_xcoff_functions): Likewise.
      	* simple-object-elf.c (SHT_NULL, SHT_SYMTAB, SHT_RELA, SHT_REL,
      	SHT_GROUP): Add various sectopn header types.
      	(SHF_EXCLUDE): Add flag.
      	(Elf32_External_Sym, Elf64_External_Sym): Add symbol struct.
      	(ELF_ST_BIND, ELF_ST_TYPE, ELF_ST_INFO): Add accessors.
      	(STT_OBJECT, STT_FUNC, STT_TLS, STT_GNU_IFUNC): Add Symbol types.
      	(STV_DEFAULT): Add symbol visibility.
      	(SHN_COMMON): Add special section index name.
      	(struct simple_object_elf_write): New.
      	(simple_object_elf_start_write): Adjust for new private data.
      	(simple_object_elf_write_shdr): Pass in values for all fields
      	we write.
      	(simple_object_elf_write_to_file): Adjust.  Copy from recorded
      	section headers if requested.
      	(simple_object_elf_release_write): Release private data.
      	(simple_object_elf_copy_lto_debug_sections): Copy and rename sections
      	as denoted by PFN and all their dependences, symbols and relocations
      	to the empty destination file.
      	(simple_object_elf_functions): Adjust for copy_lto_debug_sections hook.
      
              gcc/
              * debug.h (struct gcc_debug_hooks): Add die_ref_for_decl and
              register_external_die hooks.
              (debug_false_tree_charstarstar_uhwistar): Declare.
              (debug_nothing_tree_charstar_uhwi): Likewise.
              * debug.c (do_nothing_debug_hooks): Adjust.
              (debug_false_tree_charstarstar_uhwistar): New do nothing.
              (debug_nothing_tree_charstar_uhwi): Likewise.
              * dbxout.c (dbx_debug_hooks): Adjust.
              (xcoff_debug_hooks): Likewise.
              * sdbout.c (sdb_debug_hooks): Likewise.
              * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
              * dwarf2out.c (macinfo_label_base): New global.
      	(dwarf2out_register_external_die): New function for the
      	register_external_die hook.
              (dwarf2out_die_ref_for_decl): Likewise for die_ref_for_decl.
              (dwarf2_debug_hooks): Use them.
              (dwarf2_lineno_debug_hooks): Adjust.
              (struct die_struct): Add with_offset flag.
              (DEBUG_LTO_DWO_INFO_SECTION, DEBUG_LTO_INFO_SECTION,
              DEBUG_LTO_DWO_ABBREV_SECTION, DEBUG_LTO_ABBREV_SECTION,
              DEBUG_LTO_DWO_MACINFO_SECTION, DEBUG_LTO_MACINFO_SECTION,
              DEBUG_LTO_DWO_MACRO_SECTION, DEBUG_LTO_MACRO_SECTION,
              DEBUG_LTO_LINE_SECTION, DEBUG_LTO_DWO_STR_OFFSETS_SECTION,
              DEBUG_LTO_STR_DWO_SECTION, DEBUG_STR_LTO_SECTION): New macros
              defining section names for the early LTO debug variants.
      	(reset_indirect_string): New helper.
              (add_AT_external_die_ref): Helper for dwarf2out_register_external_die.
              (print_dw_val): Add support for offsetted symbol references.
      	(get_ultimate_context): Split out from is_cxx.
      	(is_cxx): Use get_ultimate_context.
      	(is_fortran): Add decl overload.
              (compute_comp_unit_symbol): Split out worker from
      	compute_section_prefix.
              (compute_section_prefix): Call compute_comp_unit_symbol and
      	set comdat_type_p here.
              (output_die): Skip DIE symbol output for the LTO added one.
              Handle DIE symbol references with offset.
              (output_comp_unit): Guard section name mangling properly.
              For LTO debug sections emit a symbol at the section beginning
              which we use to refer to its DIEs.
              (add_abstract_origin_attribute): For DIEs registered via
              dwarf2out_register_external_die directly refer to the early
              DIE rather than indirectly through the shadow one we created.
      	Remove obsolete call to dwarf2out_abstract_function for
      	non-function/block origins.
              (gen_array_type_die): When generating early LTO debug do
              not emit DW_AT_string_length.
              (gen_formal_parameter_die): Do not re-create DIEs for PARM_DECLs
              late when in LTO.  As suggested place a gcc_unreachable for
      	the DECL_ABSTRACT_P case.
              (gen_subprogram_die): Avoid another specification DIE
              for early built declarations/definitions for the late LTO case.
              (gen_variable_die): Add type references for late duplicated VLA dies
              when in late LTO.
              (gen_inlined_subroutine_die): Do not call dwarf2out_abstract_function,
              we have the abstract instance already.
              (process_scope_var): Adjust decl DIE contexts in LTO which
              first puts them in limbo.
              (gen_decl_die): Do not generate type DIEs late apart from
              types for VLAs or for decls we do not yet have a DIE.  Do not
      	call dwarf2out_abstract_function late.
              (dwarf2out_early_global_decl): Make sure to create DIEs
              for abstract instances of a decl first.
              (dwarf2out_late_global_decl): Adjust comment.
              (output_macinfo_op): With multiple macro sections use
      	macinfo_label_base to distinguish labels.
              (output_macinfo): Likewise.  Update macinfo_label_base.
      	Pass in the line info label.
      	(note_variable_value_in_expr): When generating LTO resolve
      	all variable values here by generating DIEs as needed.
              (init_sections_and_labels): Add early LTO debug flag parameter
              and generate different sections and names if set.  Add generation
              counter for the labels so we can have multiple of them.
              (reset_dies): Helper to allow DIEs to be output multiple times.
              (dwarf2out_finish): When outputting DIEs to the fat part of an
      	LTO object first reset DIEs.
              (dwarf2out_early_finish): Output early DIEs when generating LTO.
      	(modified_type_die): Check for decl_ultimate_origin being self
      	before recursing.
      	(gen_type_die_with_usage): Likewise.
      	(gen_typedef_die): Allow decl_ultimate_origin being self.
              (set_decl_abstract_flags): Remove.
              (set_block_abstract_flags): Likewise.
              (dwarf2out_abstract_function): Treat the early generated DIEs
              as the abstract copy and only add DW_AT_inline and
              DW_AT_artificial here and call set_decl_origin_self.
      	If the DIE has an abstract origin don't do anything.
      	* tree.c (free_lang_data): Build a dummy TRANSLATION_UNIT_DECL
      	if we have none yet (Go fails to build one, PR78628).
      	(variably_modified_type_p): Prevent endless recursion for Ada
      	cyclic pointer types.
              * lto-streamer-in.c: Include debug.h.
              (dref_queue): New global.
              (lto_read_tree_1): Stream in DIE references.
              (lto_input_tree): Register DIE references.
      	(input_function): Stream DECL_DEBUG_ARGS.
              * lto-streamer-out.c: Include debug.h.
              (lto_write_tree_1): Output DIE references.
              (DFS::DFS_write_tree_body): Follow DECL_ABSTRACT_ORIGIN.
      	Force a TRANSLATION_UNIT_DECL DECL_CONTEXT for file-scope decls.
      	(output_function): Stream DECL_DEBUG_ARGS.
              * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
              Stream DECL_ABSTRACT_ORIGIN.
              * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
      	(write_ts_decl_minimal_tree_pointers): Force a TRANSLATION_UNIT_DECL
      	DECL_CONTEXT for file-scope decls.
              * lto-streamer.h (struct dref_entry): Declare.
              (dref_queue): Likewise.
      	* cfgexpand.c (pass_expand::execute): Do not call the
      	outlining_inline_function hook here.
              * lto-wrapper.c (debug_obj): New global.
              (tool_cleanup): Unlink it if required.
              (debug_objcopy): New function.
              (run_gcc): Handle early debug sections in the IL files by
              extracting them to separate files, partially linkin them and
              feeding the result back as result to the linker.
      
              * config/darwin.h (DEBUG_LTO_INFO_SECTION, DEBUG_LTO_ABBREV_SECTION,
              DEBUG_LTO_MACINFO_SECTION, DEBUG_LTO_LINE_SECTION,
              DEBUG_STR_LTO_SECTION, DEBUG_LTO_MACRO_SECTION): Put early debug
              sections into a separate segment.
              * config/darwin.c (darwin_asm_named_section): Handle __GNU_DWARF_LTO
              segments.
              (darwin_asm_dwarf_section): Likewise.
              (darwin_asm_output_dwarf_offset): Likewise.
      
      	* config/i386/i386.c (make_resolver_func): Set DECL_IGNORED_P.
      
              lto/
              * lto.c (unify_scc): Truncate DIE reference queue for dropped SCCs.
              (lto_read_decls): Process TRANSLATION_UNIT_DECLs.  Remove
              TYPE_DECL debug processing, register DIE references from
              prevailing SCCs with the debug machinery.
              (lto_section_with_id): Handle LTO debug sections.
      
      	libstdc++/
      	* testsuite/libstdc++-prettyprinters/prettyprinters.exp: Run all
      	tests with -flto as well if supported.
      
              testsuite/
      	* c-c++-common/asan/global-overflow-1.c: Adjust diagnostic location
      	regex to handle the LTO case.
      	* c-c++-common/asan/heap-overflow-1.c: Likewise.
      	* c-c++-common/asan/misalign-1.c: Likewise.
      	* c-c++-common/asan/misalign-2.c: Likewise.
      	* c-c++-common/asan/null-deref-1.c: Likewise.
      	* c-c++-common/asan/stack-overflow-1.c: Likewise.
      	* c-c++-common/asan/strncpy-overflow-1.c: Likewise.
      	* c-c++-common/asan/use-after-free-1.c: Likewise.
      	* c-c++-common/asan/alloca_big_alignment.c: Likewise.
      	* c-c++-common/asan/alloca_detect_custom_size.c: Likewise.
      	* c-c++-common/asan/alloca_overflow_partial.c: Likewise.
      	* c-c++-common/asan/alloca_overflow_right.c: Likewise.
      	* c-c++-common/asan/alloca_underflow_left.c: Likewise.
      	* g++.dg/asan/large-func-test-1.C: Likewise.
      	* gfortran.dg/save_6.f90: Add -flto -g variant of save_5.f90.
      
      From-SVN: r251220
      Richard Biener committed
  15. 02 Jul, 2017 1 commit
    • include/ChangeLog · ef29f5dd
      2017-07-02  Jan Kratochvil  <jan.kratochvil@redhat.com>
      
              * dwarf2.def (DW_IDX_compile_unit, DW_IDX_type_unit, DW_IDX_die_offset)
              (DW_IDX_parent, DW_IDX_type_hash, DW_IDX_lo_user, DW_IDX_hi_user)
              (DW_IDX_GNU_internal, DW_IDX_GNU_external): New.
              * dwarf2.h (DW_IDX, DW_IDX_DUP, DW_FIRST_IDX, DW_END_IDX): New.
              (enum dwarf_name_index_attribute): Remove.
              (get_DW_IDX_name): New declaration.
      
      libiberty/ChangeLog
      2017-07-02  Jan Kratochvil  <jan.kratochvil@redhat.com>
      
              * dwarfnames.c (DW_FIRST_IDX, DW_END_IDX, DW_IDX, DW_IDX_DUP): New.
      
      From-SVN: r249883
      Jan Kratochvil committed
  16. 27 Jun, 2017 1 commit
  17. 25 May, 2017 1 commit
  18. 20 May, 2017 1 commit
  19. 18 May, 2017 1 commit
  20. 04 Apr, 2017 1 commit
  21. 08 Mar, 2017 1 commit
    • Fix PR demangler/70909 and 67264 (endless demangler recursion) · a46586c3
      ChangeLog:
      
             PR demangler/70909
             PR demangler/67264
             * include/demangle.h: Add d_printing to struct demangle_component
             and pass struct demangle_component as non const.
      
      libiberty/ChangeLog:
      
             PR demangler/70909
             PR demangler/67264
             * cp-demangle.c: Fix endless recursion. Pass
             struct demangle_component as non const.
             (d_make_empty): Initialize variable.
             (d_print_comp_inner): Limit recursion.
             (d_print_comp): Decrement variable.
             * cp-demint.c (cplus_demangle_fill_component): Initialize
             variable.
             (cplus_demangle_fill_builtin_type): Likewise.
             (cplus_demangle_fill_operator): Likewise.
             * testsuite/demangle-expected: Add tests.
      
      From-SVN: r245978
      Mark Wielaard committed
  22. 25 Feb, 2017 1 commit
    • re PR debug/77589 (fortran: Missing DW_AT_byte_stride for an array record field selection) · 680c60fe
      	PR debug/77589
      include/
      	* dwarf2.def (DW_OP_GNU_variable_value): New opcode.
      gcc/
      	* dwarf2out.c (struct dw_loc_list_struct): Add noted_variable_value
      	bitfield.
      	(size_of_loc_descr): Handle DW_OP_GNU_variable_value.
      	(output_loc_operands): Handle DW_OP_call_ref and
      	DW_OP_GNU_variable_value.
      	(struct variable_value_struct): New type.
      	(struct variable_value_hasher): Likewise.
      	(variable_value_hash): New variable.
      	(string_types): Remove.
      	(copy_loc_descr): New function.
      	(add_loc_descr_to_each): Clarify comment.  Use copy_loc_descr.
      	(prepend_loc_descr_to_each): New function.
      	(add_loc_list): Fix comment typo.  Use prepend_loc_descr_to_each
      	instead of add_loc_descr_to_each if the first argument is single
      	location list and the second has multiple.
      	(resolve_args_picking_1): Handle DW_OP_GNU_variable_value.
      	(loc_list_from_tree_1): For early_dwarf, emit DW_OP_GNU_variable_value
      	when looking for variable value which doesn't have other location info.
      	(loc_list_from_tree): Formatting fix.
      	(gen_array_type_die): Simplify DW_AT_string_length handling.
      	(adjust_string_types): Remove.
      	(gen_subprogram_die): Don't call adjust_string_types nor test/set
      	string_types.  Call resolve_variable_values.
      	(prune_unused_types_walk_loc_descr): Handle DW_OP_GNU_variable_value.
      	(resolve_addr_in_expr): Likewise.  Add A argument.
      	(copy_deref_exprloc): Remove deref argument.  Adjust for the
      	original expression being DW_OP_GNU_variable_value with optionally
      	DW_OP_stack_value after it instead of DW_OP_call4 with DW_OP_deref
      	optionally after it.
      	(optimize_string_length): Rework for DW_OP_GNU_variable_value.
      	(resolve_addr): Adjust optimize_string_length and resolve_addr_in_expr
      	callers.  Set remove_AT_byte_size if removing DW_AT_string_length.
      	(variable_value_hasher::hash, variable_value_hasher::equal): New
      	methods.
      	(resolve_variable_value_in_expr, resolve_variable_value,
      	resolve_variable_values, note_variable_value_in_expr,
      	note_variable_value): New functions.
      	(dwarf2out_early_finish): Call note_variable_value on all toplevel
      	DIEs.
      
      From-SVN: r245733
      Jakub Jelinek committed
  23. 31 Jan, 2017 4 commits
    • Introduce C++ support in libcc1 · 8db29d88
      Extend libcc1's with an API for C++ support.
      
      Extend libcc1's C API to distinguish between integral types with the
      same width, as in C++.  Likewise for float types.
      
      Export small bits of functionality from the C++ front-end for use in
      libcc1.  Add support for the C++ front-end to look up names and
      addresses using a libcc1-registered binding oracle.  Add support for
      global friends.
      
      
      for  gcc/cp/ChangeLog
      
      	Introduce C++ support in libcc1.
      	* cp-tree.h (struct lang_identifier): Add oracle_looked_up.
      	(ansi_opname): Rename to...
      	(cp_operator_id): ... this.  Adjust all callers.
      	(ansi_assopname): Rename to...
      	(cp_assignment_operator_id): ... this.  Adjust all callers.
      	(cp_literal_operator_id): Declare.
      	(set_global_friend): Declare.
      	(is_global_friend): Declare.
      	(enum cp_oracle_request): New type.
      	(cp_binding_oracle_function): New type.
      	(cp_binding_oracle): Declare.
      	(cp_finish_injected_record_type): Declare.
      	* friend.c (global_friend): New var.
      	(set_global_friend): New fn.
      	(is_global_friend): New fn.
      	(is_friend): Call is_global_friend.
      	* name-lookup.c (cp_binding_oracle): New var.
      	(query_oracle): New fn.
      	(qualified_lookup_using_namespace): Call query_oracle.
      	(lookup_name_real_1): Likewise.
      	* parser.c (cp_literal_operator_id): Drop static.
      	* search.c (friend_accessible_p): Call is_global_friend.
      	* semantics.c (is_this_parameter): Accept a variable if the
      	binding oracle is enabled.
      
      for  include/ChangeLog
      
      	Introduce C++ support in libcc1.
      	* gcc-c-fe.def (int_type_v0): Rename from...
      	(int_type): ... this.  Introduce new version.
      	(float_type_v0): Rename from...
      	(float_type): ... this.  Introduce new version.
      	(char_type): New.
      	* gcc-c-interface.h (gcc_c_api_version): Add GCC_C_FE_VERSION_1.
      	(gcc_type_array): Move...
      	* gcc-interface.h: ... here.
      	* gcc-cp-fe.def: New.
      	* gcc-cp-interface.h: New.
      
      for  libcc1/ChangeLog
      
      	Introduce C++ support.
      	* Makefile.am (AM_CPPFLAGS): Move some -I flags to...
      	(CPPFLAGS_FOR_C_FAMILY, CPPFLAGS_FOR_C, CPPFLAGS_FOR_CXX): ...
      	new macros.
      	(plugin_LTLIBRARIES): Add libcp1plugin.la.
      	(BUILT_SOURCES, MOSTLYCLEANFILES): Add...
      	(cp-compiler-name.h): ... this.  New.
      	(c-compiler-name.h): Rename all over from...
      	(compiler-name.h): ... this.  Create it atomically.
      	(marshall_c_source, marshall_cxx_source): New macros.
      	(libcc1plugin_la_SOURCES): Rename plugin.cc to libcc1plugin.cc.
      	Add marshall_c_source expansion.
      	(libcc1plugin.lo_CPPFLAGS): New macro.
      	(libcp1plugin_la_LDFLAGS): Likewise.
      	(libcp1plugin_la_SOURCES): Likewise.
      	(libcp1plugin.lo_CPPFLAGS): Likewise.
      	(libcp1plugin_la_LIBADD): Likewise.
      	(libcp1plugin_la_DEPENDENCIES): Likewise.
      	(libcp1plugin_la_LINK): Likewise.
      	(libcc1_la_SOURCES): Added marshall_c_source and
      	marshall_cxx_source expansions.
      	* Makefile.in: Rebuild.
      	* compiler-name.h: Rename all over to...
      	* c-compiler-name.h: ... this.  Define C_COMPILER_NAME instead
      	of COMPILER_NAME.
      	* plugin.cc: Rename all over to...
      	* libcc1plugin.cc: ... this.  Include marshall-c.hh.
      	(address_rewriter): Drop cleaning up of VLA sizes.
      	(plugin_build_decl): Mark decls as external.
      	(plugin_tagbind): Propagate name to all variants.
      	(build_anonymous_node): New.
      	(plugin_build_record_type): Use it instead of make_node.
      	(plugin_build_union_type): Likewise.
      	(plugin_build_enum_type): Likewise.
      	(plugin_finish_record_or_union): Update all type variants.
      	(safe_lookup_builtin_type): New.
      	(plugin_int_check): Factor out of, and add checks to, ...
      	(plugin_int_type): ... this.  Rename to...
      	(plugin_int_type_v0): ... this.
      	(plugin_int_type): New interface, new implementation.
      	(plugin_char_type): New.
      	(plugin_float_type_v0): Rename from...
      	(plugin_float_type): ... this.  New interface, new implementation.
      	(plugin_init): Bump handshake version.
      	* libcc1.cc: Include marshall-c.hh.  Drop gcc-interface.h.
      	(call_binding_oracle): Rename to...
      	(c_call_binding_oracle): ... this, into anonymous namespace.
      	(call_symbol_address): Rename to...
      	(c_call_symbol_address): ... this, likewise.
      	(GCC_METHOD#): Move methods into cc1plugin::c:: namespace.
      	(libcc1::compiler::find): Refer to C_COMPILER_NAME.
      	(fork_exec): Bump to GCC_C_FE_VERSION_1.
      	(libcc1_compile): Prefix callbacks with c_.
      	(gcc_c_fe_context): Accept GCC_C_FE_VERSION_1.
      	* libcc1.sym: Export gcc_cp_fe_context.
      	* libcp1.cc: New, mostly copied and adjusted from libcc1.cc.
      	* libcp1plugin.cc: New, initially copied from libcc1plugin.cc.
      	* libcp1plugin.sym: New.
      	* marshall-c.hh: New.  Move C-specific types from...
      	* marshall.cc: ... this.
      	(cc1_plugin::marshall_array_start): New.
      	(cc1_plugin::marshall_array_elmts): New.
      	(cc1_plugin::marshall for gcc_type_array): Use the above.
      	(cc1_plugin::unmarshall_array_start): New.
      	(cc1_plugin::unmarshall_array_elmts): New.
      	(cc1_plugin::unmarshall for gcc_type_array): Use the above.
      	* marshall.hh: Declare the new array building blocks.
      	Drop C-specific unmarshall declarations.
      	* marshall-cp.hh: New.
      	* names.cc (GCC_METHOD#): Add LANG:: to method names.
      	(LANG): Define while including gcc-c-fe.def and gcc-cp-fe.def.
      	* names.hh: Include gcc-c-fe.def and gcc-cp-fe.def in the
      	corresponding namespaces.
      	* rpc.hh: Don't include marshall.hh.
      	[GCC_CP_INTERFACE_H] (argument_wrapper): Specialize for
      	gcc_vbase_array, gcc_cp_template_args, gcc_cp_function_args.
      
      From-SVN: r245051
      Alexandre Oliva committed
    • libcc1 base API: bump set_arguments; add set_driver_filename, set_triplet_regexp · 5d1b2443
      for  include/ChangeLog
      
      	* gcc-interface.h (enum gcc_base_api_version): Update comment
      	for GCC_FE_VERSION_1.
      	(struct gcc_base_vtable): Rename set_arguments to
      	set_arguments_v0.  Add set_arguments, set_triplet_regexp and
      	set_driver_filename.
      
      for  libcc1/ChangeLog
      
      	* libcc1.cc (libcc1): Add class compiler with field compilerp,
      	class compiler_triplet_regexp and class
      	compiler_driver_filename.
      	(libcc1::libcc1): Initialize compilerp.
      	(libcc1::~libcc1): Delete compilerp.
      	(libcc1::compiler::find, libcc1::compiler_triplet_regexp::find)
      	(libcc1::compiler_driver_filename::find): New methods.
      	(libcc1_set_arguments): Remove parameter triplet_regexp.
      	(libcc1_set_triplet_regexp, libcc1_set_driver_filename)
      	(libcc1_set_arguments_v0): New functions.
      	(vtable): Use libcc1_set_arguments_v0, add
      	libcc1_set_arguments, libcc1_set_triplet_regexp and
      	libcc1_set_driver_filename.
      
      From-SVN: r245049
      Jan Kratochvil committed
    • libcc1 base API: add set_verbose and new version of compile · 3b5c1072
      for  include/ChangeLog
      
      	* gcc-interface.h (enum gcc_base_api_version): Add comment to
      	GCC_FE_VERSION_1.
      	(struct gcc_base_vtable): Rename compile to compile_v0.
      	Update comment for compile.  New methods set_verbose and
      	compile.
      
      for  libcc1/ChangeLog
      
      	* libcc1.cc: Include intl.h.
      	(struct libcc1): Add field verbose.
      	(libcc1::libcc1): Initialize it.
      	(libcc1_set_verbose): New function.
      	(libcc1_set_arguments): Print messages for VERBOSE.
      	(libcc1_compile): Remove parameter verbose.  Use VERBOSE from
      	SELF.
      	(libcc1_compile_v0): New function.
      	(vtable): Use libcc1_compile_v0 and add libcc1_compile and
      	libcc1_set_verbose.
      
      From-SVN: r245048
      Jan Kratochvil committed
    • libcc1 base API version bump · 023721aa
      for  include/ChangeLog
      
      	* gcc-interface.h (enum gcc_base_api_version): Add
      	GCC_FE_VERSION_1.
      
      for  libcc1/ChangeLog
      
      	* libcc1.cc (vtable): Update to GCC_FE_VERSION_1.
      	(gcc_c_fe_context): Accept also GCC_FE_VERSION_1.
      
      From-SVN: r245047
      Jan Kratochvil committed
  24. 27 Jan, 2017 1 commit
    • [brigfe] Small fixes · f6a24a94
      2017-01-27  Pekka Jaaskelainen  <pekka.jaaskelainen@parmance.com>
      
      	* configure.ac: Moved the white list of enabling BRIG FE to
      	libhsail-rt/configure.tgt.  
      	* configure: Regenerated.
      	* MAINTAINERS: Updated maintainers for BRIG FE and libhsail-rt.
      
      gcc/
      	* builtin-types.def: Use unsigned_char_type_node for BT_UINT8.  Use
      	uint16_type_node for BT_UINT16.
      
      gcc/brig/
      	* config-lang.in: Removed stale target-libbrig reference.
      
      libhsail-rt/
      	* configure.tgt: Moved the white list of supported targets here
      	from configure.ac.  Added i[3456789]86-*-linux* as a supported env
      	for the BRIG FE.
      	* README: Added a proper description of what libhsail-rt is.
      
      From-SVN: r244978
      Martin Jambor committed
  25. 24 Jan, 2017 1 commit
    • Brig front-end · 5fd1486c
      2017-01-24  Pekka Jääskeläinen <pekka@parmance.com>
      	    Martin Jambor  <mjambor@suse.cz>
      
      	* Makefile.def (target_modules): Added libhsail-rt.
      	(languages): Added language brig.
      	* Makefile.in: Regenerated.
      	* configure.ac (TOPLEVEL_CONFIGURE_ARGUMENTS): Added
      	tgarget-libhsail-rt.  Make brig unsupported on untested architectures.
      	* configure: Regenerated.
      
      gcc/
      	* brig-builtins.def: New file.
      	* builtins.def (DEF_HSAIL_BUILTIN): New macro.
      	(DEF_HSAIL_ATOMIC_BUILTIN): Likewise.
      	(DEF_HSAIL_SAT_BUILTIN): Likewise.
      	(DEF_HSAIL_INTR_BUILTIN): Likewise.
      	(DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN): Likewise.
      	* builtin-types.def (BT_INT8): New.
      	(BT_INT16): Likewise.
      	(BT_UINT8): Likewise.
      	(BT_UINT16): Likewise.
      	(BT_FN_ULONG): Likewise.
      	(BT_FN_UINT_INT): Likewise.
      	(BT_FN_UINT_ULONG): Likewise.
      	(BT_FN_UINT_LONG): Likewise.
      	(BT_FN_UINT_PTR): Likewise.
      	(BT_FN_ULONG_PTR): Likewise.
      	(BT_FN_INT8_FLOAT): Likewise.
      	(BT_FN_INT16_FLOAT): Likewise.
      	(BT_FN_UINT32_FLOAT): Likewise.
      	(BT_FN_UINT16_FLOAT): Likewise.
      	(BT_FN_UINT8_FLOAT): Likewise.
      	(BT_FN_UINT64_FLOAT): Likewise.
      	(BT_FN_UINT16_UINT32): Likewise.
      	(BT_FN_UINT32_UINT16): Likewise.
      	(BT_FN_UINT16_UINT16_UINT16): Likewise.
      	(BT_FN_INT_PTR_INT): Likewise.
      	(BT_FN_UINT_PTR_UINT): Likewise.
      	(BT_FN_LONG_PTR_LONG): Likewise.
      	(BT_FN_ULONG_PTR_ULONG): Likewise.
      	(BT_FN_VOID_UINT64_UINT64): Likewise.
      	(BT_FN_UINT8_UINT8_UINT8): Likewise.
      	(BT_FN_INT8_INT8_INT8): Likewise.
      	(BT_FN_INT16_INT16_INT16): Likewise.
      	(BT_FN_INT_INT_INT): Likewise.
      	(BT_FN_UINT_FLOAT_UINT): Likewise.
      	(BT_FN_FLOAT_UINT_UINT): Likewise.
      	(BT_FN_ULONG_UINT_UINT): Likewise.
      	(BT_FN_ULONG_UINT_PTR): Likewise.
      	(BT_FN_ULONG_ULONG_ULONG): Likewise.
      	(BT_FN_UINT_UINT_UINT): Likewise.
      	(BT_FN_VOID_UINT_PTR): Likewise.
      	(BT_FN_UINT_UINT_PTR: Likewise.
      	(BT_FN_UINT32_UINT64_PTR): Likewise.
      	(BT_FN_INT_INT_UINT_UINT): Likewise.
      	(BT_FN_UINT_UINT_UINT_UINT): Likewise.
      	(BT_FN_UINT_UINT_UINT_PTR): Likewise.
      	(BT_FN_UINT_ULONG_ULONG_UINT): Likewise.
      	(BT_FN_ULONG_ULONG_ULONG_ULONG): Likewise.
      	(BT_FN_LONG_LONG_UINT_UINT): Likewise.
      	(BT_FN_ULONG_ULONG_UINT_UINT): Likewise.
      	(BT_FN_VOID_UINT32_UINT64_PTR): Likewise.
      	(BT_FN_VOID_UINT32_UINT32_PTR): Likewise.
      	(BT_FN_UINT_UINT_UINT_UINT_UINT): Likewise.
      	(BT_FN_UINT_FLOAT_FLOAT_FLOAT_FLOAT): Likewise.
      	(BT_FN_ULONG_ULONG_ULONG_UINT_UINT): Likewise.
      	* doc/frontends.texi: List BRIG FE.
      	* doc/install.texi (Testing): Add BRIG tesring requirements.
      	* doc/invoke.texi (Overall Options): Mention BRIG.
      	* doc/standards.texi (Standards): Doucment BRIG HSA version.
      
      gcc/brig/
      
      	* Make-lang.in: New file.
      	* brig-builtins.h: Likewise.
      	* brig-c.h: Likewise.
      	* brig-lang.c: Likewise.
      	* brigspec.c: Likewise.
      	* config-lang.in: Likewise.
      	* lang-specs.h: Likewise.
      	* lang.opt: Likewise.
      	* brigfrontend/brig-arg-block-handler.cc: Likewise.
      	* brigfrontend/brig-atomic-inst-handler.cc: Likewise.
      	* brigfrontend/brig-basic-inst-handler.cc: Likewise.
      	* brigfrontend/brig-branch-inst-handler.cc: Likewise.
      	* brigfrontend/brig-cmp-inst-handler.cc: Likewise.
      	* brigfrontend/brig-code-entry-handler.cc: Likewise.
      	* brigfrontend/brig-code-entry-handler.h: Likewise.
      	* brigfrontend/brig-comment-handler.cc: Likewise.
      	* brigfrontend/brig-control-handler.cc: Likewise.
      	* brigfrontend/brig-copy-move-inst-handler.cc: Likewise.
      	* brigfrontend/brig-cvt-inst-handler.cc: Likewise.
      	* brigfrontend/brig-fbarrier-handler.cc: Likewise.
      	* brigfrontend/brig-function-handler.cc: Likewise.
      	* brigfrontend/brig-function.cc: Likewise.
      	* brigfrontend/brig-function.h: Likewise.
      	* brigfrontend/brig-inst-mod-handler.cc: Likewise.
      	* brigfrontend/brig-label-handler.cc: Likewise.
      	* brigfrontend/brig-lane-inst-handler.cc: Likewise.
      	* brigfrontend/brig-machine.c: Likewise.
      	* brigfrontend/brig-machine.h: Likewise.
      	* brigfrontend/brig-mem-inst-handler.cc: Likewise.
      	* brigfrontend/brig-module-handler.cc: Likewise.
      	* brigfrontend/brig-queue-inst-handler.cc: Likewise.
      	* brigfrontend/brig-seg-inst-handler.cc: Likewise.
      	* brigfrontend/brig-signal-inst-handler.cc: Likewise.
      	* brigfrontend/brig-to-generic.cc: Likewise.
      	* brigfrontend/brig-to-generic.h: Likewise.
      	* brigfrontend/brig-util.cc: Likewise.
      	* brigfrontend/brig-util.h: Likewise.
      	* brigfrontend/brig-variable-handler.cc: Likewise.
      	* brigfrontend/phsa.h: Likewise.
      
      
      gcc/testsuite/
      
      	* lib/brig-dg.exp: New file.
      	* lib/brig.exp: Likewise.
      	* brig.dg/README: Likewise.
      	* brig.dg/dg.exp: Likewise.
      	* brig.dg/test/gimple/alloca.hsail: Likewise.
      	* brig.dg/test/gimple/atomics.hsail: Likewise.
      	* brig.dg/test/gimple/branches.hsail: Likewise.
      	* brig.dg/test/gimple/fbarrier.hsail: Likewise.
      	* brig.dg/test/gimple/function_calls.hsail: Likewise.
      	* brig.dg/test/gimple/kernarg.hsail: Likewise.
      	* brig.dg/test/gimple/mem.hsail: Likewise.
      	* brig.dg/test/gimple/mulhi.hsail: Likewise.
      	* brig.dg/test/gimple/packed.hsail: Likewise.
      	* brig.dg/test/gimple/smoke_test.hsail: Likewise.
      	* brig.dg/test/gimple/variables.hsail: Likewise.
      	* brig.dg/test/gimple/vector.hsail: Likewise.
      
      include/
      
      	* hsa.h: Moved here from libgomp/plugin/hsa.h.
      
      libgomp/
      
      	* plugin/hsa.h: Moved to top level include.
      	* plugin/plugin-hsa.c: Chanfgd include of hsa.h accordingly.
      
      libhsail-rt/
      
      	* Makefile.am: New file.
      	* target-config.h.in: Likewise.
      	* configure.ac: Likewise.
      	* configure: Likewise.
      	* config.h.in: Likewise.
      	* aclocal.m4: Likewise.
      	* README: Likewise.
      	* Makefile.in: Likewise.
      	* include/internal/fibers.h: Likewise.
      	* include/internal/phsa-queue-interface.h: Likewise.
      	* include/internal/phsa-rt.h: Likewise.
      	* include/internal/workitems.h: Likewise.
      	* rt/arithmetic.c: Likewise.
      	* rt/atomics.c: Likewise.
      	* rt/bitstring.c: Likewise.
      	* rt/fbarrier.c: Likewise.
      	* rt/fibers.c: Likewise.
      	* rt/fp16.c: Likewise.
      	* rt/misc.c: Likewise.
      	* rt/multimedia.c: Likewise.
      	* rt/queue.c: Likewise.
      	* rt/sat_arithmetic.c: Likewise.
      	* rt/segment.c: Likewise.
      	* rt/workitems.c: Likewise.
      
      
      Co-Authored-By: Martin Jambor <mjambor@suse.cz>
      
      From-SVN: r244867
      Pekka Jääskeläinen committed
  26. 04 Jan, 2017 2 commits
  27. 21 Dec, 2016 1 commit
  28. 16 Nov, 2016 1 commit
    • libiberty: Add Rust symbol demangling. · 10d48c59
      Adds Rust symbol demangler. Rust mangles symbols using GNU_V3 style,
      adding a hash and various special character subtitutions. This adds
      a new rust style to cplus_demangle and adds 3 helper functions
      rust_demangle, rust_demangle_sym and rust_is_mangled.
      
      rust-demangle.c was written by David. Mark did the code formatting to
      GNU style and integration into the gcc/libiberty build system and
      testsuite.
      
      include/ChangeLog:
      
      2016-11-03  David Tolnay <dtolnay@gmail.com>
                 Mark Wielaard  <mark@klomp.org>
      
             * demangle.h (DMGL_RUST): New macro.
             (DMGL_STYLE_MASK): Add DMGL_RUST.
             (demangling_styles): Add dlang_rust.
             (RUST_DEMANGLING_STYLE_STRING): New macro.
             (RUST_DEMANGLING): New macro.
             (rust_demangle): New prototype.
             (rust_is_mangled): Likewise.
             (rust_demangle_sym): Likewise.
      
      libiberty/ChangeLog:
      
      2016-11-03  David Tolnay <dtolnay@gmail.com>
                 Mark Wielaard  <mark@klomp.org>
      
             * Makefile.in (CFILES): Add rust-demangle.c.
             (REQUIRED_OFILES): Add rust-demangle.o.
             * cplus-dem.c (libiberty_demanglers): Add rust_demangling case.
             (cplus_demangle): Handle RUST_DEMANGLING.
             (rust_demangle): New function.
             * rust-demangle.c: New file.
             * testsuite/Makefile.in (really-check): Add check-rust-demangle.
             (check-rust-demangle): New rule.
             * testsuite/rust-demangle-expected: New file.
      
      Co-Authored-By: Mark Wielaard <mark@klomp.org>
      
      From-SVN: r242524
      David Tolnay committed
  29. 07 Nov, 2016 1 commit
    • Implement P0012R1, Make exception specifications part of the type system. · 51dc6603
      gcc/cp/
      	* cp-tree.h (enum tsubst_flags): Add tf_fndecl_type.
      	(flag_noexcept_type, ce_type): New.
      	* call.c (build_conv): Add ck_fnptr.
      	(enum conversion_kind): Change ck_tsafe to ck_fnptr.
      	(convert_like_real): Likewise.
      	(standard_conversion): Likewise.  Allow function pointer
      	conversions for pointers to member functions.
      	(reference_compatible_p): Allow function pointer conversions.
      	(direct_reference_binding): Likewise.
      	(reference_binding): Reference-compatible is no longer a subset of
      	reference-related.
      	(is_subseq): Also strip ck_lvalue after next_conversion.
      	* class.c (instantiate_type): Check fnptr_conv_p.
      	(resolve_address_of_overloaded_function): Likewise.
      	* cvt.c (can_convert_tx_safety): Now static.
      	(noexcept_conv_p, fnptr_conv_p, strip_fnptr_conv): New.
      	* decl.c (flag_noexcept_type): Define.
      	(cxx_init_decl_processing): Set it.
      	(bad_specifiers): Check it.
      	(grokdeclarator) [cdk_function]: Add exception-spec to type here.
      	* lambda.c (maybe_add_lambda_conv_op): Add exception-spec to
      	returned pointer.
      	* mangle.c (struct globals): Add need_cxx1z_warning.
      	(mangle_decl): Check it.
      	(write_exception_spec): New.
      	(write_function_type): Call it.
      	(canonicalize_for_substitution): Handle exception spec.
      	(write_type): Likewise.
      	(write_encoding): Set processing_template_decl across mangling of
      	partially-instantiated type.
      	* pt.c (determine_specialization): Pass tf_fndecl_type.
      	(tsubst_decl, fn_type_unification): Likewise.
      	(tsubst): Strip tf_fndecl_type, pass it to
      	tsubst_exception_specification.
      	(convert_nontype_argument_function): Handle function pointer
      	conversion.
      	(convert_nontype_argument): Likewise.
      	(unify, for_each_template_parm_r): Walk into noexcept-specifier.
      	* rtti.c (ptr_initializer): Encode noexcept.
      	* tree.c (canonical_eh_spec): New.
      	(build_exception_variant): Use it.
      	* typeck.c (composite_pointer_type): Handle fnptr conversion.
      	(comp_except_specs): Compare canonical EH specs.
      	(structural_comptypes): Call it.
      gcc/c-family/
      	* c.opt (Wc++1z-compat): New.
      	* c-cppbuiltin.c (c_cpp_builtins): Add __cpp_noexcept_function_type.
      libstdc++-v3/
      	* include/bits/c++config (_GLIBCXX_NOEXCEPT_PARM)
      	(_GLIBCXX_NOEXCEPT_QUAL): New.
      	* include/std/type_traits (is_function): Use them.
      	* libsubc++/new (launder): Likewise.
      	* libsupc++/cxxabi.h (__pbase_type_info::__masks): Add
      	__noexcept_mask.
      	* libsupc++/pbase_type_info.cc (__do_catch): Handle function
      	pointer conversion.
      libiberty/
      	* cp-demangle.c (is_fnqual_component_type): New.
      	(d_encoding, d_print_comp_inner, d_print_mod_list): Use it.
      	(FNQUAL_COMPONENT_CASE): New.
      	(d_make_comp, has_return_type, d_print_comp_inner)
      	(d_print_function_type): Use it.
      	(next_is_type_qual): New.
      	(d_cv_qualifiers, d_print_mod): Handle noexcept and throw-spec.
      include/
      	* demangle.h (enum demangle_component_type): Add
      	DEMANGLE_COMPONENT_NOEXCEPT, DEMANGLE_COMPONENT_THROW_SPEC.
      
      From-SVN: r241944
      Jason Merrill committed
  30. 17 Oct, 2016 1 commit
    • dwarf2.h (enum dwarf_calling_convention): Add new DWARF5 calling convention codes. · 558c7db0
      	* dwarf2.h (enum dwarf_calling_convention): Add new DWARF5
      	calling convention codes.
      	(enum dwarf_line_number_content_type): New.
      	(enum dwarf_location_list_entry_type): Add DWARF5 DW_LLE_*
      	codes.
      	(enum dwarf_source_language): Add new DWARF5 DW_LANG_* codes.
      	(enum dwarf_macro_record_type): Add DWARF5 DW_MACRO_* codes.
      	(enum dwarf_name_index_attribute): New.
      	(enum dwarf_range_list_entry): New.
      	(enum dwarf_unit_type): New.
      	* dwarf2.def: Add new DWARF5 DW_TAG_*, DW_FORM_*, DW_AT_*,
      	DW_OP_* and DW_ATE_* entries.
      
      From-SVN: r241272
      Jakub Jelinek committed
  31. 14 Oct, 2016 2 commits
    • FINAL/OVERRIDE: Define to empty on g++ < 4.7 · 30cd7c74
      final/override were only implemented in g++ 4.7.
      
      include/ChangeLog
      2016-10-14  Pedro Alves  <palves@redhat.com>
      
      	* ansidecl.h [__cplusplus >= 201103 && GCC_VERSION < 4007] (FINAL,
      	OVERRIDE): Define as empty.
      	[__cplusplus < 201103 && GCC_VERSION < 4007] (FINAL): Define as
      	__final.
      	[__cplusplus < 201103 && GCC_VERSION >= 4007] (OVERRIDE): Define as
      	empty.
      
      From-SVN: r241167
      Pedro Alves committed
    • Move OVERRIDE/FINAL from gcc/coretypes.h to include/ansidecl.h · 2121e959
      So that GDB and other projects that share the top level can use them.
      
      Bootstrapped with all default languages + jit on x86-64 Fedora 23.
      
      gcc/ChangeLog:
      2016-10-14  Pedro Alves  <palves@redhat.com>
      
      	* coretypes.h (OVERRIDE, FINAL): Delete, moved to
      	include/ansidecl.h.
      
      include/ChangeLog:
      2016-10-14  Pedro Alves  <palves@redhat.com>
      
      	* ansidecl.h (GCC_FINAL): Delete.
      	(OVERRIDE, FINAL): New, moved from gcc/coretypes.h.
      
      From-SVN: r241166
      Pedro Alves committed
  32. 15 Aug, 2016 1 commit
    • dwarf2.def (DW_AT_string_length_bit_size, [...]): New attributes. · 980bd537
      	* dwarf2.def (DW_AT_string_length_bit_size,
      	DW_AT_string_length_byte_size): New attributes.
      
      	* dwarf2out.c (struct checksum_attributes): Add
      	at_string_length_bit_size and at_string_length_byte_size fields.
      	(collect_checksum_attributes): Handle DW_AT_string_length_bit_size
      	and DW_AT_string_length_byte_size.
      	(die_checksum_ordered): Handle at_string_length_bit_size and
      	at_string_length_byte_size.
      	(gen_array_type_die): For dwarf_version >= 5 emit
      	DW_AT_string_length_byte_size instead of DW_AT_byte_size.
      	(adjust_string_types): For dwarf_version >= 5 remove
      	DW_AT_string_length_byte_size instead of DW_AT_byte_size.
      	(resolve_addr): Likewise.
      
      From-SVN: r239470
      Jakub Jelinek committed