1. 21 Dec, 2017 34 commits
    • [arm] Specify +dotprod support for Cortex-A55 and Cortex-A75 in native system detection · b3eec1d6
      Since support for -mcpu=cortex-a55 and -mcpu=cortex-a75
      was added we added support for the +dotprod extension
      which these CPUs support.
      
      We already specify as such in the arm-cpus.in entries for
      these processors. However the table in driver-arm.c was
      not adding +dotproct to the -march string that it generates.
      
      This patch fixes that oversight.
      In the future I'd like to get the arm_cpu_table in driver-arm.c
      be auto-generated somehow from the arm-cpus.in data so
      that we don't have to keep track of discrepancies explicitly...
      
      Bootstrapped and tested on arm-none-linux-gnueabihf.
      
      	* config/arm/driver-arm.c (arm_cpu_table): Specify dotprod
      	support for Cortex-A55 and Cortex-A75.
      
      From-SVN: r255943
      Kyrylo Tkachov committed
    • [arm] Fix assembler option rewrite alphabetical comparison · e3d444a7
      	* common/config/arm/arm-common.c (compare_opt_names): Add function
      	comment.  Use strcmp instead of manual loop.
      
      From-SVN: r255942
      Kyrylo Tkachov committed
    • Fix gcov-dump tool for GCDA files (PR gcov-profile/83509). · bb5307a6
      2017-12-21  Martin Liska  <mliska@suse.cz>
      
      	PR gcov-profile/83509
      	* gcov-dump.c (dump_gcov_file): Do not read info about
      	support_unexecuted_blocks for gcda files.
      
      From-SVN: r255941
      Martin Liska committed
    • re PR rtl-optimization/82973 (ICE in output_constant_pool_2, at varasm.c:3896 on aarch64) · 63987ca4
      	PR rtl-optimization/82973
      	* emit-rtl.h (valid_for_const_vec_duplicate_p): Rename to ...
      	(valid_for_const_vector_p): ... this.
      	* emit-rtl.c (valid_for_const_vec_duplicate_p): Rename to ...
      	(valid_for_const_vector_p): ... this.  Adjust function comment.
      	(gen_vec_duplicate): Adjust caller.
      	* optabs.c (expand_vector_broadcast): Likewise.
      	* simplify-rtx.c (simplify_const_unary_operation): Don't optimize into
      	CONST_VECTOR if some element isn't simplified valid_for_const_vector_p
      	constant.
      	(simplify_const_binary_operation): Likewise.  Use CONST_FIXED_P macro
      	instead of GET_CODE == CONST_FIXED.
      	(simplify_subreg): Use CONST_FIXED_P macro instead of
      	GET_CODE == CONST_FIXED.
      
      	* gfortran.dg/pr82973.f90: New test.
      
      From-SVN: r255939
      Jakub Jelinek committed
    • re PR rtl-optimization/82973 (ICE in output_constant_pool_2, at varasm.c:3896 on aarch64) · c0cc00c4
      	PR rtl-optimization/82973
      	* emit-rtl.h (valid_for_const_vec_duplicate_p): Rename to ...
      	(valid_for_const_vector_p): ... this.
      	* emit-rtl.c (valid_for_const_vec_duplicate_p): Rename to ...
      	(valid_for_const_vector_p): ... this.  Adjust function comment.
      	(gen_vec_duplicate): Adjust caller.
      	* optabs.c (expand_vector_broadcast): Likewise.
      	* simplify-rtx.c (simplify_const_unary_operation): Don't optimize into
      	CONST_VECTOR if some element isn't simplified valid_for_const_vector_p
      	constant.
      	(simplify_const_binary_operation): Likewise.  Use CONST_FIXED_P macro
      	instead of GET_CODE == CONST_FIXED.
      	(simplify_subreg): Use CONST_FIXED_P macro instead of
      	GET_CODE == CONST_FIXED.
      
      	* gfortran.dg/pr82973.f90: New test.
      
      From-SVN: r255938
      Jakub Jelinek committed
    • re PR target/83488 (ICE on a CET test-case) · b1ccd09a
      	PR target/83488
      	* config/i386/i386.c (ix86_target_string): Move -mavx512vbmi2 and
      	-mshstk entries from isa_opts2 to isa_opts and -mhle, -mmovbe,
      	-mclzero and -mmwaitx entries from isa_opts to isa_opts2.
      	(ix86_option_override_internal): Adjust for
      	OPTION_MASK_ISA_{HLE,MOVBE,CLZERO,MWAITX} moving to ix86_isa_flags2
      	and OPTION_MASK_ISA_SHSTK moving to ix86_isa_flags.
      	(BDESC_VERIFYS): Remove SPECIAL_ARGS2 related checks.
      	(ix86_init_mmx_sse_builtins): Remove bdesc_special_args2 handling.
      	Use def_builtin2 instead of def_builtin for OPTION_MASK_ISA_MWAITX
      	and OPTION_MASK_ISA_CLZERO builtins.  Use def_builtin instead of
      	def_builtin2 for CET builtins.
      	(ix86_expand_builtin): Remove bdesc_special_args2 handling.  Fix
      	up formatting in IX86_BUILTIN_RDPID code.
      	* config/i386/i386-builtin.def: Move VBMI2 builtins from SPECIAL_ARGS2
      	section to SPECIAL_ARGS and from ARGS2 section to ARGS.
      	* config/i386/i386.opt (mavx512vbmi2, mshstk): Move from
      	ix86_isa_flags2 to ix86_isa_flags.
      	(mhle, mmovbe, mclzero, mmwaitx): Move from ix86_isa_flags to
      	ix86_isa_flags2.
      	* config/i386/i386-c.c (ix86_target_macros_internal): Check for
      	OPTION_MASK_ISA_{CLZERO,MWAITX} in isa_flag2 instead of isa_flag.
      	Check for OPTION_MASK_ISA_{SHSTK,AVX512VBMI2} in isa_flag instead
      	of isa_flag2.
      	* common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VBMI2_SET):
      	Or in OPTION_MASK_ISA_AVX512F_SET.
      	(OPTION_MASK_ISA_AVX512F_UNSET): Or in
      	OPTION_MASK_ISA_AVX512VBMI2_UNSET.
      	(ix86_handle_option): Adjust for
      	OPTION_MASK_ISA_{SHSTK,AVX512VBMI2}_*SET being in ix86_isa_flags
      	and OPTION_MASK_ISA_{MOVBE,MWAITX,CLZERO}_*SET in ix86_isa_flags2.
      
      	* gcc.target/i386/pr83488.c: New test.
      
      From-SVN: r255937
      Jakub Jelinek committed
    • poly_int: prune_runtime_alias_test_list · 079b4a9c
      This patch makes prune_runtime_alias_test_list take the iteration
      factor as a poly_int and tracks polynomial offsets internally
      as well.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* tree-data-ref.h (prune_runtime_alias_test_list): Take the
      	factor as a poly_uint64 rather than an unsigned HOST_WIDE_INT.
      	* tree-data-ref.c (prune_runtime_alias_test_list): Likewise.
      	Track polynomial offsets.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255936
      Richard Sandiford committed
    • poly_int: compute_data_ref_alignment · 8944b5b3
      This patch makes vect_compute_data_ref_alignment treat DR_INIT as a
      poly_int and handles cases in which the calculated misalignment might
      not be constant.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* tree-vect-data-refs.c (vect_compute_data_ref_alignment):
      	Treat drb->init as a poly_int.  Fail if its misalignment wrt
      	vector_alignment isn't known.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255935
      Richard Sandiford committed
    • poly_int: loop versioning threshold · a696bc4f
      This patch splits the loop versioning threshold out from the
      cost model threshold so that the former can become a poly_uint64.
      We still use a single test to enforce both limits where possible.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* tree-vectorizer.h (_loop_vec_info): Add a versioning_threshold
      	field.
      	(LOOP_VINFO_VERSIONING_THRESHOLD): New macro
      	(vect_loop_versioning): Take the loop versioning threshold as a
      	separate parameter.
      	* tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
      	* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
      	versioning_threshold.
      	(vect_analyze_loop_2): Compute the loop versioning threshold
      	whenever loop versioning is needed, and store it in the new
      	field rather than combining it with the cost model threshold.
      	(vect_transform_loop): Update call to vect_loop_versioning.
      	Try to combine the loop versioning and cost thresholds here.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255934
      Richard Sandiford committed
    • poly_int: tree-ssa-loop-ivopts.c:iv_use · d2fd6a04
      This patch makes ivopts handle polynomial address offsets
      when recording potential IV uses.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* tree-ssa-loop-ivopts.h (strip_offset): Return the offset as
      	poly_uint64_pod rather than an unsigned HOST_WIDE_INT.
      	* tree-loop-distribution.c (classify_builtin_st): Update accordingly.
      	* tree-ssa-loop-ivopts.c (iv_use::addr_offset): Change from
      	an unsigned HOST_WIDE_INT to a poly_uint64_pod.
      	(group_compare_offset): Update accordingly.
      	(split_small_address_groups_p): Likewise.
      	(record_use): Take addr_offset as a poly_uint64 rather than
      	an unsigned HOST_WIDE_INT.
      	(strip_offset): Return the offset as a poly_uint64 rather than
      	an unsigned HOST_WIDE_INT.
      	(record_group_use, split_address_groups): Track polynomial offsets.
      	(add_iv_candidate_for_use): Likewise.
      	(addr_offset_valid_p): Take the offset as a poly_int64 rather
      	than a HOST_WIDE_INT.
      	(strip_offset_1): Return the offset as a poly_int64 rather than
      	a HOST_WIDE_INT.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255933
      Richard Sandiford committed
    • poly_int: get_binfo_at_offset · 0ddcd294
      This patch changes the offset parameter to get_binfo_at_offset
      from HOST_WIDE_INT to poly_int64.  This function probably doesn't
      need to handle polynomial offsets in practice, but it's easy
      to do and avoids forcing the caller to check first.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* tree.h (get_binfo_at_offset): Take the offset as a poly_int64
      	rather than a HOST_WIDE_INT.
      	* tree.c (get_binfo_at_offset): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255932
      Richard Sandiford committed
    • poly_int: build_ref_for_offset · f7ed3195
      This patch changes the offset parameter to build_ref_for_offset
      from HOST_WIDE_INT to poly_int64.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* ipa-prop.h (build_ref_for_offset): Take the offset as a poly_int64
      	rather than a HOST_WIDE_INT.
      	* tree-sra.c (build_ref_for_offset): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255931
      Richard Sandiford committed
    • poly_int: MEM_REF offsets · aca52e6f
      This patch allows MEM_REF offsets to be polynomial, with mem_ref_offset
      now returning a poly_offset_int instead of an offset_int.  The
      non-mechanical changes to callers of mem_ref_offset were handled by
      previous patches.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* fold-const.h (mem_ref_offset): Return a poly_offset_int rather
      	than an offset_int.
      	* tree.c (mem_ref_offset): Likewise.
      	(build_simple_mem_ref_loc): Treat MEM_REF offsets as poly_ints.
      	* builtins.c (get_object_alignment_2): Likewise.
      	* expr.c (get_inner_reference, expand_expr_real_1): Likewise.
      	* gimple-fold.c (get_base_constructor): Likewise.
      	* gimple-ssa-strength-reduction.c (restructure_reference): Likewise.
      	* gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref):
      	Likewise.
      	* ipa-polymorphic-call.c
      	(ipa_polymorphic_call_context::ipa_polymorphic_call_context): Likewise.
      	* ipa-prop.c (compute_complex_assign_jump_func): Likewise.
      	(get_ancestor_addr_info): Likewise.
      	* ipa-param-manipulation.c (ipa_get_adjustment_candidate): Likewise.
      	* match.pd: Likewise.
      	* tree-data-ref.c (dr_analyze_innermost): Likewise.
      	* tree-dfa.c (get_addr_base_and_unit_offset_1): Likewise.
      	* tree-eh.c (tree_could_trap_p): Likewise.
      	* tree-object-size.c (addr_object_size): Likewise.
      	* tree-ssa-address.c (copy_ref_info): Likewise.
      	* tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Likewise.
      	(indirect_refs_may_alias_p): Likewise.
      	* tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
      	* tree-ssa.c (maybe_rewrite_mem_ref_base): Likewise.
      	(non_rewritable_mem_ref_base): Likewise.
      	* tree-vect-data-refs.c (vect_check_gather_scatter): Likewise.
      	* tree-vrp.c (vrp_prop::check_array_ref): Likewise.
      	* varasm.c (decode_addr_const): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255930
      Richard Sandiford committed
    • poly_int: find_bswap_or_nop_load · 3fed2ce9
      This patch handles polynomial offsets in find_bswap_or_nop_load,
      which could be useful for constant-sized data at a variable offset.
      It is needed for a later patch to compile.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* gimple-ssa-stor-merging.c (find_bswap_or_nop_load): Track polynomial
      	offsets for MEM_REFs.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255929
      Richard Sandiford committed
    • poly_int: adjust_ptr_info_misalignment · bc83d568
      This patch makes adjust_ptr_info_misalignment take the adjustment
      as a poly_uint64 rather than an unsigned int.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* tree-ssanames.h (adjust_ptr_info_misalignment): Take the increment
      	as a poly_uint64 rather than an unsigned int.
      	* tree-ssanames.c (adjust_ptr_info_misalignment): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255928
      Richard Sandiford committed
    • poly_int: decode_addr_const · 1079d2c1
      This patch makes the varasm-local addr_const track polynomial offsets.
      I'm not sure how useful this is, but it was easier to convert than not.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* varasm.c (addr_const::offset): Change from HOST_WIDE_INT
      	to poly_int64.
      	(decode_addr_const): Update accordingly.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255927
      Richard Sandiford committed
    • poly_int: bit_field_size/offset · e7301f5f
      verify_expr ensured that the size and offset in gimple BIT_FIELD_REFs
      satisfied tree_fits_uhwi_p.  This patch extends that so that they can
      be poly_uint64s, and adds helper routines for accessing them when the
      verify_expr requirements apply.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* tree.h (bit_field_size, bit_field_offset): New functions.
      	* hsa-gen.c (gen_hsa_addr): Use them.
      	* tree-ssa-forwprop.c (simplify_bitfield_ref): Likewise.
      	(simplify_vector_constructor): Likewise.
      	* tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
      	* tree-cfg.c (verify_expr): Require the sizes and offsets of a
      	BIT_FIELD_REF to be poly_uint64s rather than uhwis.
      	* fold-const.c (fold_ternary_loc): Protect tree_to_uhwi with
      	tree_fits_uhwi_p.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255926
      Richard Sandiford committed
    • poly_int: emit_group_load/store · f8f667be
      This patch changes the sizes passed to emit_group_load and
      emit_group_store from int to poly_int64.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* expr.h (emit_group_load, emit_group_load_into_temps)
      	(emit_group_store): Take the size as a poly_int64 rather than an int.
      	* expr.c (emit_group_load_1, emit_group_load): Likewise.
      	(emit_group_load_into_temp, emit_group_store): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255925
      Richard Sandiford committed
    • poly_int: reload<->ira interface · 80ce7eb4
      This patch uses poly_int64 for:
      
      - ira_reuse_stack_slot
      - ira_mark_new_stack_slot
      - ira_spilled_reg_stack_slot::width
      
      all of which are part of the IRA/reload interface.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* ira-int.h (ira_spilled_reg_stack_slot::width): Change from
      	an unsigned int to a poly_uint64.
      	* ira.h (ira_reuse_stack_slot, ira_mark_new_stack_slot): Take the
      	sizes as poly_uint64s rather than unsigned ints.
      	* ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot):
      	Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255924
      Richard Sandiford committed
    • poly_int: emit_inc · 31ae0e43
      This patch changes the LRA emit_inc routine so that it takes
      a poly_int64 rather than an int.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* lra-constraints.c (emit_inc): Change inc_amount from an int
      	to a poly_int64.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255923
      Richard Sandiford committed
    • poly_int: cfgexpand stack variables · 5e48d894
      This patch changes the type of stack_var::size from HOST_WIDE_INT
      to poly_uint64.  The difference in signedness is because the
      field was set by:
      
        v->size = tree_to_uhwi (size);
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* cfgexpand.c (stack_var::size): Change from a HOST_WIDE_INT
      	to a poly_uint64.
      	(add_stack_var, stack_var_cmp, partition_stack_vars)
      	(dump_stack_var_partition): Update accordingly.
      	(alloc_stack_frame_space): Take the size as a poly_int64 rather
      	than a HOST_WIDE_INT.
      	(expand_stack_vars, expand_one_stack_var_1): Handle polynomial sizes.
      	(defer_stack_allocation, estimated_stack_frame_size): Likewise.
      	(account_stack_vars, expand_one_var): Likewise.  Return a poly_uint64
      	rather than a HOST_WIDE_INT.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255922
      Richard Sandiford committed
    • poly_int: argument sizes · a20c5714
      This patch changes various bits of state related to argument sizes so
      that they have type poly_int64 rather than HOST_WIDE_INT.  This includes:
      
      - incoming_args::pops_args and incoming_args::size
      - rtl_data::outgoing_args_size
      - pending_stack_adjust
      - stack_pointer_delta
      - stack_usage::pushed_stack_size
      - args_size::constant
      
      It also changes TARGET_RETURN_POPS_ARGS so that the size of the
      arguments passed in and the size returned by the hook are both
      poly_int64s.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* target.def (return_pops_args): Treat both the input and output
      	sizes as poly_int64s rather than HOST_WIDE_INTS.
      	* targhooks.h (default_return_pops_args): Update accordingly.
      	* targhooks.c (default_return_pops_args): Likewise.
      	* doc/tm.texi: Regenerate.
      	* emit-rtl.h (incoming_args): Change pops_args, size and
      	outgoing_args_size from int to poly_int64_pod.
      	* function.h (expr_status): Change x_pending_stack_adjust and
      	x_stack_pointer_delta from int to poly_int64.
      	(args_size::constant): Change from HOST_WIDE_INT to poly_int64.
      	(ARGS_SIZE_RTX): Update accordingly.
      	* calls.c (highest_outgoing_arg_in_use): Change from int to
      	unsigned int.
      	(stack_usage_watermark, stored_args_watermark): New variables.
      	(stack_region_maybe_used_p, mark_stack_region_used): New functions.
      	(emit_call_1): Change the stack_size and rounded_stack_size
      	parameters from HOST_WIDE_INT to poly_int64.  Track n_popped
      	as a poly_int64.
      	(save_fixed_argument_area): Check stack_usage_watermark.
      	(initialize_argument_information): Change old_pending_adj from
      	a HOST_WIDE_INT * to a poly_int64_pod *.
      	(compute_argument_block_size): Return the size as a poly_int64
      	rather than an int.
      	(finalize_must_preallocate): Track polynomial argument sizes.
      	(compute_argument_addresses): Likewise.
      	(internal_arg_pointer_based_exp): Track polynomial offsets.
      	(mem_overlaps_already_clobbered_arg_p): Rename to...
      	(mem_might_overlap_already_clobbered_arg_p): ...this and take the
      	size as a poly_uint64 rather than an unsigned HOST_WIDE_INT.
      	Check stored_args_used_watermark.
      	(load_register_parameters): Update accordingly.
      	(check_sibcall_argument_overlap_1): Likewise.
      	(combine_pending_stack_adjustment_and_call): Take the unadjusted
      	args size as a poly_int64 rather than an int.  Return a bool
      	indicating whether the optimization was possible and return
      	the new adjustment by reference.
      	(check_sibcall_argument_overlap): Track polynomail argument sizes.
      	Update stored_args_watermark.
      	(can_implement_as_sibling_call_p): Handle polynomial argument sizes.
      	(expand_call): Likewise.  Maintain stack_usage_watermark and
      	stored_args_watermark.  Update calls to
      	combine_pending_stack_adjustment_and_call.
      	(emit_library_call_value_1): Handle polynomial argument sizes.
      	Call stack_region_maybe_used_p and mark_stack_region_used.
      	Maintain stack_usage_watermark.
      	(store_one_arg): Likewise.  Update call to
      	mem_overlaps_already_clobbered_arg_p.
      	* config/arm/arm.c (arm_output_function_prologue): Add a cast to
      	HOST_WIDE_INT.
      	* config/avr/avr.c (avr_outgoing_args_size): Likewise.
      	* config/microblaze/microblaze.c (microblaze_function_prologue):
      	Likewise.
      	* config/cr16/cr16.c (cr16_return_pops_args): Update for new
      	TARGET_RETURN_POPS_ARGS interface.
      	(cr16_compute_frame, cr16_initial_elimination_offset): Add casts
      	to HOST_WIDE_INT.
      	* config/ft32/ft32.c (ft32_compute_frame): Likewise.
      	* config/i386/i386.c (ix86_return_pops_args): Update for new
      	TARGET_RETURN_POPS_ARGS interface.
      	(ix86_expand_split_stack_prologue): Add a cast to HOST_WIDE_INT.
      	* config/moxie/moxie.c (moxie_compute_frame): Likewise.
      	* config/m68k/m68k.c (m68k_return_pops_args): Update for new
      	TARGET_RETURN_POPS_ARGS interface.
      	* config/vax/vax.c (vax_return_pops_args): Likewise.
      	* config/pa/pa.h (STACK_POINTER_OFFSET): Add a cast to poly_int64.
      	(EXIT_IGNORE_STACK): Update reference to crtl->outgoing_args_size.
      	* config/arm/arm.h (CALLER_INTERWORKING_SLOT_SIZE): Likewise.
      	* config/powerpcspe/aix.h (STACK_DYNAMIC_OFFSET): Likewise.
      	* config/powerpcspe/darwin.h (STACK_DYNAMIC_OFFSET): Likewise.
      	* config/powerpcspe/powerpcspe.h (STACK_DYNAMIC_OFFSET): Likewise.
      	* config/rs6000/aix.h (STACK_DYNAMIC_OFFSET): Likewise.
      	* config/rs6000/darwin.h (STACK_DYNAMIC_OFFSET): Likewise.
      	* config/rs6000/rs6000.h (STACK_DYNAMIC_OFFSET): Likewise.
      	* dojump.h (saved_pending_stack_adjust): Change x_pending_stack_adjust
      	and x_stack_pointer_delta from int to poly_int64.
      	* dojump.c (do_pending_stack_adjust): Update accordingly.
      	* explow.c (allocate_dynamic_stack_space): Handle polynomial
      	stack_pointer_deltas.
      	* function.c (STACK_DYNAMIC_OFFSET): Add a cast to poly_int64.
      	(pad_to_arg_alignment): Track polynomial offsets.
      	(assign_parm_find_stack_rtl): Likewise.
      	(assign_parms, locate_and_pad_parm): Handle polynomial argument sizes.
      	* toplev.c (output_stack_usage): Update reference to
      	current_function_pushed_stack_size.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255921
      Richard Sandiford committed
    • poly_int: instantiate_virtual_regs · e6715081
      This patch makes the instantiate virtual regs pass track offsets
      as poly_ints.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* function.c (in_arg_offset, var_offset, dynamic_offset)
      	(out_arg_offset, cfa_offset): Change from int to poly_int64.
      	(instantiate_new_reg): Return the new offset as a poly_int64_pod
      	rather than a HOST_WIDE_INT.
      	(instantiate_virtual_regs_in_rtx): Track polynomial offsets.
      	(instantiate_virtual_regs_in_insn): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255920
      Richard Sandiford committed
    • poly_int: REG_ARGS_SIZE · 68184180
      This patch adds new utility functions for manipulating REG_ARGS_SIZE
      notes and allows the notes to carry polynomial as well as constant sizes.
      
      The code was inconsistent about whether INT_MIN or HOST_WIDE_INT_MIN
      should be used to represent an unknown size.  The patch uses
      HOST_WIDE_INT_MIN throughout.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* rtl.h (get_args_size, add_args_size_note): New functions.
      	(find_args_size_adjust): Return a poly_int64 rather than a
      	HOST_WIDE_INT.
      	(fixup_args_size_notes): Likewise.  Make the same change to the
      	end_args_size parameter.
      	* rtlanal.c (get_args_size, add_args_size_note): New functions.
      	* builtins.c (expand_builtin_trap): Use add_args_size_note.
      	* calls.c (emit_call_1): Likewise.
      	* explow.c (adjust_stack_1): Likewise.
      	* cfgcleanup.c (old_insns_match_p): Update use of
      	find_args_size_adjust.
      	* combine.c (distribute_notes): Track polynomial arg sizes.
      	* dwarf2cfi.c (dw_trace_info): Change beg_true_args_size,
      	end_true_args_size, beg_delay_args_size and end_delay_args_size
      	from HOST_WIDE_INT to poly_int64.
      	(add_cfi_args_size): Take the args_size as a poly_int64 rather
      	than a HOST_WIDE_INT.
      	(notice_args_size, notice_eh_throw, maybe_record_trace_start)
      	(maybe_record_trace_start_abnormal, scan_trace, connect_traces): Track
      	polynomial arg sizes.
      	* emit-rtl.c (try_split): Use get_args_size.
      	* recog.c (peep2_attempt): Likewise.
      	* reload1.c (reload_as_needed): Likewise.
      	* expr.c (find_args_size_adjust): Return the adjustment as a
      	poly_int64 rather than a HOST_WIDE_INT.
      	(fixup_args_size_notes): Change end_args_size from a HOST_WIDE_INT
      	to a poly_int64 and change the return type in the same way.
      	(emit_single_push_insn): Track polynomial arg sizes.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255919
      Richard Sandiford committed
    • poly_int: push_block/emit_push_insn · a15b25dc
      This patch changes the "extra" parameters to push_block and
      emit_push_insn from int to poly_int64.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* expr.h (push_block, emit_push_insn): Change the "extra" parameter
      	from HOST_WIDE_INT to poly_int64.
      	* expr.c (push_block, emit_push_insn): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255918
      Richard Sandiford committed
    • poly_int: frame allocations · f075bd95
      This patch converts the frame allocation code (mostly in function.c)
      to use poly_int64 rather than HOST_WIDE_INT for frame offsets and
      sizes.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* function.h (frame_space): Change start and length from HOST_WIDE_INT
      	to poly_int64.
      	(get_frame_size): Return the size as a poly_int64 rather than a
      	HOST_WIDE_INT.
      	(frame_offset_overflow): Take the offset as a poly_int64 rather
      	than a HOST_WIDE_INT.
      	(assign_stack_local_1, assign_stack_local, assign_stack_temp_for_type)
      	(assign_stack_temp): Likewise for the size.
      	* function.c (get_frame_size): Return a poly_int64 rather than
      	a HOST_WIDE_INT.
      	(frame_offset_overflow): Take the offset as a poly_int64 rather
      	than a HOST_WIDE_INT.
      	(try_fit_stack_local): Take the start, length and size as poly_int64s
      	rather than HOST_WIDE_INTs.  Return the offset as a poly_int64_pod
      	rather than a HOST_WIDE_INT.
      	(add_frame_space): Take the start and end as poly_int64s rather than
      	HOST_WIDE_INTs.
      	(assign_stack_local_1, assign_stack_local, assign_stack_temp_for_type)
      	(assign_stack_temp): Likewise for the size.
      	(temp_slot): Change size, base_offset and full_size from HOST_WIDE_INT
      	to poly_int64.
      	(find_temp_slot_from_address): Handle polynomial offsets.
      	(combine_temp_slots): Likewise.
      	* emit-rtl.h (rtl_data::x_frame_offset): Change from HOST_WIDE_INT
      	to poly_int64.
      	* cfgexpand.c (alloc_stack_frame_space): Return the offset as a
      	poly_int64 rather than a HOST_WIDE_INT.
      	(expand_one_stack_var_at): Take the offset as a poly_int64 rather
      	than a HOST_WIDE_INT.
      	(expand_stack_vars, expand_one_stack_var_1, expand_used_vars): Handle
      	polynomial frame offsets.
      	* config/m32r/m32r-protos.h (m32r_compute_frame_size): Take the size
      	as a poly_int64 rather than an int.
      	* config/m32r/m32r.c (m32r_compute_frame_size): Likewise.
      	* config/v850/v850-protos.h (compute_frame_size): Likewise.
      	* config/v850/v850.c (compute_frame_size): Likewise.
      	* config/xtensa/xtensa-protos.h (compute_frame_size): Likewise.
      	* config/xtensa/xtensa.c (compute_frame_size): Likewise.
      	* config/pa/pa-protos.h (pa_compute_frame_size): Likewise.
      	* config/pa/pa.c (pa_compute_frame_size): Likewise.
      	* explow.h (get_dynamic_stack_base): Take the offset as a poly_int64
      	rather than a HOST_WIDE_INT.
      	* explow.c (get_dynamic_stack_base): Likewise.
      	* final.c (final_start_function): Use the constant lower bound
      	of the frame size for -Wframe-larger-than.
      	* ira.c (do_reload): Adjust for new get_frame_size return type.
      	* lra.c (lra): Likewise.
      	* reload1.c (reload): Likewise.
      	* config/avr/avr.c (avr_asm_function_end_prologue): Likewise.
      	* config/pa/pa.h (EXIT_IGNORE_STACK): Likewise.
      	* rtlanal.c (get_initial_register_offset): Return the offset as
      	a poly_int64 rather than a HOST_WIDE_INT.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255917
      Richard Sandiford committed
    • poly_int: reload1.c · 7ee21616
      This patch makes a few small poly_int64 changes to reload1.c,
      mostly related to eliminations.  Again, there's no real expectation
      that reload will be used for targets that have polynomial-sized modes,
      but it seemed easier to convert it anyway.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* reload1.c (elim_table): Change initial_offset, offset and
      	previous_offset from HOST_WIDE_INT to poly_int64_pod.
      	(offsets_at): Change the target array's element type from
      	HOST_WIDE_INT to poly_int64_pod.
      	(set_label_offsets, eliminate_regs_1, eliminate_regs_in_insn)
      	(elimination_costs_in_insn, update_eliminable_offsets)
      	(verify_initial_elim_offsets, set_offsets_for_label)
      	(init_eliminable_invariants): Update after above changes.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255916
      Richard Sandiford committed
    • poly_int: reload.c · 0cb78959
      This patch makes a few small poly_int64 changes to reload.c,
      such as in the "decomposition" structure.  In practice, any
      port with polynomial-sized modes should be using LRA rather
      than reload, but it's easier to convert reload anyway than
      to sprinkle to_constants everywhere.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* reload.h (reload::inc): Change from an int to a poly_int64_pod.
      	* reload.c (combine_reloads, debug_reload_to_stream): Likewise.
      	(decomposition): Change start and end from HOST_WIDE_INT
      	to poly_int64_pod.
      	(decompose, immune_p): Update accordingly.
      	(find_inc_amount): Return a poly_int64 rather than an int.
      	* reload1.c (inc_for_reload): Take the inc_amount as a poly_int64
      	rather than an int.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255915
      Richard Sandiford committed
    • poly_int: get_inner_reference & co. · f37fac2b
      This patch makes get_inner_reference and ptr_difference_const return the
      bit size and bit position as poly_int64s rather than HOST_WIDE_INTS.
      The non-mechanical changes were handled by previous patches.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* tree.h (get_inner_reference): Return the bitsize and bitpos
      	as poly_int64_pods rather than HOST_WIDE_INT.
      	* fold-const.h (ptr_difference_const): Return the pointer difference
      	as a poly_int64_pod rather than a HOST_WIDE_INT.
      	* expr.c (get_inner_reference): Return the bitsize and bitpos
      	as poly_int64_pods rather than HOST_WIDE_INT.
      	(expand_expr_addr_expr_1, expand_expr_real_1): Track polynomial
      	offsets and sizes.
      	* fold-const.c (make_bit_field_ref): Take the bitpos as a poly_int64
      	rather than a HOST_WIDE_INT.  Update call to get_inner_reference.
      	(optimize_bit_field_compare): Update call to get_inner_reference.
      	(decode_field_reference): Likewise.
      	(fold_unary_loc): Track polynomial offsets and sizes.
      	(split_address_to_core_and_offset): Return the bitpos as a
      	poly_int64_pod rather than a HOST_WIDE_INT.
      	(ptr_difference_const): Likewise for the pointer difference.
      	* asan.c (instrument_derefs): Track polynomial offsets and sizes.
      	* config/mips/mips.c (r10k_safe_mem_expr_p): Likewise.
      	* dbxout.c (dbxout_expand_expr): Likewise.
      	* dwarf2out.c (loc_list_for_address_of_addr_expr_of_indirect_ref)
      	(loc_list_from_tree_1, fortran_common): Likewise.
      	* gimple-laddress.c (pass_laddress::execute): Likewise.
      	* gimple-ssa-store-merging.c (find_bswap_or_nop_load): Likewise.
      	* gimplify.c (gimplify_scan_omp_clauses): Likewise.
      	* simplify-rtx.c (delegitimize_mem_from_attrs): Likewise.
      	* tree-affine.c (tree_to_aff_combination): Likewise.
      	(get_inner_reference_aff): Likewise.
      	* tree-data-ref.c (split_constant_offset_1): Likewise.
      	(dr_analyze_innermost): Likewise.
      	* tree-scalar-evolution.c (interpret_rhs_expr): Likewise.
      	* tree-sra.c (ipa_sra_check_caller): Likewise.
      	* tree-vect-data-refs.c (vect_check_gather_scatter): Likewise.
      	* ubsan.c (maybe_instrument_pointer_overflow): Likewise.
      	(instrument_bool_enum_load, instrument_object_size): Likewise.
      	* gimple-ssa-strength-reduction.c (slsr_process_ref): Update call
      	to get_inner_reference.
      	* hsa-gen.c (gen_hsa_addr): Likewise.
      	* sanopt.c (maybe_optimize_ubsan_ptr_ifn): Likewise.
      	* tsan.c (instrument_expr): Likewise.
      	* match.pd: Update call to ptr_difference_const.
      
      gcc/ada/
      	* gcc-interface/trans.c (Attribute_to_gnu): Track polynomial
      	offsets and sizes.
      	* gcc-interface/utils2.c (build_unary_op): Likewise.
      
      gcc/cp/
      	* constexpr.c (check_automatic_or_tls): Track polynomial
      	offsets and sizes.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255914
      Richard Sandiford committed
    • poly_int: fold_comparison · 5b9bbb63
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* fold-const.c (fold_comparison): Track sizes and offsets as
      	poly_int64s rather than HOST_WIDE_INTs when folding address
      	comparisons.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255913
      Richard Sandiford committed
    • poly_int: get_bit_range · 39bb8924
      This patch makes get_bit_range return the range and position as poly_ints.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* expr.h (get_bit_range): Return the bitstart and bitend as
      	poly_uint64s rather than unsigned HOST_WIDE_INTs.  Return the bitpos
      	as a poly_int64 rather than a HOST_WIDE_INT.
      	* expr.c (get_bit_range): Likewise.
      	(expand_assignment): Update call accordingly.
      	* fold-const.c (optimize_bit_field_compare): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255912
      Richard Sandiford committed
    • [AArch64] Tweak aarch64_classify_address interface · a97d8b98
      Previously aarch64_classify_address used an rtx code to distinguish
      LDP/STP addresses from normal addresses; the code was PARALLEL
      to select LDP/STP and anything else to select normal addresses.
      This patch replaces that parameter with a dedicated enum.
      
      The SVE port will add another enum value that didn't map naturally
      to an rtx code.
      
      2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* config/aarch64/aarch64-protos.h (aarch64_addr_query_type): New enum.
      	(aarch64_legitimate_address_p): Use it instead of an rtx code,
      	as an optional final parameter.
      	* config/aarch64/aarch64.c (aarch64_classify_address): Likewise.
      	(aarch64_legitimate_address_p): Likewise.
      	(aarch64_print_address_internal): Take an aarch64_addr_query_type
      	instead of an rtx code.
      	(aarch64_address_valid_for_prefetch_p): Update calls accordingly.
      	(aarch64_legitimate_address_hook_p): Likewise.
      	(aarch64_print_ldpstp_address): Likewise.
      	(aarch64_print_operand_address): Likewise.
      	(aarch64_address_cost): Likewise.
      	* config/aarch64/constraints.md (Uml, Umq, Ump, Utq): Likewise.
      	* config/aarch64/predicates.md (aarch64_mem_pair_operand): Likewise.
      	(aarch64_mem_pair_lanes_operand): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r255911
      Richard Sandiford committed
    • tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Call update_stmt_if_modified. · 75b7462e
      	* tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Call
      	update_stmt_if_modified.
      
      From-SVN: r255910
      Richard Biener committed
    • Daily bump. · 8ba8e7af
      From-SVN: r255909
      GCC Administrator committed
  2. 20 Dec, 2017 6 commits
    • re PR tree-optimization/83491 (ICE in execute_cse_reciprocals_1 at gcc/tree-ssa-math-opts.c:585) · 5f84eb27
      	PR tree-optimization/83491
      	* tree-ssa-math-opts.c (execute_cse_reciprocals_1): Check for SSA_NAME
      	before walking uses.  Improve coding style and comments.
      
      	PR tree-optimization/83491
      	* gcc.dg/pr83491.c: Add new test.
      
      From-SVN: r255906
      Wilco Dijkstra committed
    • Simplify fold_internal_goacc_dim · 67d2229e
      2017-12-20  Tom de Vries  <tom@codesourcery.com>
      
      	* gimple-fold.c (fold_internal_goacc_dim): Simplify.
      
      From-SVN: r255905
      Tom de Vries committed
    • re PR libstdc++/82522 (std::map::insert(value_type &&) not selected) · 1679da15
      2017-12-20  François Dumont  <fdumont@gcc.gnu.org>
      
      	PR libstdc++/82522
      	* include/debug/map.h (map::insert(value_type&&))
      	(map::insert(const_iterator, value_type&&)): Add overload for rvalues.
      	* include/debug/multimap.h (multimap::insert(value_type&&))
      	(multimap::insert(const_iterator, value_type&&)): Likewise.
      	* include/debug/unordered_map (unordered_map::insert(value_type&&))
      	(unordered_map::insert(const_iterator, value_type&&))
      	(unordered_multimap::insert(value_type&&))
      	(unordered_multimap::insert(const_iterator, value_type&&)): Likewise.
      	* testsuite/23_containers/map/modifiers/insert/dr2354.cc (test02): New.
      	* testsuite/23_containers/multimap/modifiers/insert/dr2354.cc (test02):
      	New.
      	* testsuite/23_containers/unordered_map/insert/dr2354.cc (test02): New.
      	* testsuite/23_containers/unordered_multimap/insert/dr2354.cc (test02):
      	New.
      
      From-SVN: r255904
      François Dumont committed
    • re PR fortran/83436 (Internal file cannot be accessed by UNFORMATTED data… · 7dd34222
      re PR fortran/83436 (Internal file cannot be accessed by UNFORMATTED data transfer when reading from /dev/urandom)
      
      2017-12-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/83436
      	* gfortran.dg/internal_readwrite_4.f90: New test.
      
      From-SVN: r255902
      Thomas Koenig committed
    • re PR ipa/83506 (ICE: Segmentation fault in force_nonfallthru_and_redirect) · 442db276
      	PR ipa/83506
      	* ipa-fnsummary.c (pass_data_ipa_free_fn_summary): Use 0 for
      	todo_flags_finish.
      	(pass_ipa_free_fn_summary): Add small_p private data member,
      	initialize to false in the ctor.
      	(pass_ipa_free_fn_summary::clone,
      	pass_ipa_free_fn_summary::set_pass_param,
      	pass_ipa_free_fn_summary::gate): New methods.
      	(pass_ipa_free_fn_summary::execute): Return TODO_remove_functions
      	| TODO_dump_symtab if small_p.
      	* passes.def: Add true parm for the existing pass_ipa_free_fn_summary
      	entry and add another instance of the pass with false parm after
      	ipa-pure-const.
      	* ipa-pure-const.c (pass_ipa_pure_const): Don't call
      	ipa_free_fn_summary here.
      
      	* gcc.dg/pr83506.c: New test.
      	* gcc.dg/ipa/ctor-empty-1.c: Use -fdump-ipa-free-fnsummary1 instead
      	of -fdump-ipa-free-fnsummary and scan in free-fnsummary1 instead of
      	free-fnsummary dump.
      
      From-SVN: r255901
      Jakub Jelinek committed
    • gimplify.c (gimplify_return_expr): Remove dead error_mark_node check. · 76a2bcdc
      2017-12-20  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* gimplify.c (gimplify_return_expr): Remove dead error_mark_node check.
      
      From-SVN: r255900
      Paolo Carlini committed