1. 23 Aug, 2017 1 commit
  2. 22 Aug, 2017 20 commits
    • Move entry to correct ChangeLog. · 21e9b077
      From-SVN: r251294
      Daniel Santos committed
    • Add missing ChangeLog entry for previous commit · a0cc292e
      From-SVN: r251290
      Daniel Santos committed
    • docs: Explain how to use multiple file-name patterns in RUNTESTFLAGS · d35bcdd4
      	* doc/install.texi: Modify to add more details on running
      	selected tests.
      
      From-SVN: r251289
      Daniel Santos committed
    • PR target/71958: Error on -mx32 with -mabi=ms · 4d68ff06
      gcc/ChangeLog:
      2017-08-11  Daniel Santos  <daniel.santos@pobox.com>
      
      	* config/i386/i386.c (ix86_option_override_internal): Error when
      	-mx32 is combined with -mabi=ms.
      	(ix86_function_type_abi): Limit errors for mixing -mx32 with
      	attribute ms_abi.
      
      gcc/testsuite/ChangeLog:
      2017-08-11  Daniel Santos  <daniel.santos@pobox.com>
      
      	* gcc.target/i386/pr71958.c: New test to verify error on -mx32
      	and -mabi=ms
       	* gcc.target/i386/pr64409.c: Modify to only run on x32.
      	* gcc.target/i386/pr46470.c: Modify to skip x32 target.
       	* gcc.target/i386/pr66275.c: Likewise.
       	* gcc.target/i386/pr68018.c: Likewise.
      
      From-SVN: r251287
      Daniel Santos committed
    • re PR tree-optimization/81488 (gcc goes off the limits allocating memory in… · 65d3dce8
      re PR tree-optimization/81488 (gcc goes off the limits allocating memory in gimple-ssa-strength-reduction.c)
      
      2017-08-22  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
      
      	PR tree-optimization/81488
      	* gimple-ssa-strength-reduction (struct slsr_cand_d): Add visited
      	and cached_basis fields.
      	(MAX_SPREAD): New constant.
      	(alloc_cand_and_find_basis): Initialize new fields.
      	(clear_visited): New function.
      	(create_phi_basis_1): Rename from create_phi_basis, set visited
      	and cached_basis fields.
      	(create_phi_basis): New wrapper function.
      	(phi_add_costs_1): Rename from phi_add_costs, add spread
      	parameter, set visited field, short-circuit when limits reached.
      	(phi_add_costs): New wrapper function.
      	(record_phi_increments_1): Rename from record_phi_increments, set
      	visited field.
      	(record_phi_increments): New wrapper function.
      	(phi_incr_cost_1): Rename from phi_incr_cost, set visited field.
      	(phi_incr_cost): New wrapper function.
      	(all_phi_incrs_profitable_1): Rename from
      	all_phi_incrs_profitable, set visited field.
      	(all_phi_incrs_profitable): New wrapper function.
      
      From-SVN: r251286
      Bill Schmidt committed
    • Make more use of paradoxical_subreg_p · 03a95621
      This patch makes more use of the existing paradoxical_subreg_p
      predicate and also adds a version that operates on outer and
      inner modes.
      
      Some of the affected tests were based on GET_MODE_SIZE rather than
      GET_MODE_PRECISION and so the patch could change the result for modes
      that have the same size but different precisions.  I think in each
      case the change should be a no-op or more correct, since a mode with
      precision N bits can't be expected to hold all of a mode with precision
      M>N bits.
      
      The patch changes the branch taken in simplify_subreg for modes with
      equal precision, but the new form matches the commentary more closely.
      Both branches should be equally good in that situation.
      
      2017-08-22  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* rtl.h (paradoxical_subreg_p): Define inline, and add a version
      	that takes the outer and inner modes.
      	* doc/rtl.texi: Use paradoxical_subreg_p instead of a GET_MODE_SIZE
      	comparison as the canonical test for a paradoxical subreg.
      	* combine.c (simplify_set): Use paradoxical_subreg_p.
      	(make_extraction): Likewise.
      	(force_to_mode): Likewise.
      	(rtx_equal_for_field_assignment_p): Likewise.
      	(gen_lowpart_for_combine): Likewise.
      	(simplify_comparison): Likewise.
      	* cse.c (equiv_constant): Likewise.
      	* expmed.c (store_bit_field_1): Likewise.
      	* final.c (alter_subreg): Likewise.
      	* fwprop.c (propagate_rtx): Likewise.
      	(forward_propagate_subreg): Likewise.
      	* ira-conflicts.c (ira_build_conflicts): Likewise.
      	* lower-subreg.c (simplify_gen_subreg_concatn): Likewise.
      	* lra-constraints.c (curr_insn_transform): Likewise.
      	(split_reg): Likewise.
      	* lra-eliminations.c (move_plus_up): Likewise.
      	(lra_eliminate_regs_1): Likewise.
      	* recog.c (general_operand): Likewise.
      	* ree.c (combine_reaching_defs): Likewise.
      	* reload.c (push_reload): Likewise.
      	(find_reloads): Likewise.
      	* reload1.c (elimination_effects): Likewise.
      	(compute_reload_subreg_offset): Likewise.
      	(choose_reload_regs): Likewise.
      	* rtlanal.c (subreg_lsb_1): Likewise.
      	* simplify-rtx.c (simplify_unary_operation_1): Likewise.
      	(simplify_subreg): Likewise.
      	* var-tracking.c (track_loc_p): Likewise.
      	* emit-rtl.c (byte_lowpart_offset): Likewise.
      	(paradoxical_subreg_p): Delete out-of-line definition.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r251282
      Richard Sandiford committed
    • fold-vec-sums-int.c: New. · 5b37159f
      [gcc/testsuite]
      
      2017-08-22  Will Schmidt  <will_schmidt@vnet.ibm.com>
      
      	* gcc.target/powerpc/fold-vec-sums-int.c: New.
      
      From-SVN: r251281
      Will Schmidt committed
    • re PR tree-optimization/81741 (Misoptimisation : replacing a constant field read… · 0db8ddfc
      re PR tree-optimization/81741 (Misoptimisation : replacing a constant field read access by a function call)
      
      	PR tree-optimization/81741
      	PR tree-optimization/71947
      	* tree-ssa-dom.c: Include tree-inline.h.
      	(record_temporary_equivalences): Only record SSA_NAME = SSA_NAME
      	equivalences if one is more expensive to compute than the other.
      	* tree-ssa-scopedtables.h (class const_or_copies): Make
      	record_const_or_copy_raw method private.
      	(class avail_exprs_stack): New method simplify_binary_operation.
      	* tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr): Call
      	avail_exprs_stack::simplify_binary_operation as needed.
      	(avail_exprs_stack::simplify_binary_operation): New function.
      
      	PR tree-optimization/81741
      	PR tree-optimization/71947
      	* gcc.dg/tree-ssa/pr81741.c: New test.
      	* gcc.dg/tree-ssa/pr71947-7.c: New test.
      	* gcc.dg/tree-ssa/pr71947-8.c: New test.
      	* gcc.dg/tree-ssa/pr71947-9.c: New test.
      	* gcc.dg/tree-ssa/pr71941-1.c: Tweak expected output.
      	* gcc.dg/tree-ssa/pr71941-2.c: Tweak expected output.
      	* gcc.dg/tree-ssa/pr71941-3.c: Tweak expected output.
      	* gcc.dg/tree-ssa/20030922-2.c: xfail.
      
      From-SVN: r251279
      Jeff Law committed
    • re PR lto/81925 (early lto debug link failure on aarch64_be) · d4c550fd
      2017-08-22  Richard Biener  <rguenther@suse.de>
      
      	PR lto/81925
      	* simple-object-elf.c (simple_object_elf_write_shdr): Adjust
      	type of sh_addralign and sh_entsize and properly write
      	sh_entsize as Elf_Addr.
      	(simple_object_elf_write_to_file): Read sh_entsize as Elf_Addr.
      
      From-SVN: r251276
      Richard Biener committed
    • [PowerPC/RTEMS] Enable -mcmodel option · 17691698
      gcc/
      	* config.gcc (powerpc-*-rtems*): Add rs6000/linux64.opt.
      	* config/rs6000/rtems.h (ASM_PREFERRED_EH_DATA_FORMAT): New define.
      	(DOT_SYMBOLS): Likewise.
      	(MINIMAL_TOC_SECTION_ASM_OP): Likewise.
      	(RELOCATABLE_NEEDS_FIXUP): Likewise.
      	(RS6000_ABI_NAME): Likewise.
      	(TARGET_CMODEL): Likewise.
      	(TOC_SECTION_ASM_OP): Likewise.
      	(SET_CMODEL): New macro.
      	(SUBSUBTARGET_OVERRIDE_OPTIONS): Evaluate cmodel options.
      
      From-SVN: r251275
      Sebastian Huber committed
    • tree-inline.c (remap_type_1): Change asserts on TYPE_SIZE[_UNIT] to allow for… · cd0835ce
      tree-inline.c (remap_type_1): Change asserts on TYPE_SIZE[_UNIT] to allow for free-lang-data replacements...
      
      2017-08-22  Richard Biener  <rguenther@suse.de>
      
      	* tree-inline.c (remap_type_1): Change asserts on TYPE_SIZE[_UNIT]
      	to allow for free-lang-data replacements similar to verify_type_variant.
      
      From-SVN: r251274
      Richard Biener committed
    • re PR c++/80287 (C++ crash with __attribute((may_alias))) · 44d23deb
      2017-08-22  Yvan Roux  <yvan.roux@linaro.org>
      
              PR c++/80287
              * g++.dg/pr80287.C: New test.
      
      From-SVN: r251268
      Yvan Roux committed
    • [AArch64] Fix label mode · 4033e62c
      This patch fixes a case where we tried to force a VOIDmode label
      into a DImode register, which led to invalid rtl that was previously
      undiagnosed.
      
      2017-08-22  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* config/aarch64/aarch64.md (casesi): Use DImode rather than
      	VOIDmode for the LABEL_REF.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r251266
      Richard Sandiford committed
    • 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
  3. 21 Aug, 2017 19 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