1. 06 Dec, 2019 19 commits
    • [C++] Pass type uses through the verify_type_context hook · 02a32ab4
      This patch makes the C++ frontend work with the verify_type_context hook.
      We need some new type contexts for features that don't exist in C, but
      otherwise the patch is very similar to the C one.
      
      TCTX_CAPTURE_BY_COPY could really be treated as an instance of
      TCTX_FIELD, but the error message is better if we split it out.
      
      2019-12-06  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* target.h (TCTX_ALLOCATION, TCTX_DEALLOCATION, TCTX_EXCEPTIONS)
      	(TCTX_CAPTURE_BY_COPY): New type_context_kinds.
      	* config/aarch64/aarch64-sve-builtins.cc (verify_type_context):
      	Handle them.
      
      gcc/cp/
      	* decl.c (start_decl_1): Use verify_type_context to check whether
      	the target allows variables of a particular type to have static
      	or thread-local storage duration.
      	(check_array_initializer): Use verify_type_context to check whether
      	the target allows a particular type to be used as an array element.
      	(create_array_type_for_decl): Likewise.
      	(cp_finish_decl): Use verify_type_context to check whether
      	the target allows static member variables of a particular type.
      	(grokdeclarator): Likewise.  Also use verify_type_context to check
      	whether the target allows non-static member variables of a particular
      	type.
      	* except.c: Include target.h.
      	(is_admissible_throw_operand_or_catch_parameter): Use
      	verify_type_context to check whether the target allows particular
      	types to be thrown and caught.
      	* typeck2.c (add_exception_specifier): Likewise.
      	* init.c (build_new_1): Use verify_type_context to check whether
      	the target allows particular types to be dynamically allocated.
      	(build_vec_delete_1, build_delete): Use verify_type_context to check
      	whether the target allows particular types to be deleted.
      	* lambda.c (add_capture): Use verify_type_context to check
      	whether the target allows particular types to be captured by copy.
      	* pt.c: Include target.h.
      	(instantiate_class_template_1): Use verify_type_context to check
      	whether the target allows non-static member variables of a particular
      	type.
      	* typeck.c (cxx_alignof_expr): Use verify_type_context to check
      	whether the target allows the alignment of a particular type
      	to be measured.
      	(pointer_diff, cp_build_unary_op): Use verify_type_context to check
      	whether the target allows arithmetic involving pointers to particular
      	types.
      
      gcc/testsuite/
      	* g++.dg/ext/sve-sizeless-1.C: New test.
      	* g++.dg/ext/sve-sizeless-2.C: Likewise.
      
      From-SVN: r279058
      Richard Sandiford committed
    • Fix unrecognised GCN instruction. · 1e8f5d49
      2019-12-06  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/
      	* config/gcn/gcn-valu.md (gather<mode>_insn_1offset<exec>): Use %o
      	in the asm output.
      
      From-SVN: r279055
      Andrew Stubbs committed
    • Enable QI/HImode vector moves · 2b99bed8
      2019-12-06  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/
      	* config/gcn/gcn-valu.md (VEC_1REG_MODE): Remove V64QI and V64HI.
      	(VEC_1REG_ALT): Likewise.
      	(VEC_ALL1REG_MODE): New mode iterator.
      	(VEC_1REG_INT_MODE): Remove V64QI and V64HI.
      	(VEC_1REG_INT_ALT): Likewise.
      	(VEC_ALL1REG_INT_MODE): New mode interator.
      	(VEC_ALL1REG_INT_ALT): Likewise.
      	(VEC_REG_MODE): Remove V64QI and V64HI.
      	(VEC_ALLREG_MODE): New mode interator.
      	(vec_merge): Change to VEC_ALLREG_MODE.
      	(vec_merge_with_clobber): Likewise.
      	(vec_merge_with_vcc): Likewise.
      	(mov<mode>): Likewise.
      	(mov<mode>_unspec): Likewise.
      	(*mov<mode>): Change to VEC_ALL1REG_MODE.
      	(mov<mode>_exec): Likewise.
      	(*mov<mode>_exec_match): Likewise.
      	(mov<mode>_sgprbase): Likewise.
      	(reload_in<mode>): Change to VEC_ALLREG_MODE.
      	(reload_out<mode>): Likewise.
      	(scalar address splits): Likewise.
      	(*vec_set<mode>): Change to VEC_ALL1REG_MODE.
      	(vec_set<mode>): Change to VEC_ALLREG_MODE.
      	(*vec_set<mode>_1): Change to VEC_ALL1REG_MODE.
      	(vec_duplicate<mode><exec>): Likewise.
      	(vec_extract<mode><scalar_mode>): Likewise.
      	(vec_init<mode><scalar_mode>): Change to VEC_ALLREG_MODE.
      	(gather_load<mode>): Likewise.
      	(gather<mode>_exec): Likewise.
      	(gather<mode>_expr<exec>): Likewise.
      	(gather<mode>_insn_1offset<exec>): Likewise.
      	(gather<mode>_insn_1offset_ds<exec>): Likewise.
      	(gather<mode>_insn_2offsets<exec>): Likewise.
      	(ds_bpermute<mode>): Change to VEC_ALL1REG_MODE.
      	(VEC_INT_MODE): Remove V64QI and V64HI.
      	(vcond_mask_<mode>di): Change to VEC_ALLREG_MODE.
      	(vcond<VEC_1REG_MODE:mode><VEC_1REG_ALT:mode>): Change to
      	VEC_ALL1REG_MODE.
      	(vcond<VEC_1REG_MODE:mode><VEC_1REG_ALT:mode>_exec): Likewise.
      	(vcondu<VEC_1REG_MODE:mode><VEC_1REG_INT_ALT:mode>): Likewise.
      	(vcondu<VEC_1REG_MODE:mode><VEC_1REG_INT_ALT:mode>_exec): Likewise.
      	(maskload<mode>di): Change to VEC_ALL1REG_MODE.
      	(maskstore<mode>di): Likewise.
      	(mask_gather_load<mode>): Likewise.
      	(mov_from_lane63_<mode>): Likewise.
      	* config/gcn/gcn.c (gcn_vector_mode_supported_p): Renable V64QImode
      	and V64HImode vectorization.
      	(gcn_related_vector_mode): New function.
      	(TARGET_VECTORIZE_RELATED_MODE): New define.
      
      From-SVN: r279053
      Andrew Stubbs committed
    • re PR fortran/92775 (Incorrect expression in DW_AT_byte_stride on an array) · 2297a38e
      	PR fortran/92775
      	* trans.h (struct lang_type, struct lang_decl): Remove span member.
      	(GFC_DECL_SPAN, GFC_TYPE_ARRAY_SPAN): Remove macros.
      	* trans-array.h (gfc_get_descriptor_offsets_for_info): Add another
      	argument.
      	* trans-array.c (gfc_get_descriptor_offsets_for_info): Add SPAN_OFF
      	argument and initialize *SPAN_OFF to the offset of span field.
      	* trans-types.c (gfc_get_array_descr_info): Adjust
      	gfc_get_descriptor_offsets_for_info caller.  Compute elem_size
      	as base->span instead of TYPE_SIZE_UNIT (etype) constant.
      
      From-SVN: r279045
      Jakub Jelinek committed
    • [OpenMP/OpenACC/Fortran] Fix mapping of optional (present|absent) arguments · 6e4d01d6
      2019-12-06  Tobias Burnus  <tobias@codesourcery.com>
                  Kwok Cheung Yeung <kcy@codesourcery.com>
      
              gcc/fortran/
              * trans-openmp.c (gfc_build_conditional_assign,
              gfc_build_conditional_assign_expr): New static functions.
              (gfc_omp_finish_clause, gfc_trans_omp_clauses): Handle mapping of
              absent optional arguments and fix mapping of present optional args.
      
              gcc/
              * omp-low.c (lower_omp_target): For optional arguments, deref once
              more to obtain the type.
      
              libgomp/
              * oacc-mem.c (update_dev_host, gomp_acc_insert_pointer): Just return
              if input it a NULL pointer.
              * testsuite/libgomp.oacc-c-c++-common/lib-43.c: Remove; dependent on
              diagnostic of NULL pointer.
              * testsuite/libgomp.oacc-c-c++-common/lib-47.c: Ditto.
              * testsuite/libgomp.fortran/optional-map.f90: New.
              * testsuite/libgomp.fortran/use_device_addr-1.f90
              (test_dummy_opt_callee_1_absent): New.
              (test_dummy_opt_call_1): Call it.
              * testsuite/libgomp.fortran/use_device_addr-2.f90: Likewise.
              * testsuite/libgomp.fortran/use_device_addr-3.f90: Likewise.
              * testsuite/libgomp.fortran/use_device_addr-4.f90: Likewise.
              * testsuite/libgomp.oacc-fortran/optional-cache.f95: New.
              * testsuite/libgomp.oacc-fortran/optional-data-copyin-by-value.f90: New.
              * testsuite/libgomp.oacc-fortran/optional-data-copyin.f90: New.
              * testsuite/libgomp.oacc-fortran/optional-data-copyout.f90: New.
              * testsuite/libgomp.oacc-fortran/optional-data-enter-exit.f90: New.
              * testsuite/libgomp.oacc-fortran/optional-declare.f90: New.
              * testsuite/libgomp.oacc-fortran/optional-firstprivate.f90: New.
              * testsuite/libgomp.oacc-fortran/optional-host_data.f90: New.
              * testsuite/libgomp.oacc-fortran/optional-nested-calls.f90: New.
              * testsuite/libgomp.oacc-fortran/optional-private.f90: New.
              * testsuite/libgomp.oacc-fortran/optional-reduction.f90: New.
              * testsuite/libgomp.oacc-fortran/optional-update-device.f90: New.
              * testsuite/libgomp.oacc-fortran/optional-update-host.f90: New.
      
      
      Co-Authored-By: Kwok Cheung Yeung <kcy@codesourcery.com>
      
      From-SVN: r279043
      Tobias Burnus committed
    • match.pd (nop_convert): Remove empty match. · e150da38
      2019-12-06  Richard Biener  <rguenther@suse.de>
      
      	* match.pd (nop_convert): Remove empty match.  Use nop_convert?
      	everywhere.
      
      From-SVN: r279040
      Richard Biener committed
    • [testsuite][aarch64] type_redef_11.c: Update expected diagnostics. · 998d6381
      After the fix for PR c/36941 and PR c/88827 (r278976), this test emits
      a different error message and needs an update.
      
      2019-12-06  Christophe Lyon  <christophe.lyon@linaro.org>
      
      	PR c/36941
      	PR c/88827
      	* gcc.target/aarch64/sve/acle/general-c/type_redef_11.c: Update
      	expected diagnostics.
      
      From-SVN: r279039
      Christophe Lyon committed
    • Avoid quadratic behaviour in prune_runtime_alias_test_list · ea1ff9e4
      prune_runtime_alias_test_list used ordered_remove to remove a merged
      alias pair, which made the function quadratic when many aliases could
      be removed.
      
      I had a testcase in which these memmoves accounted for an impressive
      85% of compile time.  The fact that we had so many probably shows
      a deeper problem, but still, it's easy to remove as we go.
      
      2019-12-06  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-data-ref.c (prune_runtime_alias_test_list): Exit early
      	for empty vectors.  Avoid using ordered_remove and instead
      	shuffle the vector as we go.
      
      From-SVN: r279038
      Richard Sandiford committed
    • genmatch.c (enum tree_code): Remove CONVERT{0,1,2} and VIEW_CONVERT{0,1,2}. · 28fabd43
      2019-12-06  Richard Biener  <rguenther@suse.de>
      
      	* genmatch.c (enum tree_code): Remove CONVERT{0,1,2} and
      	VIEW_CONVERT{0,1,2}.
      	(expr::opt_grp): Add and initialize.
      	(lower_opt_convert): Rename to ...
      	(lower_opt): ... and work on opt_grp, simply switching operations
      	from being optional to being present or not.
      	(has_opt_convert): Rename to ...
      	(has_opt): ... and adjust.
      	(parser::parse_operation): Return the optional opt_grp,
      	remove special-casing of conditional operations and more generally
      	parse [digit]'?'.
      	(parser::parse_expr): Stick on the parsed opt_grp and perform
      	rough verification.
      	(parser::parse_for): Remove now unnecessary code.
      	(main): Likewise.
      	* doc/match-and-simplify.texi: Mention ? now works on all
      	unary operations and also match predicates.
      
      From-SVN: r279037
      Richard Biener committed
    • cgraphclones.c (cgraph_node::create_clone): Only localize toplevel functions, not inline clones. · f7f6be76
      	* cgraphclones.c (cgraph_node::create_clone): Only localize toplevel
      	functions, not inline clones.
      
      From-SVN: r279036
      Jan Hubicka committed
    • * cfgexpand.c (expand_debug_expr): Do not ICE on SAD_EXPR. · b51200e2
      From-SVN: r279035
      Jan Hubicka committed
    • genmatch.c (c_expr::gen_transform): Emit newlines from line number changes… · 330a968c
      genmatch.c (c_expr::gen_transform): Emit newlines from line number changes rather than after every semicolon.
      
      2019-12-06  Richard Biener  <rguenther@suse.de>
      
      	* genmatch.c (c_expr::gen_transform): Emit newlines from line
      	number changes rather than after every semicolon.
      
      From-SVN: r279034
      Richard Biener committed
    • re PR tree-optimization/92819 (Worse code generated on avx2 due to simplify_vector_constructor) · 2ef27856
      2019-12-06  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/92819
      	* match.pd (VEC_PERM_EXPR -> BIT_INSERT_EXPR): Handle inserts
      	into the last lane.  For two-element vectors try inserting
      	into the last lane when inserting into the first fails.
      
      	* gcc.target/i386/pr92819-1.c: New testcase.
      	* gcc.target/i386/pr92803.c: Adjust.
      
      From-SVN: r279033
      Richard Biener committed
    • re PR go/92810 (Compiling GCC go for aarch64_be-marvell-linux-gnu fails) · 9961856c
      	PR go/92810
          libgo: recognize aarch64_be as arm64be
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/210038
      
      From-SVN: r279032
      Ian Lance Taylor committed
    • PR testsuite/92829 - several test case failures starting with r278983 · 4e22a7ea
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/Warray-bounds-56.c: Rearrange code to avoid powerpc64*
      	failures.
      
      From-SVN: r279031
      Martin Sebor committed
    • common.opt (fprofile-partial-training): Terminate description with full stop. · c86b722b
      	* common.opt (fprofile-partial-training): Terminate description with
      	full stop.
      
      From-SVN: r279030
      Jakub Jelinek committed
    • PR middle-end/92622 - FAIL: gcc.dg/Warray-bounds-22.c on ILP32: missing warnings… · 37cd3454
      PR middle-end/92622 - FAIL: gcc.dg/Warray-bounds-22.c on ILP32: missing warnings for VLA on lines 67 and 69
      
      gcc/ChangeLog:
      
      	PR middle-end/92622
      	* tree-vrp.c (vrp_prop::check_array_ref): Avoid using a variable
      	left uninitialized by get_addr_base_and_unit_offset ofn failure.
      
      From-SVN: r279029
      Martin Sebor committed
    • Daily bump. · b801c7cd
      From-SVN: r279028
      GCC Administrator committed
    • Do not clear m_vr and bits in ipa_set_jf_unknown. · c199f329
      	* ipa-prop.c (ipa_set_jf_unknown): Do not clear bits and m_vr.
      	(detect_type_change_from_memory_writes): Remoe parameter JFUNC.
      	(detect_type_change): Likewise.
      	(detect_type_change_ssa): Likewise.
      	(ipa_analyze_virtual_call_uses): Update.
      
      From-SVN: r279025
      Jan Hubicka committed
  2. 05 Dec, 2019 21 commits
    • re PR tree-optimization/92768 (Maybe a wrong code for vector constants) · 81884594
      	PR tree-optimization/92768
      	* gcc.dg/pr92768.c: Add -w -Wno-psabi to dg-options.
      
      From-SVN: r279024
      Jakub Jelinek committed
    • Disable --eh-frame-hdr with -pie or -shared on nios2-linux-gnu. · 38e078da
      2019-12-05  Sandra Loosemore  <sandra@codesourcery.com>
      
      	Disable --eh-frame-hdr with -pie or -shared on nios2-linux-gnu.
      
      	The nios2 ABI doesn't have appropriate relocations to support
      	--eh-frame-hdr with -pie or -shared, so we need to override the
      	default specs that add that link option.  Otherwise we get linker
      	warnings about invalid FDE encodings.
      
      	gcc/
      	* config/nios2/linux.h (LINK_EH_SPEC): Define.
      
      	gcc/testsuite/
      	* g++.target/nios2/hello-pie.C: New.
      	* g++.target/nios2/nios2.exp: New.
      
      From-SVN: r279023
      Sandra Loosemore committed
    • Fix g++.dg/torture/pr59226.C · a414fd42
      this patch fixes ICE in g++.dg/torture/pr59226.C which was triggered by
      new comdat_local sanity check.  What happens here is that function gets
      inlined into its own thunk which makes it !comdat_local_p but the updating
      code does not notice since thunk calls comdat local alias of the function
      itself and we look at alias target rather than original callee.
      
      This also shows that we miss optimization here.  Currently we will not inline
      thunk out of its comdat local group w/o inlining function it is associated with
      into it.
      
      We should teach inline_call to reoslve edges to aliases while inlining and 
      relax calls_comdat_local flag.  But this needs bit more work, so I fix the
      ICE first.
      
      	* ipa-inline-transform.c (inline_call): Fix maintenatnce of comdat_local
      
      From-SVN: r279021
      Jan Hubicka committed
    • PR c++/91353 - P1331R2: Allow trivial default init in constexpr contexts. · 7906797e
      This patch implements C++20 P1331, allowing trivial default initialization in
      constexpr contexts.
      
      	* c-cppbuiltin.c (c_cpp_builtins): Adjust the value of __cpp_constexpr.
      
      	* class.c (trivial_default_constructor_is_constexpr): Return true in
      	C++20.
      	* constexpr.c (cx_check_missing_mem_inits): Allow missing field
      	initializers in C++20.
      	(cxx_eval_call_expression): Don't clear CONSTRUCTOR_NO_CLEARING for
      	constexpr constructors in C++20.
      	(reduced_constant_expression_p): Don't set FIELD for union and array
      	types.  Skip empty class fields without initializers.
      	* decl.c (check_for_uninitialized_const_var): Permit trivial default
      	initialization in constexpr.
      	(next_initializable_field): Don't skip vptr fields.
      	* method.c (walk_field_subobs): Still consider a constructor that
      	doesn't initialize all the members constexpr.
      
      	* g++.dg/cpp0x/constexpr-array6.C: Adjust dg-error.
      	* g++.dg/cpp0x/constexpr-ctor.C: Likewise.
      	* g++.dg/cpp0x/constexpr-diag3.C: Likewise.
      	* g++.dg/cpp0x/constexpr-diag4.C: Likewise.
      	* g++.dg/cpp0x/constexpr-ex3.C: Likewise.
      	* g++.dg/cpp0x/constexpr-template2.C: Likewise.
      	* g++.dg/cpp0x/constexpr-union2.C: Likewise.
      	* g++.dg/cpp0x/lambda/lambda-mangle.C: Rip out a piece of code ...
      	* g++.dg/cpp0x/lambda/lambda-mangle6.C: ... and put it here.
      	* g++.dg/cpp0x/pr79118.C: Adjust dg-error.
      	* g++.dg/cpp1y/constexpr-83921-3.C: Likewise.
      	* g++.dg/cpp1y/constexpr-neg1.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda12.C: Likewise.
      	* g++.dg/cpp1z/feat-cxx1z.C: Use -std=c++17.
      	* g++.dg/cpp2a/constexpr-init1.C: New test.
      	* g++.dg/cpp2a/constexpr-init2.C: New test.
      	* g++.dg/cpp2a/constexpr-init3.C: New test.
      	* g++.dg/cpp2a/constexpr-init4.C: New test.
      	* g++.dg/cpp2a/constexpr-init5.C: New test.
      	* g++.dg/cpp2a/constexpr-init6.C: New test.
      	* g++.dg/cpp2a/constexpr-init7.C: New test.
      	* g++.dg/cpp2a/constexpr-init8.C: New test.
      	* g++.dg/cpp2a/constexpr-init9.C: New test.
      	* g++.dg/cpp2a/constexpr-init10.C: New test.
      	* g++.dg/cpp2a/constexpr-init11.C: New test.
      	* g++.dg/cpp2a/constexpr-init12.C: New test.
      	* g++.dg/cpp2a/constexpr-init13.C: New test.
      	* g++.dg/cpp2a/constexpr-init14.C: New test.
      	* g++.dg/cpp2a/constexpr-init15.C: New test.
      	* g++.dg/cpp2a/constexpr-try5.C: Adjust dg-error.
      	* g++.dg/cpp2a/feat-cxx2a.C: Test __cpp_constexpr.
      	* g++.dg/cpp2a/lambda-mangle.C: New test.
      	* g++.dg/debug/dwarf2/pr44641.C: Skip for c++2a.
      	* g++.dg/ext/stmtexpr21.C: Adjust dg-error.
      
      Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
      
      From-SVN: r279019
      Marek Polacek committed
    • PR c++/92271 - make __is_same alias for __is_same_as. · 5c04da88
      Richard Smith proposed adding a synonym for __is_same_as, to accomodate the
      convention of exposing std::SOME_TRAIT<A, B>::value as __SOME_TRAIT(A, B).
      
      So add that alias, and also adjust the C++ printer.  I didn't bother changing
      the RID_ identifier.
      
      	* c-common.c: Add __is_same, an alias for __is_same_as.
      
      	* cxx-pretty-print.c (pp_cxx_trait_expression) <case CPTK_IS_SAME_AS>:
      	Print "__is_same".
      
      	* g++.dg/ext/is_same.C: New test.
      
      From-SVN: r279018
      Marek Polacek committed
    • cgraphclones.c (localize_profile): New function. · 34fbe3f0
      
      	* cgraphclones.c (localize_profile): New function.
      	(cgraph_node::create_clone): Use it for partial profiles.
      	* common.opt (fprofile-partial-training): New flag.
      	* doc/invoke.texi (-fprofile-partial-training): Document.
      	* ipa-cp.c (update_profiling_info): For partial profiles do not
      	set function profile to zero.
      	* profile.c (compute_branch_probabilities): With partial profile
      	watch if edge count is zero and turn all probabilities to guessed.
      	(compute_branch_probabilities): For partial profiles do not apply
      	profile when entry count is zero.
      	* tree-profile.c (tree_profiling): Only do value_profile_transformations
      	when profile is read.
      
      From-SVN: r279013
      Jan Hubicka committed
    • [Patch, GCC] Fix a condition post r278611 · 8575d592
      gcc/ChangeLog
      
      2019-12-05  Sudakshina Das  <sudi.das@arm.com>
      
      	* tree-vect-loop.c (vect_model_reduction_cost): Remove reduction_type
      	check from if condition.
      
      From-SVN: r279012
      Sudakshina Das committed
    • re PR go/92820 (libgo.so.15 has executable stack) · 9bcee9c9
      	PR go/92820
          runtime: always mark assembly file as non-executable stack
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/210037
      
      From-SVN: r279010
      Ian Lance Taylor committed
    • OpenMP] Fix use_device_… with absent optional arg · c3cb71ef
              gcc/fortran/
              * trans-openmp.c (gfc_omp_is_optional_argument,
              gfc_omp_check_optional_argument): Handle type(c_ptr),value which uses a
              hidden argument for the is-present check.
      
              gcc/
              * omp-low.c (lower_omp_target): For use_device_ptr/use_derice_addr
              and Fortran's optional arguments, unconditionally add the is-present
              condition before the libgomp call.
      
              libgomp/
              * testsuite/libgomp.fortran/use_device_ptr-optional-2.f90: Add
              'type(c_ptr), value' test case. Conditionally map the per-value
              passed arguments.
      
      From-SVN: r279004
      Tobias Burnus committed
    • * cp-gimplify.c: Include memmodel.h. · 705f02b0
      From-SVN: r279003
      David Edelsohn committed
    • Check for bitwise identity when encoding VECTOR_CSTs (PR 92768) · 56b4b16e
      This PR shows that we weren't checking for bitwise-identical values
      when trying to encode a VECTOR_CST, so -0.0 was treated the same as
      0.0 for -fno-signed-zeros.  The patch adds a new OEP flag to select
      that behaviour.
      
      2019-12-05  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	PR middle-end/92768
      	* tree-core.h (OEP_BITWISE): New flag.
      	* fold-const.c (operand_compare::operand_equal_p): Handle it.
      	* tree-vector-builder.h (tree_vector_builder::equal_p): Pass it.
      
      gcc/testsuite/
      	PR middle-end/92768
      	* gcc.dg/pr92768.c: New test.
      
      From-SVN: r279002
      Richard Sandiford committed
    • libstdc++: Fix bug in std::span test · 5a784d35
      The previous commit fixed the std::span constructors from const arrays,
      revealing a bug in this test.
      
      	* testsuite/23_containers/span/lwg3255.cc: Fix test. Constructing a
      	span of non-const elements should not be possible from a const array
      	or an array of const elements.
      
      From-SVN: r279001
      Jonathan Wakely committed
    • libstdc++: Implement P1872R0 and P1394R0 for std::span · a7922ddf
      This also fixes a bug in the implementation of LWG 3255, which causes:
      FAIL: 23_containers/span/lwg3255.cc (test for excess errors)
      That's because the test was wrong and verified the buggy behaviour. That
      will be fixed in the following commit.
      
      2019-12-05  JeanHeyd "ThePhD" Meneide  <phdofthehouse@gmail.com>
      
      	Implement P1872R0 and P1394R0 for std::span
      	* include/bits/range_access.h (__adl_begin, __adl_end): Remove.
      	(sentinel_t, range_value_t, range_reference_t)
      	(range_rvalue_reference_t, __forwarding_range, disable_sized_range)
      	(output_range, input_range, forward_range, bidirectional_range)
      	(random_access_range, contiguous_range, common_range): Move here from
      	<ranges>, to make this the "ranges lite" internal header.
      	* include/std/ranges: Move basic aliases and concepts to
      	<bits/range_access.h>.
      	* include/std/span: Use concepts and ranges:: calls instead of
      	enable_if and friends.
      	* include/std/type_traits: Add __is_array_convertible trait.
      
      From-SVN: r279000
      JeanHeyd "ThePhD" Meneide committed
    • re PR tree-optimization/92818 (Typo in vec_perm -> bit_insert pattern) · b0a71a18
      2019-12-05  Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/92818
      	* tree-ssa-forwprop.c (simplify_vector_constructor): Improve
      	heuristics on what don't care element to choose.
      	* match.pd (VEC_PERM_EXPR -> BIT_INSERT_EXPR): Fix typo.
      
      	* gcc.target/i386/pr92818.c: New testcase.
      
      From-SVN: r278998
      Richard Biener committed
    • libstdc++: Define std::lexicographical_compare_three_way for C++20 · f1355c8d
      	* include/bits/stl_algobase.h (lexicographical_compare_three_way):
      	Define for C++20.
      	* testsuite/25_algorithms/lexicographical_compare_three_way/1.cc: New
      	test.
      	* testsuite/25_algorithms/lexicographical_compare_three_way/
      	constexpr.cc: New test.
      
      From-SVN: r278996
      Jonathan Wakely committed
    • Fix __gcov_exit fn prototype. · 16e81d51
      2019-12-05  Martin Liska  <mliska@suse.cz>
      
      	PR gcov-profile/92817
      	* coverage.c (build_gcov_exit_decl): Remove superfluous
      	void_type_node.
      
      From-SVN: r278995
      Martin Liska committed
    • MSP430: Fix postinc addressing mode being used for dst op of CMP insns · 6ff8ab6a
      2019-12-05  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	* config/msp430/msp430.md (cbranch<mode>4): Use
      	msp430_general_dst_nonv_operand instead of nonimmediate_operand for
      	dest operand of CMP instruction.
      	(cbranchpsi4_real): Likewise.
      	(cbranchqi4_real): Likewise.
      	(cbranchhi4_real): Likewise.
      	(cbranchpsi4_reversed): Likewise.
      	(cbranchqi4_reversed): Likewise.
      	(cbranchhi4_reversed): Likewise.
      
      From-SVN: r278994
      Jozef Lawrynowicz committed
    • Skip test gcc/testsuite/gcc.dg/asm-4.c for amdgcn target · b24c7795
      2019-12-05  Frederik Harwath  <frederik@codesourcery.com>
      
      gcc/testsuite/
      	* gcc.dg/asm-4.c: Skip on target amdgcn-*-*.
      
      From-SVN: r278993
      Frederik Harwath committed
    • re PR target/92055 ([avr] Support 64-bit double) · 08d7ff78
      	PR target/92055
      	* config/avr/t-avrlibc (MULTISUBDIR): Search for double, not double64.
      
      From-SVN: r278992
      Georg-Johann Lay committed
    • re PR tree-optimization/92803 (error: type mismatch in 'vec_perm_expr' since r278764) · a3408fa3
      2019-12-05  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/92803
      	* tree-ssa-forwprop.c (simplify_vector_constructor): Fix
      	invariant vector construction.
      
      	* gcc.target/i386/pr92803.c: New testcase.
      
      From-SVN: r278991
      Richard Biener committed
    • Fix profile name files without -fprofile-dir. · 42870a86
      2019-12-05  Martin Liska  <mliska@suse.cz>
      
      	PR gcov-profile/91971
      	* coverage.c (coverage_init): Mangle full path
      	only when -fprofile-dir is used.
      
      From-SVN: r278990
      Martin Liska committed