1. 22 Aug, 2017 7 commits
    • revert: asan.exp: Switch on *.cc tests. · 7f1bf27a
      2017-08-22  Richard Biener  <rguenther@suse.de>
      
      	Revert
      	2017-08-09  Slava Barinov  <v.barinov@samsung.com>
      
      	* g++.dg/asan/asan.exp: Switch on *.cc tests.
      
      From-SVN: r251265
      Richard Biener committed
    • tree-cfg.c (gimple_split_edge): Avoid reallocating target PHI nodes. · 2df8ab3d
      2017-08-22  Richard Biener  <rguenther@suse.de>
      
      	* tree-cfg.c (gimple_split_edge): Avoid reallocating target
      	PHI nodes.
      
      From-SVN: r251264
      Richard Biener committed
    • 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
    • * wide-int.h (hwi_with_prec::hwi_with_prec): Sign extend. · 4ea9e1a5
      From-SVN: r251260
      Aldy Hernandez committed
    • re PR target/81910 ([avr] ICE with "address" attribute on type) · db995e10
      gcc/
      	PR target/81910
      	* config/avr/avr.c (avr_handle_addr_attribute): Early return if
      	not VAR_P. Filter attribute warnings with OPT_Wattributes.
      	(avr_attribute_table) <io, io_low, address>: Initialize
      	.decl_required with true.
      
      From-SVN: r251256
      Georg-Johann Lay committed
    • re PR fortran/81296 (derived type I/o problem) · bef016bf
      2017-08-21  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	PR fortran/81296
      	* trans-io.c (get_dtio_proc): Add check for format label and set
      	formatted flag accordingly. Reorganize the code a little.
      
      	* gfortran.dg/dtio_12.f90: Update test.
      
      From-SVN: r251254
      Jerry DeLisle committed
    • Daily bump. · 4f1aa9fb
      From-SVN: r251253
      GCC Administrator committed
  2. 21 Aug, 2017 24 commits
    • rs6000-cpus.def (-mvsx-scalar-float): Delete undocumented debugging options. · 56135456
      2017-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
      
      	* config/rs6000/rs6000-cpus.def (-mvsx-scalar-float): Delete
      	undocumented debugging options.
      	(-mvsx-scalar-double): Likewise.
      	(-mallow-df-permute): Likewise.
      	(-mvectorize-builtins): Likewise.
      	* config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok):
      	Likewise.
      	(rs6000_builtin_vectorized_function): Likewise.
      	(rs6000_builtin_md_vectorized_function): Likewise.
      	(rs6000_opt_vars): Likewise.
      
      From-SVN: r251248
      Michael Meissner committed
    • search.c (lookup_field_r): Remove obsolete code for type-named field in PoD. · 3d9850f4
      	* search.c (lookup_field_r): Remove obsolete code for type-named
      	field in PoD.
      
      From-SVN: r251243
      Nathan Sidwell committed
    • search.c (lookup_field_1): Assert TYPE is a class and VFIELD isn't special. · 8e063904
      	* search.c (lookup_field_1): Assert TYPE is a class and VFIELD
      	isn't special.
      	(lookup_field_fuzzy_info::fuzzy_lookup_fnfields): Delete.
      	(lookup_field_fuzzy_r): Adjust.
      
      From-SVN: r251241
      Nathan Sidwell committed
    • pr81899.C: Fix c++03. · 57cea2b3
      	* g++.dg/template/pr81899.C: Fix c++03.
      	* g++.dg/debug/debug9.C: Add -fno-reorder-blocks-and-partition"
      
      From-SVN: r251240
      Nathan Sidwell committed
    • C: use full locations within c_parser_expr_list's vec<location_t> · 7f204c0f
      The previous patch uncovered a bug in how c_parser_expr_list builds the
      vec<location_t>: it was only using the location of the first token
      within each assignment-expression in the expr-list.
      
      This shows up in e.g. this -Wformat warning, where only part of the
      2nd param is underlined:
      
         printf("hello %i", (long)0);
                       ~^   ~
                       %li
      
      This patch fixes c_parser_expr_list to use the full range of
      each assignment-expression in the list for the vec<location_t>, so
      that for the above we print:
      
         printf("hello %i", (long)0);
                       ~^   ~~~~~~~
                       %li
      
      gcc/c/ChangeLog:
      	* c-parser.c (c_parser_expr_list): Use c_expr::get_location ()
      	rather than peeking the location of the first token.
      	* c-tree.h (c_expr::get_location): New method.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/format/diagnostic-ranges.c (test_mismatching_types):
      	Update expected result to show all of "(long)0" being underlined.
      	* gcc.dg/plugin/diagnostic-test-string-literals-1.c
      	(test_multitoken_macro): Update expected underlining.
      
      From-SVN: r251239
      David Malcolm committed
    • c-family/c/c++: pass optional vec<location_t> to c-format.c · 2f687306
      This patch passes along the vec<location_t> of argument locations
      at a callsite from the C frontend to check_function_arguments and
      from there to c-format.c, so that we can underline the pertinent
      argument to mismatched format codes even for tree codes like decls
      and constants which lack a location_t for their usage sites.
      
      This takes e.g.:
      
          printf("hello %i %i %i ", foo, bar, baz);
                           ~^
                           %s
      
      to:
      
          printf("hello %i %i %i ", foo, bar, baz);
                           ~^            ~~~
                           %s
      
      which is useful for cases where there's more than one variadic argument.
      
      gcc/c-family/ChangeLog:
      	* c-common.c (check_function_arguments): Add "arglogs" param; pass
      	it to check_function_format.
      	* c-common.h (check_function_arguments): Add vec<location_t> *
      	param.
      	(check_function_format): Likewise.
      	* c-format.c (struct format_check_context): Add field "arglocs".
      	(check_function_format): Add param "arglocs"; pass it to
      	check_format_info.
      	(check_format_info):  Add param "arglocs"; use it to initialize
      	new field of format_ctx.
      	(check_format_arg): Pass format_ctx->arglocs to new param of
      	check_format_info_main.
      	(class argument_parser): New field "arglocs".
      	(argument_parser::argument_parser): Add "arglocs_" param and use
      	it to initialize new field.
      	(argument_parser::check_argument_type): Pass new arglocs field to
      	check_format_types.
      	(check_format_info_main): Add param "arglocs", and use it when
      	constructing arg_parser.
      	(check_format_types): Add param "arglocs"; use it if non-NULL when
      	!EXPR_HAS_LOCATION (cur_param) to get at location information.
      
      gcc/c/ChangeLog:
      	* c-typeck.c (build_function_call_vec): Pass arg_loc to call
      	to check_function_arguments.
      
      gcc/cp/ChangeLog:
      	* call.c (build_over_call): Pass NULL for new parameter to
      	check_function_arguments.
      	* typeck.c (cp_build_function_call_vec): Likewise.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/format/diagnostic-ranges.c: Update expected results
      	to show underlining of all pertinent params.
      	* gcc.dg/format/pr72858.c: Likewise.
      
      From-SVN: r251238
      David Malcolm committed
    • re PR target/46091 (missed optimization: x86 bt/btc/bts instructions) · 453773df
      	PR target/46091
      	* config/i386/i386.md (*btsq_imm): Rename from *btsq.
      	(*btrq_imm): Rename from *btrq.
      	(*btcq_imm): Rename from *btcq.
      	(btsc): New code attribute.
      	(*<btsc><mode>): New insn pattern.
      	(*btr<mode>): Ditto.
      	(*<btsc><mode>_mask): New insn_and_split pattern.
      	(*btr<mode>_mask): Ditto.
      
      testsuite/ChangeLog:
      
      	PR target/46091
      	* gcc.target/i386/pr46091-4.c: New test.
      	* gcc.target/i386/pr46091-4a.c: Ditto.
      	* gcc.target/i386/pr46091-5.c: Ditto.
      	* gcc.target/i386/pr46091-5a.c: Ditto.
      
      From-SVN: r251235
      Uros Bizjak committed
    • PR libstdc++/81912 make std::__iterator_category constexpr · 2c0378f4
      	PR libstdc++/81912
      	* include/bits/stl_iterator_base_types.h (__iterator_category): Add
      	constexpr for C++11 and later.
      	* testsuite/24_iterators/container_access.cc: Add target selector.
      	* testsuite/24_iterators/range_access.cc: Fix clause number in
      	comment.
      	* testsuite/24_iterators/range_access_cpp14.cc: Likewise.
      	* testsuite/24_iterators/range_access_cpp17.cc: New.
      
      From-SVN: r251234
      Jonathan Wakely committed
    • Simplify pad_below implementation · b66fd4fc
      This patch simplifies the alignment calculations in pad_below.
      The first arm of the "if" was:
      
      - taking GET_MODE_BITSIZE (always equal to GET_MODE_SIZE * BITS_PER_UNIT),
      - rounding up to the next multiple of PARM_BOUNDARY
      - converting bits to bytes and
      - subtracting the GET_MODE_SIZE
      
      so was in effect calculating the number of bytes needed to round
      GET_MODE_SIZE up to (PARM_BOUNDARY / BITS_PER_UNIT).  That can be
      done more directly as -size & (align - 1), which is easier to
      convert to variable-sized modes.
      
      2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* function.c (pad_below): Simplify padding calculation.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r251233
      Richard Sandiford committed
    • Remove the frame size argument from function_prologue/epilogue · 42776416
      Later patches will add support for frame sizes that are a run-time
      invariant but not a compile-time constant.  This then raised the
      question of whether the frame size argument to the function_prologue/
      epilogue hooks should be updated accordingly.
      
      It turned out that only two targets actually used this argument, and
      even they got other frame-related information from the cached machine
      structure.  This patch therefore removes the argument and makes the two
      targets use get_frame_size () instead.
      
      2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* target.def (function_prologue): Remove frame size argument.
      	(function_epilogue): Likewise.
      	* doc/tm.texi: Regenerate.
      	* final.c (final_start_function): Update call to function_prologue.
      	(final_end_function): Update call to function_epilogue.
      	(default_function_pro_epilogue): Remove frame size argument.
      	* output.h (default_function_pro_epilogue): Likewise.
      	* config/arm/arm.c (arm_output_function_epilogue): Likewise.
      	(arm_output_function_prologue): Likewise.
      	* config/frv/frv.c (frv_function_prologue): Likewise.
      	(frv_function_epilogue): Likewise.
      	* config/i386/i386.c (ix86_output_function_epilogue): Likewise.
      	* config/ia64/ia64.c (ia64_output_function_prologue): Likewise.
      	(ia64_output_function_epilogue): Likewise.
      	* config/m32r/m32r.c (m32r_output_function_prologue): Likewise.
      	(m32r_output_function_epilogue): Likewise.
      	* config/microblaze/microblaze.c (microblaze_function_prologue)
      	(microblaze_function_epilogue): Likewise.
      	* config/mips/mips.c (mips_output_function_prologue): Likewise.
      	(mips_output_function_epilogue): Likewise.
      	* config/mmix/mmix.c (mmix_target_asm_function_prologue): Likewise.
      	(mmix_target_asm_function_epilogue): Likewise.
      	* config/msp430/msp430.c (msp430_start_function): Likewise.
      	* config/nds32/nds32.c (nds32_asm_function_prologue): Likewise.
      	(nds32_asm_function_epilogue): Likewise.
      	* config/nios2/nios2.c (nios2_asm_function_prologue): Likewise.
      	* config/pa/pa.c (pa_output_function_prologue): Likewise.
      	(pa_output_function_epilogue): Likewise.
      	* config/powerpcspe/powerpcspe.c (rs6000_output_function_prologue)
      	(rs6000_output_function_epilogue): Likewise.
      	* config/rl78/rl78.c (rl78_start_function): Likewise.
      	* config/rs6000/rs6000.c (rs6000_output_function_prologue): Likewise.
      	(rs6000_output_function_epilogue): Likewise.
      	* config/rx/rx.c (rx_output_function_prologue): Likewise.
      	* config/sh/sh.c (sh_output_function_epilogue): Likewise.
      	* config/sparc/sparc.c (sparc_asm_function_prologue): Likewise.
      	(sparc_asm_function_epilogue): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r251232
      Richard Sandiford committed
    • Add a type_has_mode_precision_p helper function · 2be65d9e
      ...to replace instances of:
      
          TYPE_PRECISION (t) == GET_MODE_PRECISION (TYPE_MODE (t))
      
      These conditions would need to be rewritten with variable-sized
      modes anyway.
      
      2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* tree.h (type_has_mode_precision_p): New function.
      	* convert.c (convert_to_integer_1): Use it.
      	* expr.c (expand_expr_real_2): Likewise.
      	(expand_expr_real_1): Likewise.
      	* fold-const.c (fold_single_bit_test_into_sign_test): Likewise.
      	* match.pd: Likewise.
      	* tree-ssa-forwprop.c (simplify_rotate): Likewise.
      	* tree-ssa-math-opts.c (convert_mult_to_fma): Likewise.
      	* tree-tailcall.c (process_assignment): Likewise.
      	* tree-vect-loop.c (vectorizable_reduction): Likewise.
      	* tree-vect-patterns.c (vect_recog_vector_vector_shift_pattern)
      	(vect_recog_mult_pattern, vect_recog_divmod_pattern): Likewise.
      	* tree-vect-stmts.c (vectorizable_conversion): Likewise.
      	(vectorizable_assignment): Likewise.
      	(vectorizable_shift): Likewise.
      	(vectorizable_operation): Likewise.
      	* tree-vrp.c (register_edge_assert_for_2): Likewise.
      
      From-SVN: r251231
      Richard Sandiford committed
    • This patch simplifies pow (C, x) into exp (x * C1) if C > 0, C1 = log (C). · e83fe013
      Do this only for fast-math as accuracy is reduced.  This is much faster
      since pow is more complex than exp.
      
          gcc/
      	* match.pd: Add pow (C, x) simplification
      
      From-SVN: r251230
      Wilco Dijkstra committed
    • * de.po: Update. · 13c6f12c
      From-SVN: r251228
      Joseph Myers committed
    • re PR c++/81899 (ICE: Segmentation fault) · 5ec1701e
      	PR c++/81899
      	* pt.c (instantiate_class_template_1):
      	BOUND_TEMPLATE_TEMPLATE_PARM is never friend-injected.
      
      	PR c++/81899
      	* g++.dg/template/pr81899.C: New.
      
      From-SVN: r251227
      Nathan Sidwell committed
    • re PR tree-optimization/81900 (GCC trunk miscompiles Perl / __sigsetjmp issue) · 404938ed
      2017-08-21  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/81900
      	* tree-ssa-pre.c (compute_antic_aux): Properly compute changed
      	for blocks with abnormal predecessors.
      	(compute_antic): Do not set visited flag prematurely.
      
      	* gcc.dg/torture/pr81900.c: New testcase.
      
      From-SVN: r251226
      Richard Biener committed
    • re PR target/79883 (avr i18n: untranslated "interrupt" or "signal") · 26b14dd9
      	PR target/79883
      	* config/avr/avr.c (avr_set_current_function): Typo in diagnostic.
      
      From-SVN: r251223
      Georg-Johann Lay committed
    • Tabify 2017-08-21 Richard Biener <rguenther@suse.de> entry · 6bda97c0
      From-SVN: r251222
      Nathan Sidwell committed
    • Move vector_type_mode to tree.c · c3496067
      ...so that it's possible to use TYPE_MODE in tree.h.
      
      2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* stor-layout.h (vector_type_mode): Move to...
      	* tree.h (vector_type_mode): ...here.
      	* stor-layout.c (vector_type_mode): Move to...
      	* tree.c (vector_type_mode): ...here.  Include rtl.h and regs.h.
      
      From-SVN: r251221
      Richard Sandiford committed
    • 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
    • Pass rtx and index to read-md.c iterator routines · 9f33a5d9
      The read-md.c iterator callbacks previously used a void * to record the
      position at which the iterator value should be installed.  This doesn't
      scale easily to the SUBREG_BYTE representation used by a later patch,
      so this patch replaces the void * with both an rtx and an operand
      number.  The operand number is ignored for modes and codes.
      
      2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* read-md.h (md_reader::record_potential_iterator_use): Replace
      	pointer argument with an rtx and an index.
      	* read-rtl.c (iterator_group::apply_iterator): Likewise.
      	(apply_mode_iterator): Likewise.
      	(apply_code_iterator): Likewise.
      	(apply_int_iterator): Likewise.
      	(apply_subst_iterator): Likewise.
      	(record_iterator_use): Likewise.
      	(record_attribute_use): Likewise.
      	(md_reader::record_potential_iterator_use): Likewise.  Update calls
      	to record_iterator_use and apply_iterator.
      	(iterator_use): Replace ptr with x and index.
      	(attribute_use): Likewise.
      	(apply_attribute_uses): Update calls to apply_iterator.
      	(apply_iterators): Likewise.  Update initialization of iterator_use.
      	(rtx_reader::read_rtx_code): Update calls to record_iterator_use
      	and record_potential_iterator_use.
      	(rtx_reader::read_rtx_operand): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r251219
      Richard Sandiford committed
    • Fix bogus CONST_WIDE_INT hash · 38fbc003
      The CONST_WIDE_INT case in const_rtx_hash_1 started the hash
      with the precision of the mode, but the mode is always VOIDmode.
      
      2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* varasm.c (const_rtx_hash_1): Don't hash in the mode of a
      	CONST_WIDE_INT.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r251218
      Richard Sandiford committed
    • re PR tree-optimization/81884 (Invalid code generation with zero size arrays or… · 8322b607
      re PR tree-optimization/81884 (Invalid code generation with zero size arrays or flexible array members)
      
      2017-08-21  Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/81884
      	* tree-ssa-alias.c (stmt_kills_ref_p): Handle array accesses
      	at struct end conservatively when comparing common bases.
      
      	* g++.dg/torture/pr81884.C: New testcase.
      
      From-SVN: r251217
      Richard Biener committed
    • tree-ssa-loop-im.c (struct lim_aux_data): Add ref index member. · 5164293a
      2017-08-21  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-loop-im.c (struct lim_aux_data): Add ref index member.
      	(mem_ref_in_stmt): Remove.
      	(determine_max_movement): Use ref index to get at the reference.
      	(invariantness_dom_walker::before_dom_children): Deal with
      	lim data already initialized.
      	(gather_mem_refs_stmt): Initialize lim data and record ref index.
      
      From-SVN: r251216
      Richard Biener committed
    • Daily bump. · 8bd81a41
      From-SVN: r251215
      GCC Administrator committed
  3. 20 Aug, 2017 5 commits
  4. 19 Aug, 2017 3 commits
  5. 18 Aug, 2017 1 commit
    • jit: fix segfault with autovectorization (PR tree-optimization/46805) · 953e520d
      libgccjit ran into its own version of PR tree-optimization/46805 (seen
      with the Go frontend); this patch fixes it in the same way.
      
      gcc/jit/ChangeLog:
      	PR tree-optimization/46805
      	* dummy-frontend.c (jit_langhook_parse_file): Handle vector types.
      
      gcc/testsuite/ChangeLog:
      	PR tree-optimization/46805
      	* jit.dg/all-non-failing-tests.h: Add test-autovectorize.c.
      	* jit.dg/test-autovectorize.c: New test case.
      
      From-SVN: r251192
      David Malcolm committed