1. 16 May, 2018 7 commits
    • tree-vectorizer.h (struct stmt_info_for_cost): Add where member. · 68435eb2
      2018-05-16  Richard Biener  <rguenther@suse.de>
      
      	* tree-vectorizer.h (struct stmt_info_for_cost): Add where member.
      	(dump_stmt_cost): Declare.
      	(add_stmt_cost): Dump cost we add.
      	(add_stmt_costs): New function.
      	(vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
      	No longer exported.
      	(vect_analyze_stmt): Adjust prototype.
      	(vectorizable_condition): Likewise.
      	(vectorizable_live_operation): Likewise.
      	(vectorizable_reduction): Likewise.
      	(vectorizable_induction): Likewise.
      	* tree-vect-loop.c (vect_analyze_loop_operations): Create local
      	cost vector to pass to vectorizable_ and record afterwards.
      	(vect_model_reduction_cost): Take cost vector argument and adjust.
      	(vect_model_induction_cost): Likewise.
      	(vectorizable_reduction): Likewise.
      	(vectorizable_induction): Likewise.
      	(vectorizable_live_operation): Likewise.
      	* tree-vect-slp.c (vect_create_new_slp_node): Initialize
      	SLP_TREE_NUMBER_OF_VEC_STMTS.
      	(vect_analyze_slp_cost_1): Remove.
      	(vect_analyze_slp_cost): Likewise.
      	(vect_slp_analyze_node_operations): Take visited args and
      	a target cost vector.  Avoid processing already visited stmt sets.
      	(vect_slp_analyze_operations): Use a local cost vector to gather
      	costs and register those of non-discarded instances.
      	(vect_bb_vectorization_profitable_p): Use add_stmt_costs.
      	(vect_schedule_slp_instance): Remove copying of
      	SLP_TREE_NUMBER_OF_VEC_STMTS.  Instead assert that it is not
      	zero.
      	* tree-vect-stmts.c (record_stmt_cost): Remove path directly
      	adding cost.  Record cost entry location.
      	(vect_prologue_cost_for_slp_op): Function to compute cost of
      	a constant or invariant generated for SLP vect in the prologue,
      	split out from vect_analyze_slp_cost_1.
      	(vect_model_simple_cost): Make static.  Adjust for SLP costing.
      	(vect_model_promotion_demotion_cost): Likewise.
      	(vect_model_store_cost): Likewise, make static.
      	(vect_model_load_cost): Likewise.
      	(vectorizable_bswap): Add cost vector arg and adjust.
      	(vectorizable_call): Likewise.
      	(vectorizable_simd_clone_call): Likewise.
      	(vectorizable_conversion): Likewise.
      	(vectorizable_assignment): Likewise.
      	(vectorizable_shift): Likewise.
      	(vectorizable_operation): Likewise.
      	(vectorizable_store): Likewise.
      	(vectorizable_load): Likewise.
      	(vectorizable_condition): Likewise.
      	(vectorizable_comparison): Likewise.
      	(can_vectorize_live_stmts): Likewise.
      	(vect_analyze_stmt): Likewise.
      	(vect_transform_stmt): Adjust calls to vectorizable_*.
      	* tree-vectorizer.c: Include gimple-pretty-print.h.
      	(dump_stmt_cost): New function.
      
      From-SVN: r260289
      Richard Biener committed
    • params.def (PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE): New param. · 311eb816
      2018-05-16  Richard Biener  <rguenther@suse.de>
      
      	* params.def (PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE): New param.
      	* doc/invoke.texi (dse-max-alias-queries-per-store): Document.
      	* tree-ssa-dse.c: Include tree-ssa-loop.h.
      	(check_name): New callback.
      	(dse_classify_store): Track cycles via a visited bitmap of PHI
      	defs and simplify handling of in-loop and across loop dead stores
      	and properly fail for loop-variant refs.  Handle byte-tracking with
      	multiple defs.  Use PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE for
      	limiting the walk.
      
      	* gcc.dg/tree-ssa/ssa-dse-32.c: New testcase.
      	* gcc.dg/tree-ssa/ssa-dse-33.c: Likewise.
      	* gcc.dg/uninit-pr81897-2.c: Use -fno-tree-dse.
      
      From-SVN: r260288
      Richard Biener committed
    • Handle vector boolean types when calculating the SLP unroll factor · 1f3cb663
      The SLP unrolling factor is calculated by finding the smallest
      scalar type for each SLP statement and taking the number of required
      lanes from the vector versions of those scalar types.  E.g. for an
      int32->int64 conversion, it's the vector of int32s rather than the
      vector of int64s that determines the unroll factor.
      
      We rely on tree-vect-patterns.c to replace boolean operations like:
      
         bool a, b, c;
         a = b & c;
      
      with integer operations of whatever the best size is in context.
      E.g. if b and c are fed by comparisons of ints, a, b and c will become
      the appropriate size for an int comparison.  For most targets this means
      that a, b and c will end up as int-sized themselves, but on targets like
      SVE and AVX512 with packed vector booleans, they'll instead become a
      small bitfield like :1, padded to a byte for memory purposes.
      The SLP code would then take these scalar types and try to calculate
      the vector type for them, causing the unroll factor to be much higher
      than necessary.
      
      This patch tries to make the SLP code use the same approach as the
      loop vectorizer, by splitting out the code that calculates the
      statement vector type and the vector type that should be used for
      the number of units.
      
      2018-05-16  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* tree-vectorizer.h (vect_get_vector_types_for_stmt): Declare.
      	(vect_get_mask_type_for_stmt): Likewise.
      	* tree-vect-slp.c (vect_two_operations_perm_ok_p): New function,
      	split out from...
      	(vect_build_slp_tree_1): ...here.  Use vect_get_vector_types_for_stmt
      	to determine the statement's vector type and the vector type that
      	should be used for calculating nunits.  Deal with cases in which
      	the type has to be deferred.
      	(vect_slp_analyze_node_operations): Use vect_get_vector_types_for_stmt
      	and vect_get_mask_type_for_stmt to calculate STMT_VINFO_VECTYPE.
      	* tree-vect-loop.c (vect_determine_vf_for_stmt_1)
      	(vect_determine_vf_for_stmt): New functions, split out from...
      	(vect_determine_vectorization_factor): ...here.
      	* tree-vect-stmts.c (vect_get_vector_types_for_stmt)
      	(vect_get_mask_type_for_stmt): New functions, split out from
      	vect_determine_vectorization_factor.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/vcond_10.c: New test.
      	* gcc.target/aarch64/sve/vcond_10_run.c: Likewise.
      	* gcc.target/aarch64/sve/vcond_11.c: Likewise.
      	* gcc.target/aarch64/sve/vcond_11_run.c: Likewise.
      
      From-SVN: r260287
      Richard Sandiford committed
    • tree-cfg.c (verify_gimple_assign_ternary): Properly verify the [VEC_]COND_EXPR embedded comparison. · c448fede
      2018-05-16  Richard Biener  <rguenther@suse.de>
      
      	* tree-cfg.c (verify_gimple_assign_ternary): Properly
      	verify the [VEC_]COND_EXPR embedded comparison.
      
      From-SVN: r260283
      Richard Biener committed
    • PR tree-optimization/85753 - missing -Wrestrict on memcpy into a member array · 7ad491c6
      gcc/ChangeLog:
      
      	PR tree-optimization/85753
      	* gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Handle
      	RECORD_TYPE in addition to ARRAY_TYPE.
      
      gcc/testsuite/ChangeLog:
      
      	PR tree-optimization/85753
      	* gcc.dg/Wrestrict-10.c: Adjust.
      	* gcc.dg/Wrestrict-16.c: New test.
      
      From-SVN: r260280
      Martin Sebor committed
    • cp-tree.h (cp_expr): Remove copy constructor. · e4a14896
      	* cp-tree.h (cp_expr): Remove copy constructor.
      
      	* mangle.c (struct releasing_vec): Declare copy constructor.
      
      From-SVN: r260279
      Jason Merrill committed
    • Daily bump. · 67ea8181
      From-SVN: r260277
      GCC Administrator committed
  2. 15 May, 2018 16 commits
    • PR c++/64372 - CWG 1560, gratuitous lvalue-rvalue conversion in ?: · 30a52a6d
      	* call.c (build_conditional_expr_1): Don't force_rvalue when one arm
      	is a throw-expression.
      
      From-SVN: r260272
      Jason Merrill committed
    • PR middle-end/85643 - attribute nonstring fails to squash -Wstringop-truncation warning · 27560569
      gcc/ChangeLog:
      
      	PR middle-end/85643
      	* calls.c (get_attr_nonstring_decl): Handle MEM_REF.
      
      gcc/testsuite/ChangeLog:
      
      	PR middle-end/85643
      	* c-c++-common/attr-nonstring-7.c: New test.
      
      From-SVN: r260271
      Martin Sebor committed
    • re PR lto/85583 (lto1: internal compiler error: in lto_balanced_map, at lto/lto-partition.c:833) · ab168044
      
      	PR lto/85583
      	* lto-partition.c (account_reference_p): Do not account
      	references from aliases; do not account refernces from
      	external initializers.
      
      From-SVN: r260266
      Jan Hubicka committed
    • cp-tree.h (DECL_MAYBE_IN_CHARGE_CDTOR_P): New. · 5f150326
      2018-05-15  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* cp-tree.h (DECL_MAYBE_IN_CHARGE_CDTOR_P): New.
      	(FOR_EACH_CLONE): Update.
      	* decl.c (grokdeclarator): Use it.
      	* decl2.c (vague_linkage_p): Likewise.
      	* mangle.c (mangle_decl): Likewise.
      	* method.c (lazily_declare_fn): Likewise.
      	* optimize.c (can_alias_cdtor, maybe_clone_body): Likewise.
      	* repo.c (repo_emit_p): Likewise.
      	* tree.c (decl_linkage): Likewise.
      
      From-SVN: r260264
      Paolo Carlini committed
    • PR libstdc++/85749 constrain seed sequences for random number engines · 5a7960da
      Constrain constructors and member functions of random number engines so
      that functions taking seed sequences can only be called with types that
      meet the seed sequence requirements.
      
      	PR libstdc++/85749
      	* include/bits/random.h (__detail::__is_seed_seq): New SFINAE helper.
      	(linear_congruential_engine, mersenne_twister_engine)
      	(subtract_with_carry_engine, discard_block_engine)
      	(independent_bits_engine, shuffle_order_engine): Use __is_seed_seq to
      	constrain function templates taking seed sequences.
      	* include/bits/random.tcc (linear_congruential_engine::seed(_Sseq&))
      	(mersenne_twister_engine::seed(_Sseq&))
      	(subtract_with_carry_engine::seed(_Sseq&)): Change return types to
      	match declarations.
      	* include/ext/random (simd_fast_mersenne_twister_engine): Use
      	__is_seed_seq to constrain function templates taking seed sequences.
      	* include/ext/random.tcc (simd_fast_mersenne_twister_engine::seed):
      	Change return type to match declaration.
      	* testsuite/26_numerics/random/discard_block_engine/cons/seed_seq2.cc:
      	New.
      	* testsuite/26_numerics/random/independent_bits_engine/cons/
      	seed_seq2.cc: New.
      	* testsuite/26_numerics/random/linear_congruential_engine/cons/
      	seed_seq2.cc: New.
      	* testsuite/26_numerics/random/mersenne_twister_engine/cons/
      	seed_seq2.cc: New.
      	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
      	* testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq2.cc:
      	New.
      	* testsuite/26_numerics/random/subtract_with_carry_engine/cons/
      	seed_seq2.cc: New.
      	* testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/
      	seed_seq2.cc: New.
      
      From-SVN: r260263
      Jonathan Wakely committed
    • PR libstdc++/83891 fix path::is_absolute() for non-POSIX targets · c3b61fda
      The correct definition seems to be has_root_directory() for all systems
      we care about.
      
      	PR libstdc++/83891
      	* include/bits/fs_path.h (path::is_absolute()): Use same definition
      	for all operating systems.
      	* include/experimental/bits/fs_path.h (path::is_absolute()): Likewise.
      	* testsuite/27_io/filesystem/path/query/is_absolute.cc: New.
      	* testsuite/27_io/filesystem/path/query/is_relative.cc: Fix comment.
      	* testsuite/experimental/filesystem/path/query/is_absolute.cc: New.
      
      From-SVN: r260259
      Jonathan Wakely committed
    • Remove unused headers from tests · b0e01682
      	* testsuite/27_io/filesystem/path/decompose/extension.cc: Remove
      	unused <vector> header.
      	* testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
      	* testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise.
      	* testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise.
      	* testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise.
      	* testsuite/27_io/filesystem/path/query/has_relative_path.cc:
      	Likewise.
      	* testsuite/27_io/filesystem/path/query/has_root_directory.cc:
      	Likewise.
      	* testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise.
      	* testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise.
      	* testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
      	* testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise.
      	* testsuite/experimental/filesystem/path/decompose/extension.cc:
      	Likewise.
      	* testsuite/experimental/filesystem/path/query/empty.cc: Likewise.
      	* testsuite/experimental/filesystem/path/query/has_extension.cc:
      	Likewise.
      	* testsuite/experimental/filesystem/path/query/has_filename.cc:
      	Likewise.
      	* testsuite/experimental/filesystem/path/query/has_parent_path.cc:
      	Likewise.
      	* testsuite/experimental/filesystem/path/query/has_relative_path.cc:
      	Likewise.
      	* testsuite/experimental/filesystem/path/query/has_root_directory.cc:
      	Likewise.
      	* testsuite/experimental/filesystem/path/query/has_root_name.cc:
      	Likewise.
      	* testsuite/experimental/filesystem/path/query/has_root_path.cc:
      	Likewise.
      	* testsuite/experimental/filesystem/path/query/has_stem.cc: Likewise.
      	* testsuite/experimental/filesystem/path/query/is_relative.cc:
      	Likewise.
      
      From-SVN: r260256
      Jonathan Wakely committed
    • PR libstdc++/84159 fix appending strings to paths · 6cda876d
      The path::operator/=(const Source&) and path::append overloads were
      still following the semantics of the Filesystem TS not C++17. Only
      the path::operator/=(const path&) overload was correct.
      
      This change adds more tests for path::operator/=(const path&) and adds
      new tests to verify that the other append operations have equivalent
      behaviour.
      
      	PR libstdc++/84159
      	* include/bits/fs_path.h (path::operator/=, path::append): Construct
      	temporary path before calling _M_append.
      	(path::_M_append): Change parameter to path and implement C++17
      	semantics.
      	* testsuite/27_io/filesystem/path/append/path.cc: Add helper function
      	and more examples from the standard.
      	* testsuite/27_io/filesystem/path/append/source.cc: New.
      	* testsuite/27_io/filesystem/path/decompose/filename.cc: Add comment.
      	* testsuite/27_io/filesystem/path/nonmember/append.cc: New.
      
      From-SVN: r260255
      Jonathan Wakely committed
    • Qualify std::__invoke in <variant> to prevent ADL · e4a5135f
      	* include/std/variant (__gen_vtable_impl::__visit_invoke): Qualify
      	__invoke to prevent ADL.
      
      From-SVN: r260254
      Jonathan Wakely committed
    • tree-ssa-dse.c (dse_classify_store): Remove use_stmt parameter, add by_clobber_p one. · afe3cc73
      2018-05-15  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-dse.c (dse_classify_store): Remove use_stmt parameter,
      	add by_clobber_p one.  Change algorithm to collect all defs
      	representing uses we need to walk and try reducing them to
      	a single one before failing.
      	(dse_dom_walker::dse_optimize_stmt): Adjust.
      
      	* gcc.dg/tree-ssa/ssa-dse-31.c: New testcase.
      
      From-SVN: r260253
      Richard Biener committed
    • DWARF: Use DW_OP_addrx and DW_OP_constx for DWARF5. · 35b361b1
      For older DWARF and -gsplit-dwarf we want to emit DW_OP_GNU_addr_index
      and DW_OP_GNU_const_index, but for DWARF5 we should use DW_OP_addrx
      and DW_OP_constx.
      
      gcc/ChangeLog:
      
      	* dwarf2out.c (dwarf_OP): Handle DW_OP_addrx and DW_OP_constx.
      	(size_of_loc_descr): Likewise.
      	(output_loc_operands): Likewise.
      	(output_loc_operands_raw): Likewise.
      	(dw_addr_op): Use dwarf_OP () for DW_OP_constx and DW_OP_addrx.
      	(resolve_addr_in_expr): Handle DW_OP_addrx and DW_OP_constx.
      	(hash_loc_operands): Likewise.
      	(compare_loc_operands): Likewise.
      
      From-SVN: r260252
      Mark Wielaard committed
    • DWARF calculate the number of indexed addresses. · 01ec978c
      The length in the .debug_addr unit header was calculated using the number
      of elements in the addr_index_table. This is wrong because the entries in
      the table are refcounted and only those with a refcount > 0 are actually
      put in the index. Add a helper function count_index_addrs to get the
      correct number of addresses in the index.
      
      gcc/ChangeLog:
      
      	* dwarf2out.c (count_index_addrs): New function.
      	(dwarf2out_finish): Use count_index_addrs to calculate addrs_length.
      
      From-SVN: r260251
      Mark Wielaard committed
    • re PR tree-optimization/83648 (missing -Wsuggest-attribute=malloc on a trivial… · a8c80d03
      re PR tree-optimization/83648 (missing -Wsuggest-attribute=malloc on a trivial malloc-like function)
      
      2018-05-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      
      	PR tree-optimization/83648
      	* ipa-pure-const.c (malloc_candidate_p): Allow function with NULL
      	return value as malloc candidate.
      
      testsuite/
      	* gcc.dg/tree-ssa/pr83648.c: New test.
      	* gcc.dg/tree-ssa/pr83648-2.c: Likewise.
      
      From-SVN: r260250
      Prathamesh Kulkarni committed
    • re PR ipa/85734 (--suggest-attribute=malloc misdiagnoses static functions) · 0fac5f2a
      2018-05-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      
      	PR ipa/85734
      	* ipa-pure-const.c (warn_function_malloc): Pass value of known_finite param
      	as true in call to suggest_attribute.
      
      testsuite/
      	* gcc.dg/ipa/pr85734.c: New test.
      
      From-SVN: r260249
      Prathamesh Kulkarni committed
    • Daily bump. · a25c2c79
      From-SVN: r260248
      GCC Administrator committed
  3. 14 May, 2018 17 commits
    • re PR target/85756 (wrong code at -Os on x86-64-linux-gnu in 32-bit mode) · ef6bd9cd
      	PR target/85756
      	* gnat.dg/opt70.adb: New test.
      	* gnat.dg/opt70_pkg.ad[sb]: New helper.
      
      From-SVN: r260239
      Eric Botcazou committed
    • Handle TYPE_HAS_LATE_RETURN_TYPE like ref-qualifier and eh spec. · 403f22aa
      	* tree.c (build_cp_fntype_variant): New.
      	(build_ref_qualified_type, build_exception_variant)
      	(strip_typedefs, cxx_copy_lang_qualifiers): Use it.
      	(cxx_type_hash_eq, cp_check_qualified_type): Check
      	TYPE_HAS_LATE_RETURN_TYPE.
      	(cp_build_type_attribute_variant): Check cxx_type_hash_eq.
      	(cp_build_qualified_type_real): No need to preserve C++ qualifiers.
      	* class.c (build_clone): Use cxx_copy_lang_qualifiers.
      	(adjust_clone_args): Likewise.
      	* decl.c (grokfndecl): Add late_return_type_p parameter.  Use
      	build_cp_fntype_variant.
      	(grokdeclarator): Pass late_return_type_p to grokfndecl.
      	(check_function_type): Use cxx_copy_lang_qualifiers.
      	(static_fn_type): Use cxx_copy_lang_qualifiers.
      	* decl2.c (build_memfn_type, maybe_retrofit_in_chrg)
      	(cp_reconstruct_complex_type, coerce_new_type, coerce_delete_type)
      	(change_return_type): Use cxx_copy_lang_qualifiers.
      	* mangle.c (write_type): Use cxx_copy_lang_qualifiers.
      	* parser.c (cp_parser_lambda_declarator_opt): Represent an explicit
      	return type on the declarator like a normal trailing return type.
      	* pt.c (tsubst_function_type): Use build_cp_fntype_variant.
      	(copy_default_args_to_explicit_spec): Use cxx_copy_lang_qualifiers.
      	* typeck.c (merge_types): Use build_cp_fntype_variant.
      
      From-SVN: r260238
      Jason Merrill committed
    • rs6000: Fix -mreadonly-in-sdata documentation · dc05c538
      For some reason I made both an @item and an @itemx for
      -mreadonly-in-sdata.  This fixes it.
      
      
      	* doc/invoke.texi (RS/6000 and PowerPC Options): Delete @itemx for
      	-mreadonly-in-sdata.
      
      From-SVN: r260237
      Segher Boessenkool committed
    • PR libstdc++/81256 fix exception handling in basic_filebuf::close · e77497ab
      	PR libstdc++/81256
      	* include/bits/fstream.tcc (basic_filebuf::close): Do not swallow
      	exceptions from _M_terminate_output().
      	* include/std/fstream (basic_filebuf::~basic_filebuf): Swallow any
      	exceptions from close().
      	* testsuite/27_io/basic_filebuf/close/81256.cc: New.
      
      From-SVN: r260236
      Jonathan Wakely committed
    • [AArch64] Add combine pattern to fuse AESE/AESMC instructions · 10c54e5b
      When the AESE,AESD and AESMC, AESMC instructions are generated through the appropriate arm_neon.h intrinsics
      we really want to keep them together when the AESE feeds into an AESMC and fusion is supported by the target CPU.
      We have macro-fusion hooks and scheduling model forwarding paths defined to facilitate that.
      It is, however, not always enough.
      
      This patch adds another mechanism for doing that.
      When we can detect during combine that the required dependency is exists (AESE -> AESMC, AESD -> AESIMC)
      just keep them together with a combine pattern throughout the rest of compilation.
      We won't ever want to split them.
      
      The testcases generate 4 AESE(D) instructions in a block followed by 4 AES(I)MC instructions that
      consume the corresponding results and it also adds a bunch of computations in-between so that the
      AESE and AESMC instructions are not trivially back-to-back, thus exercising the compiler's ability
      to bring them together.
      
      With this patch all 4 pairs are fused whereas before a couple of fusions would be missed due to intervening
      arithmetic and memory instructions.
      
      	* config/aarch64/aarch64-simd.md (*aarch64_crypto_aese_fused):
      	New pattern.
      	(aarch64_crypto_aesd_fused): Likewise.
      
      	* gcc.target/aarch64/crypto-fuse-1.c: New test.
      	* gcc.target/aarch64/crypto-fuse-2.c: Likewise.
      
      From-SVN: r260234
      Kyrylo Tkachov committed
    • Remove remaining uses of * in patterns · 43d0a8ee
      Remove the remaining uses of '*' from aarch64.md.
      Using '*' in alternatives is typically incorrect as it tells the register
      allocator to ignore those alternatives.  Also add a missing '?' so we
      prefer a floating point register for same-size int<->fp conversions.
      
          gcc/
      	* config/aarch64/aarch64.md (mov<mode>): Remove '*' in alternatives.
      	(movsi_aarch64): Likewise.
      	(load_pairsi): Likewise.
      	(load_pairdi): Likewise.
      	(store_pairsi): Likewise.
      	(store_pairdi): Likewise.
      	(load_pairsf): Likewise.
      	(load_pairdf): Likewise.
      	(store_pairsf): Likewise.
      	(store_pairdf): Likewise.
      	(zero_extend): Likewise.
      	(trunc): Swap alternatives.
      	(fcvt_target): Add '?' to prefer w over r.
      
          testsuite/
      	* gcc.target/aarch64/vmov_n_1.c: Update test.
      	* gcc.target/aarch64/vfp-1.c: Update test.
      
      From-SVN: r260233
      Wilco Dijkstra committed
    • * testsuite/ChangeLog: Add missing PR number. · 2717c64d
      From-SVN: r260232
      Uros Bizjak committed
    • re PR target/85756 (wrong code at -Os on x86-64-linux-gnu in 32-bit mode) · 9c1326aa
      	PR target/85756
      	* config/i386/i386.md: Disallow non-commutative arithmetics in
      	last twpeephole for mem {+,-,&,|,^}= x; mem != 0 after cmpelim
      	optimization.  Use COMMUTATIVE_ARITH_P test rather than != MINUS
      	in the peephole2 before it.
      
      testsuite/ChangeLog:
      
      	* gcc.c-torture/execute/pr85756.c: New test.
      
      From-SVN: r260231
      Jakub Jelinek committed
    • Add __attribute__((malloc) to allocator and remove unused code · cd2f262b
      	* include/bits/valarray_array.h (__valarray_get_memory): Remove.
      	(__valarray_get_storage): Call operator new directly. Remove ignored
      	top-level restrict qualifier and add malloc attribute instead.
      	(_Array<_Tp>::_Array(size_t)): Remove unused constructor.
      
      From-SVN: r260230
      Jonathan Wakely committed
    • PR libstdc++/67554 Do not pass null pointers to memcpy · 6bfbebb0
      	PR libstdc++/67554
      	* include/bits/valarray_array.h (_Array_copy_ctor<_Tp, true>)
      	(_Array_copier<_Tp, true>): Do not pass null pointers to memcpy.
      
      From-SVN: r260229
      Jonathan Wakely committed
    • cp-tree.h (TYPE_REF_P): New. · 9f613f06
      2018-05-14  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* cp-tree.h (TYPE_REF_P): New.
      	(TYPE_OBJ_P, TYPE_REF_OBJ_P, TYPE_REFFN_P): Update.
      	* call.c (build_list_conv, build_aggr_conv, standard_conversion,
      	direct_reference_binding, reference_binding, implicit_conversion,
      	add_builtin_candidate, build_user_type_conversion_1, build_op_call_1,
      	build_new_op_1, build_x_va_arg, conv_binds_ref_to_prvalue,
      	build_over_call, perform_implicit_conversion_flags,
      	extend_ref_init_temps, type_has_extended_temps): Use it.
      	* class.c (one_inheriting_sig, check_field_decls,
      	check_bases_and_members, find_flexarrays, finish_struct,
      	fixed_type_or_null): Likewise.
      	* constexpr.c (literal_type_p, cxx_bind_parameters_in_call,
      	non_const_var_error, cxx_eval_constant_expression,
      	potential_constant_expression_1): Likewise.
      	* cp-gimplify.c (omp_var_to_track, omp_cxx_notice_variable,
      	cp_genericize_r, cxx_omp_privatize_by_reference,
      	cxx_omp_const_qual_no_mutable, cxx_omp_finish_clause,
      	cp_fold_maybe_rvalue): Likewise.
      	* cp-ubsan.c (cp_ubsan_maybe_instrument_downcast): Likewise.
      	* cvt.c (build_up_reference, convert_to_reference,
      	convert_from_reference, convert_to_void, noexcept_conv_p,
      	fnptr_conv_p): Likewise.
      	* decl.c (poplevel, check_for_uninitialized_const_var,
      	check_initializer, initialize_local_var, cp_finish_decl,
      	get_tuple_decomp_init, cp_finish_decomp, grokdeclarator, copy_fn_p,
      	move_signature_fn_p, grok_op_properties, finish_function): Likewise.
      	* decl2.c (grok_array_decl, cp_reconstruct_complex_type,
      	decl_maybe_constant_var_p): Likewise.
      	* error.c (dump_type_prefix, dump_expr): Likewise.
      	* except.c (initialize_handler_parm, complete_ptr_ref_or_void_ptr_p,
      	is_admissible_throw_operand_or_catch_parameter): Likewise.
      	* expr.c (mark_use): Likewise.
      	* init.c (build_zero_init_1, build_value_init_noctor,
      	perform_member_init, diagnose_uninitialized_cst_or_ref_member_1,
      	build_new, build_delete): Likewise.
      	* lambda.c (build_lambda_object): Likewise.
      	* mangle.c (write_expression, write_template_arg): Likewise.
      	* method.c (forward_parm, do_build_copy_constructor,
      	do_build_copy_assign, build_stub_object, constructible_expr,
      	walk_field_subobs): Likewise.
      	* parser.c (cp_parser_omp_for_loop_init,
      	cp_parser_omp_declare_reduction_exprs,
      	cp_parser_omp_declare_reduction): Likewise.
      	* pt.c (convert_nontype_argument_function, convert_nontype_argument,
      	convert_template_argument, tsubst_pack_expansion,
      	tsubst_function_decl, tsubst_decl, tsubst, tsubst_copy_and_build,
      	maybe_adjust_types_for_deduction, check_cv_quals_for_unify, unify,
      	more_specialized_fn, invalid_nontype_parm_type_p, dependent_type_p_r,
      	value_dependent_expression_p, build_deduction_guide): Likewise.
      	* semantics.c (finish_handler_parms, finish_non_static_data_member,
      	finish_compound_literal, omp_privatize_field,
      	handle_omp_array_sections_1, handle_omp_array_sections,
      	cp_check_omp_declare_reduction, finish_omp_reduction_clause,
      	finish_omp_declare_simd_methods, cp_finish_omp_clause_depend_sink,
      	finish_omp_clauses, finish_decltype_type, capture_decltype,
      	finish_builtin_launder): Likewise.
      	* tree.c (lvalue_kind, cp_build_reference_type, move,
      	cp_build_qualified_type_real, stabilize_expr, stabilize_init): Likewise.
      	* typeck.c (cxx_safe_arg_type_equiv_p, build_class_member_access_expr,
      	cp_build_indirect_ref_1, convert_arguments, warn_for_null_address,
      	cp_build_addr_expr_1, maybe_warn_about_useless_cast,
      	build_static_cast_1, build_static_cast, build_reinterpret_cast_1,
      	build_const_cast_1, cp_build_c_cast, cp_build_modify_expr,
      	convert_for_initialization,
      	maybe_warn_about_returning_address_of_local, check_return_expr,
      	cp_type_quals, casts_away_constness, non_reference): Likewise.
      	* typeck2.c (cxx_readonly_error, store_init_value,
      	process_init_constructor_record, build_x_arrow, build_functional_cast,
      	add_exception_specifier): Likewise.
      
      From-SVN: r260228
      Paolo Carlini committed
    • pt.c (tsubst): Check valid_array_size_p. · 403962ea
      	* pt.c (tsubst) [ARRAY_TYPE]: Check valid_array_size_p.
      
      	(tsubst_copy_and_build) [NEW_EXPR]: Clear in_decl.
      
      gcc/c-family/
      	* c-common.c (valid_array_size_p): Add complain parameter.
      	* c-common.h: ...which defaults to true.
      
      From-SVN: r260227
      Jason Merrill committed
    • PR libstdc++/82966 fix swapping of node handles · 3846b8e4
      	PR libstdc++/82966
      	* include/bits/node_handle.h (_Node_handle_common::_M_swap): Use value
      	instead of type.
      	* testsuite/23_containers/set/modifiers/node_swap.cc: New.
      
      From-SVN: r260226
      Jonathan Wakely committed
    • i386-common.c (OPTION_MASK_ISA_CLDEMOTE_SET, [...]): New defines. · f8d9957e
      2018-05-14  Sebastian Peryt  <sebastian.peryt@intel.com>
      
      gcc/
      
              * common/config/i386/i386-common.c (OPTION_MASK_ISA_CLDEMOTE_SET,
              OPTION_MASK_ISA_CLDEMOTE_UNSET): New defines.
              (ix86_handle_option): Handle -mcldemote.
              * config.gcc: New header.
              * config/i386/cldemoteintrin.h: New file.
              * config/i386/cpuid.h (bit_CLDEMOTE): New bit.
              * config/i386/driver-i386.c (host_detect_local_cpu): Detect
              -mcldemote.
              * config/i386/i386-c.c (ix86_target_macros_internal): Handle
              OPTION_MASK_ISA_CLDEMOTE.
              * config/i386/i386.c (ix86_target_string): Add -mcldemote.
              (ix86_valid_target_attribute_inner_p): Ditto.
              (enum ix86_builtins): Add IX86_BUILTIN_CLDEMOTE.
              (ix86_init_mmx_sse_builtins): Define __builtin_ia32_cldemote.
              (ix86_expand_builtin): Expand IX86_BUILTIN_CLDEMOTE.
              * config/i386/i386.h (TARGET_CLDEMOTE, TARGET_CLDEMOTE_P): New.
              * config/i386/i386.md (UNSPECV_CLDEMOTE): New.
              (cldemote): New.
              * config/i386/i386.opt: Add -mcldemote.
              * config/i386/x86intrin.h: New header.
              * doc/invoke.texi: Add -mcldemote.
      
      gcc/testsuite/
      
              * gcc.target/i386/cldemote-1.c: New test.
      
      From-SVN: r260224
      Sebastian Peryt committed
    • match-and-simplify.texi: Adjust :s documentation. · 485fa704
      2018-05-14  Richard Biener  <rguenther@suse.de>
      
      	* doc/match-and-simplify.texi: Adjust :s documentation.
      
      From-SVN: r260223
      Richard Biener committed
    • gcc_qsort: avoid oversized memcpy temporaries · c86ed2f1
      	* sort.cc (REORDER_23): Pass the type for the temporaries instead of
      	intended memcpy size.
      	(REORDER_45): Likewise.
      
      From-SVN: r260222
      Alexander Monakov committed
    • Daily bump. · cfbd17d5
      From-SVN: r260221
      GCC Administrator committed