1. 01 Nov, 2019 16 commits
    • PR c++/88335 - Implement P1073R3: Immediate functions · f968ef9b
      	PR c++/88335 - Implement P1073R3: Immediate functions
      c-family/
      	* c-common.h (enum rid): Add RID_CONSTEVAL.
      	* c-common.c (c_common_reswords): Add consteval.
      cp/
      	* cp-tree.h (struct lang_decl_fn): Add immediate_fn_p bit.
      	(DECL_IMMEDIATE_FUNCTION_P, SET_DECL_IMMEDIATE_FUNCTION_P): Define.
      	(enum cp_decl_spec): Add ds_consteval.
      	(fold_non_dependent_expr): Add another tree argument defaulted to
      	NULL_TREE.
      	* name-lookup.h (struct cp_binding_level): Add immediate_fn_ctx_p
      	member.
      	* parser.c (cp_keyword_starts_decl_specifier_p): Adjust comments
      	for C++11 and C++20 specifiers.  Handle RID_CONSTEVAL.
      	(CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR): Adjust comment.
      	(CP_PARSER_FLAGS_CONSTEVAL): New.
      	(cp_parser_skip_balanced_tokens): New forward declaration.
      	(cp_parser_lambda_declarator_opt): Handle ds_consteval.  Set
      	current_binding_level->immediate_fn_ctx_p before parsing parameter
      	list if decl-specifier-seq contains consteval specifier.
      	(cp_parser_decl_specifier_seq): Handle RID_CONSTEVAL.
      	(cp_parser_explicit_instantiation): Diagnose explicit instantiation
      	with consteval specifier.
      	(cp_parser_init_declarator): For consteval or into flags
      	CP_PARSER_FLAGS_CONSTEVAL.
      	(cp_parser_direct_declarator): If CP_PARSER_FLAGS_CONSTEVAL, set
      	current_binding_level->immediate_fn_ctx_p in the sk_function_parms
      	scope.
      	(set_and_check_decl_spec_loc): Add consteval entry, formatting fix.
      	* call.c (build_addr_func): For direct calls to immediate functions
      	use build_address rather than decay_conversion.
      	(build_over_call): Evaluate immediate function invocations.
      	* error.c (dump_function_decl): Handle DECL_IMMEDIATE_FUNCTION_P.
      	* semantics.c (expand_or_defer_fn_1): Use tentative linkage and don't
      	call mark_needed for immediate functions.
      	* typeck.c (cxx_sizeof_or_alignof_expr): Likewise.  Formatting fix.
      	(cp_build_addr_expr_1): Reject taking address of immediate function
      	outside of immediate function.
      	* decl.c (validate_constexpr_redeclaration): Diagnose consteval
      	vs. non-consteval or vice versa redeclaration.  Use
      	SET_DECL_IMMEDIATE_FUNCTION_P if new_decl is immediate function.
      	(check_tag_decl): Use %qs with keyword string to simplify translation.
      	Handle ds_consteval.
      	(start_decl): Adjust diagnostics for static or thread_local variables
      	in immediate functions.
      	(grokfndecl): Call sorry_at on virtual consteval.  Use %qs with keyword
      	to string to simplify translation.  Diagnose consteval main.  Use
      	SET_DECL_IMMEDIATE_FUNCTION_P for consteval.
      	(grokdeclarator): Handle consteval.  Use %qs with keyword strings to
      	simplify translation.  Use separate ifs instead of chained else if
      	for invalid specifiers.  For constinit clear constinit_p rather than
      	constexpr_p.
      	* constexpr.c (find_immediate_fndecl): New function.
      	(cxx_eval_outermost_constant_expr): Allow consteval calls returning
      	void.  Diagnose returning address of immediate function from consteval
      	evaluation.
      	(fold_non_dependent_expr_template): Add OBJECT argument, pass it
      	through to cxx_eval_outermost_constant_expr.
      	(fold_non_dependent_expr): Add OBJECT argument, pass it through to
      	fold_non_dependent_expr_template.
      	(fold_non_dependent_init): Adjust fold_non_dependent_expr_template
      	caller.
      	* method.c (defaulted_late_check): Adjust diagnostics for consteval.
      	* lambda.c (maybe_add_lambda_conv_op): Copy over
      	DECL_DECLARED_CONSTEXPR_P and DECL_IMMEDIATE_FUNCTION_P bits from
      	callop to both artificial functions.
      	* init.c (build_value_init): Don't do further processing if
      	build_special_member_call returned a TREE_CONSTANT.  Formatting fix.
      testsuite/
      	* g++.dg/cpp2a/consteval1.C: New test.
      	* g++.dg/cpp2a/consteval2.C: New test.
      	* g++.dg/cpp2a/consteval3.C: New test.
      	* g++.dg/cpp2a/consteval4.C: New test.
      	* g++.dg/cpp2a/consteval5.C: New test.
      	* g++.dg/cpp2a/consteval6.C: New test.
      	* g++.dg/cpp2a/consteval7.C: New test.
      	* g++.dg/cpp2a/consteval8.C: New test.
      	* g++.dg/cpp2a/consteval9.C: New test.
      	* g++.dg/cpp2a/consteval10.C: New test.
      	* g++.dg/cpp2a/consteval11.C: New test.
      	* g++.dg/cpp2a/consteval12.C: New test.
      	* g++.dg/cpp2a/consteval13.C: New test.
      	* g++.dg/cpp2a/consteval14.C: New test.
      	* g++.dg/ext/consteval1.C: New test.
      
      From-SVN: r277733
      Jakub Jelinek committed
    • PR c++/91369 - Implement P0784R7: constexpr new · 8412b939
      	PR c++/91369 - Implement P0784R7: constexpr new
      	* cp-tree.h (CALL_FROM_NEW_OR_DELETE_P): Define.
      	* init.c (build_new_1, build_vec_delete_1, build_delete): Set
      	CALL_FROM_NEW_OR_DELETE_P on the CALL_EXPR to allocator functions.
      	* constexpr.c (is_std_allocator_allocate): Only allow
      	global replaceable allocator functions if CALL_FROM_NEW_OR_DELETE_P
      	or in std::allocate<T>::{,de}allocate.
      	(potential_constant_expression_1): Likewise.
      
      	* g++.dg/cpp2a/constexpr-new6.C: New test.
      	* g++.dg/cpp2a/constexpr-new7.C: New test.
      
      From-SVN: r277732
      Jakub Jelinek committed
    • * gcc.dg/pr36902.c: Terminate dg-warning regexp string. · 8a8ce49e
      From-SVN: r277730
      Jakub Jelinek committed
    • PR middle-end/91679 - missing -Warray-bounds accessing a member array in a local buffer · 49fb45c8
      PR middle-end/91679 - missing -Warray-bounds accessing a member array in a local buffer
      PR middle-end/91647 - new FAILs for Warray-bounds-8 and Wstringop-overflow-3.C
      PR middle-end/91463 - missing -Warray-bounds accessing past the end of a statically initialized flexible array member
      PR middle-end/92312 - bogus -Wstringop-overflow storing into a trailing array backed by larger buffer
      
      gcc/ChangeLog:
      
      	PR middle-end/91679
      	PR middle-end/91647
      	PR middle-end/91463
      	PR middle-end/92312
      	* c-family/c-pretty-print.c (direct_abstract_declarator): Print
      	bound in zero-length arrays.
      	* gcc/c-family/c.opt (-Wzero-length-bounds): New option.
      	* gcc/doc/invoke.texi (-Wzero-length-bounds): Document.
      	* gimple-match-head.c (try_conditional_simplification): Use memcpy
      	instead of a hand-rolled loop to avoid PR 92323.
      	* tree-vrp.c (vrp_prop::check_array_ref): Handle trailing arrays
      	with initializers.
      	(vrp_prop::check_mem_ref): Handle declared struct objects.
      	* tree.c (last_field): New function.
      	(array_at_struct_end_p): Handle MEM_REF.
      	(get_initializer_for): New helper.
      	(component_ref_size): Add argument.  Rename locals.  Call
      	get_initializer_for instead of fold_ctor_reference.  Correct handling
      	of flexible array members.
      	* wide-int.h (generic_wide_int <storage>::sign_mask): Assert invariant.
      
      gcc/testsuite/ChangeLog:
      
      	PR middle-end/91679
      	PR middle-end/91647
      	PR middle-end/91463
      	PR middle-end/92312
      	* c-c++-common/Warray-bounds-2.c: Disable VRP.  Adjust expected messages.
      	* g++.dg/warn/Warray-bounds-8.C: Remove xfails.
      	* gcc.dg/Warray-bounds-48.c: New test.
      	* gcc.dg/Warray-bounds-49.c: New test.
      	* gcc.dg/Wstringop-overflow-16.c: Adjust text of expected messages.
      	* gcc.dg/Wstringop-overflow-21.c: New test.
      	* gcc.dg/Wzero-length-array-bounds.c: New test.
      	* gcc.dg/pr36902.c: Remove xfail.
      	* gcc.dg/strlenopt-57.c: Add an expected warning.
      
      From-SVN: r277728
      Martin Sebor committed
    • RISC-V: Build soft-float divide routines for -mno-fdiv. · 8dc56a22
      Using -mno-fdiv gives linker errors unless we build the missing divide
      routines in libgcc always.  There is at least one university project
      designing RISC-V parts without FP divide that wants to use the option.
      
      	libgcc/
      	* config/riscv/t-softfp32 (softfp_extra): Add FP divide routines
      
      From-SVN: r277723
      Jim Wilson committed
    • Fix nodiscard test failures. · 2df0c231
      	* g++.dg/cpp2a/nodiscard-once.C: Expect nodiscard warning.
      	* g++.dg/cpp2a/nodiscard-reason.C: Adjust expected warnings.
      
      From-SVN: r277719
      Jason Merrill committed
    • decl.c (match_byte_typespec): New function. · 2028ce45
      2019-11-01  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	* decl.c (match_byte_typespec): New function.  Match BYTE type-spec.
      	(gfc_match_decl_type_spec): Use it.
      
      2019-11-01  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	* gfortran.dg/byte_3.f: New test.
      	* gfortran.dg/byte_4.f90: Ditto.
      
      From-SVN: r277715
      Steven G. Kargl committed
    • re PR fortran/90988 (Wrong error message with variables named "PUBLIC*") · c7e34433
      2019-11-01  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/90988
      	* decl.c (gfc_match_private, gfc_match_public): Fixed-form source code
      	does not require whitespace between PRIVATE (or PUBLIC) and an entity.
      
      2019-11-01  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/90988
      	* gfortran.dg/pr90988_4.f: New test.
      
      From-SVN: r277714
      Steven G. Kargl committed
    • builtin-sprintf-warn-3.c: Declare test functions with noipa attribute. · 783aea33
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: Declare test functions
      	with noipa attribute.
      
      From-SVN: r277711
      Martin Sebor committed
    • [rs6000] vector conversion RTL pattern update for diff unit size · 6485d5d6
      2019-11-01  Kewen Lin  <linkw@gcc.gnu.org>
      
        * config/rs6000/rs6000-modes.def (V2SF, V2SI): New modes.
        * config/rs6000/vsx.md (UNSPEC_VSX_CVSPSXDS, UNSPEC_VSX_CVSPUXDS): Remove.
        (vsx_xvcvspdp): New define_expand, old define_insn split to...
        (vsx_xvcvspdp_be): ... this.  New.  And...
        (vsx_xvcvspdp_le): ... this.  New.
        (vsx_xvcv<su>xwdp): New define_expand, old define_insn split to...
        (vsx_xvcv<su>xwdp_be): ... this.  New.  And...
        (vsx_xvcv<su>xwdp_le): ... this.  New.
        (vsx_xvcvsp<su>xds): New define_expand, old define_insn split to...
        (vsx_xvcvsp<su>xds_be): ... this.  New.  And...
        (vsx_xvcvsp<su>xds_le): ... this.  New.
      
      From-SVN: r277709
      Kewen Lin committed
    • [rs6000] vector conversion RTL pattern update for same unit size · 4d8cfe0e
      2019-11-01  Kewen Lin  <linkw@gcc.gnu.org>
      
        * config/rs6000/vsx.md (UNSPEC_VSX_CVSXWSP, UNSPEC_VSX_CVUXWSP,
        UNSPEC_VSX_XVCVSXDDP, UNSPEC_VSX_XVCVUXDDP,
        UNSPEC_VSX_XVCVDPSXDS, UNSPEC_VSX_XVCVDPUXDS,
        UNSPEC_VSX_XVCVSPSXWS): Remove.
        (vsx_xvcv<su>xddp, vsx_xvcvdp<su>xds, vsx_xvcvsp<su>xws,
        vsx_xvcv<su>xwsp): Update define_insn RTL patterns.
      
      From-SVN: r277708
      Kewen Lin committed
    • [C++ PATCH] cleanup check_field_decls · 10e1540c
      https://gcc.gnu.org/ml/gcc-patches/2019-11/msg00012.html
      	cp/
      	* class.c (check_field_decls): Refactor.
      
      	testsuite/
      	* g++.dg/template/fn.C: New.
      
      From-SVN: r277707
      Nathan Sidwell committed
    • [rs6000] Replace vsx_xvcdpsp by vsx_xvcvdpsp · 9de3d4f0
      2019-11-01  Kewen Lin  <linkw@gcc.gnu.org>
      
          * config/rs6000/vsx.md (vsx_xvcdpsp): Remove define_insn.
          (UNSPEC_VSX_XVCDPSP): Remove.
          * config/rs6000/rs6000.c (rs6000_generate_float2_double_code):
          Replace gen_vsx_xvcdpsp by gen_vsx_xvcvdpsp.
      
      From-SVN: r277706
      Kewen Lin committed
    • OpenMP] use_device_addr/use_device_ptr with Fortran allocatable/pointer arrays · 92e63bd2
              gcc/fortran/
              * f95-lang.c (LANG_HOOKS_OMP_ARRAY_DATA): Set to gfc_omp_array_data.
              * trans-array.c (gfc_conv_descriptor_data_get): Handle also
              REFERENCE_TYPE.
              * trans-openmp.c (gfc_omp_array_data): New.
              * trans.h (gfc_omp_array_data): New prototype.
      
              gcc/
              * hooks.c (hook_tree_tree_bool_null): New.
              * hooks.h (hook_tree_tree_bool_null): Declare.
              * langhooks-def.h (LANG_HOOKS_OMP_ARRAY_DATA): Define.
              (LANG_HOOKS_DECLS): Add it.
              * langhooks.h (lang_hooks_for_decls): Add omp_array_data.
              * omp-low.c (install_var_field): New mode for Fortran descriptor arrays.
              (lower_omp_target): Handle Fortran array with descriptor in
              OMP_CLAUSE_USE_DEVICE_ADDR/OMP_CLAUSE_USE_DEVICE_PTR.
      
              libgomp/
              * testsuite/libgomp.fortran/use_device_addr-1.f90 (test_nullptr_1,
              test_dummy_opt_nullptr_callee_1): Add present but unallocated test.
              * testsuite/libgomp.fortran/use_device_addr-2.f90: Likewise.
              * testsuite/libgomp.fortran/use_device_addr-3.f90: New.
              * testsuite/libgomp.fortran/use_device_addr-4.f90: New.
              * testsuite/testsuite/libgomp.fortran/use_device_ptr-1.f90: New.
      
      From-SVN: r277705
      Tobias Burnus committed
    • PR testsuite/92127: Disable unrolling for some vect code model cases · 271da732
        2019-11-01  Kewen Lin  <linkw@gcc.gnu.org>
      
        PR testsuite/92127
        * gcc.dg/vect/costmodel/ppc/costmodel-pr37194.c: Disable unroll.
        * gcc.dg/vect/costmodel/ppc/costmodel-fast-math-vect-pr29925.c: Likewise.
      
      From-SVN: r277704
      Kewen Lin committed
    • Daily bump. · 52c82688
      From-SVN: r277703
      GCC Administrator committed
  2. 31 Oct, 2019 24 commits
    • Regenerate libstdc++ HTML docs · 081f3c3c
      	* doc/html/*: Regenerate.
      
      From-SVN: r277699
      Jonathan Wakely committed
    • Add remaining changes from P1065R2 "constexpr INVOKE" · 2670a7aa
      	* include/bits/refwrap.h (reference_wrapper, ref, cref): Add constexpr
      	specifiers for C++20.
      	* include/std/functional (_Mem_fn, mem_fn, _Bind, _Bind_result, bind)
      	(bind_front, _Not_fn, not_fn): Likewise.
      	* testsuite/20_util/bind/constexpr.cc: New test.
      	* testsuite/20_util/function_objects/bind_front/constexpr.cc: New test.
      	* testsuite/20_util/function_objects/mem_fn/constexpr.cc: New test.
      	* testsuite/20_util/function_objects/not_fn/constexpr.cc: New test.
      	* testsuite/20_util/reference_wrapper/constexpr.cc: New test.
      
      From-SVN: r277698
      Jonathan Wakely committed
    • Partial implementation of C++20 of <ranges> header · 328b52d6
      	* doc/doxygen/user.cfg.in: Add new header.
      	* include/Makefile.am: Add new header.
      	* include/Makefile.in: Regenerate.
      	* include/precompiled/stdc++.h: Include new header.
      	* include/std/ranges: New header.
      	(ranges::sentinel_t, ranges::range_value_t, ranges::range_reference_t)
      	(ranges::range_rvalue_reference_t, ranges::sized_range)
      	(ranges::output_range, ranges::input_ranges, ranges::forward_range)
      	(ranges::bidirectional_range, ranges::random_access_range)
      	(ranges::contiguous_range, ranges::common::range): Define.
      	* testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Check
      	that disabled_sized_sentinel can be specialized.
      	* testsuite/std/ranges/access/begin.cc: Include <ranges> instead of
      	<iterator>.
      	* testsuite/std/ranges/access/cbegin.cc: Likewise.
      	* testsuite/std/ranges/access/cdata.cc: Likewise.
      	* testsuite/std/ranges/access/cend.cc: Likewise.
      	* testsuite/std/ranges/access/crbegin.cc: Likewise.
      	* testsuite/std/ranges/access/crend.cc: Likewise.
      	* testsuite/std/ranges/access/data.cc: Likewise.
      	* testsuite/std/ranges/access/empty.cc: Likewise.
      	* testsuite/std/ranges/access/end.cc: Likewise.
      	* testsuite/std/ranges/access/end_neg.cc: Likewise.
      	* testsuite/std/ranges/access/rbegin.cc: Likewise.
      	* testsuite/std/ranges/access/rend.cc: Likewise.
      	* testsuite/std/ranges/access/size.cc: Likewise.
      	* testsuite/std/ranges/access/size_neg.cc: Likewise.
      	* testsuite/std/ranges/headers/ranges/synopsis.cc: New test.
      	* testsuite/std/ranges/range.cc: New test.
      	* testsuite/std/ranges/refinements.cc: New test.
      	* testsuite/std/ranges/sized.cc: New test.
      	* testsuite/util/testsuite_iterators.h: Add aliases for range types.
      	(output_iterator_wrapper::WritableObject::operator=): Add const
      	qualifier so that output_iterator_wrapper satisfies writable.
      
      From-SVN: r277697
      Jonathan Wakely committed
    • Test --help=common for full sentences · d5a9005e
      The portion of help.exp that checks that help output contains full
      sentences failed to cover common options.
      
      
      for  gcc/testsuite/ChangeLog
      
      	* gcc.misc-tests/help.exp: Test --help=common for full sentences.
      
      From-SVN: r277686
      Alexandre Oliva committed
    • re PR preprocessor/92296 (internal compiler error: Segmentation fault #pragma… · aa23e73b
      re PR preprocessor/92296 (internal compiler error: Segmentation fault  #pragma push_macro("__LINE__"))
      
      	PR preprocessor/92296
      	* internal.h (struct def_pragma_macro): Add is_builtin bitfield.
      	(_cpp_restore_special_builtin): Declare.
      	* init.c (_cpp_restore_special_builtin): New function.
      	* directives.c (do_pragma_push_macro): For NT_BUILTIN_MACRO
      	set is_builtin and don't try to grab definition.
      	(cpp_pop_definition): Use _cpp_restore_special_builtin to restore
      	builtin macros.
      
      	* c-c++-common/cpp/pr92296-1.c: New test.
      	* c-c++-common/cpp/pr92296-2.c: New test.
      
      From-SVN: r277685
      Jakub Jelinek committed
    • devices-main.c: Move to devices subdirectory. · 0092b21f
      2019-10-31  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	* gcc.target/msp430/devices-main.c: Move to devices subdirectory.
      	* gcc.target/msp430/devices/bad-devices-1.c: Update #include path to
      	devices-main.c.
      	* gcc.target/msp430/devices/bad-devices-2.c: Likewise.
      	* gcc.target/msp430/devices/bad-devices-3.c: Likewise.
      	* gcc.target/msp430/devices/bad-devices-4.c: Likewise.
      	* gcc.target/msp430/devices/bad-devices-5.c: Likewise.
      	* gcc.target/msp430/devices/bad-devices-6.c: Likewise.
      	* gcc.target/msp430/devices/csv-device-order.c: Likewise.
      	* gcc.target/msp430/devices/csv-msp430_00.c: Likewise.
      	* gcc.target/msp430/devices/csv-msp430_01.c: Likewise.
      	* gcc.target/msp430/devices/csv-msp430_02.c: Likewise.
      	* gcc.target/msp430/devices/csv-msp430_04.c: Likewise.
      	* gcc.target/msp430/devices/csv-msp430_08.c: Likewise.
      	* gcc.target/msp430/devices/csv-msp430_10.c: Likewise.
      	* gcc.target/msp430/devices/csv-msp430_11.c: Likewise.
      	* gcc.target/msp430/devices/csv-msp430_12.c: Likewise.
      	* gcc.target/msp430/devices/csv-msp430_14.c: Likewise.
      	* gcc.target/msp430/devices/csv-msp430_18.c: Likewise.
      	* gcc.target/msp430/devices/csv-msp430_20.c: Likewise.
      	* gcc.target/msp430/devices/csv-msp430_21.c: Likewise.
      	* gcc.target/msp430/devices/csv-msp430_22.c: Likewise.
      	* gcc.target/msp430/devices/csv-msp430_24.c: Likewise.
      	* gcc.target/msp430/devices/csv-msp430_28.c: Likewise.
      	* gcc.target/msp430/devices/csv-msp430fr5969.c: Likewise.
      	* gcc.target/msp430/devices/hard-cc430f5123.c: Likewise.
      	* gcc.target/msp430/devices/hard-foo.c: Likewise.
      	* gcc.target/msp430/devices/hard-msp430afe253.c: Likewise.
      	* gcc.target/msp430/devices/hard-msp430cg4616.c: Likewise.
      	* gcc.target/msp430/devices/hard-msp430f4783.c: Likewise.
      	* gcc.target/msp430/devices/hard-rf430frl154h_rom.c: Likewise.
      
      From-SVN: r277684
      Jozef Lawrynowicz committed
    • [AArch64] Fix g++.target/aarch64/sve/vcond_1_run.C · cc6336f5
      This had been failing since a mass renaming.  Noticed it a few times
      before but somehow never got around to fixing it.
      
      2019-10-31  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/testsuite/
      	* g++.target/aarch64/sve/vcond_1_run.C: Update test name.
      
      From-SVN: r277683
      Richard Sandiford committed
    • [AArch64] Split gcc.target/aarch64/sve/vcond_4* · 354ee867
      vcond_4.c combined too much stuff into one test, so that when we needed
      to add XFAILs for one set of routines, we lost testing of others that
      used the same instructions.  This patch splits it into four:
      
      vcond_4.c:
        The main test for selects between a vector and a scalar, with all
        elements having the same size.
      
        After Prathamesh's fix for PR91272, we are now guaranteed to use the
        conditionally-loaded vector as the "then" value and the scalar as the
        "else" value.
      
      vcond_4_zero.c:
        Like vcond_4.c, but comparing with zero.
      
      vcond_4_sel.c:
        Tests for selects between two scalars, with all elements having
        the same size.  The optimisers can legitimately switch the "then"
        and "else" order and adjust the comparison to match.
      
      vcond_4_costly.c:
        Like vcnod_4.c, but with mixed element sizes.  The sequences tested
        here will not be the preferred ones once we support mixtures of vector
        sizes, but it still tests an important code path.
      
      This means that vcond_4_run.c now only tests what's left in vcond_4.c,
      but that seems OK, since the main point was to ensure correct exception
      behaviour.
      
      Similarly it means that vcond_5.c only tests what's left in vcond_4.c,
      but that too is OK, since the point of the test was to compare the
      default handling of each comparison in vcond_4.c with the
      -fno-trapping-math equivalent.
      
      2019-10-31  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/vcond_4.c: Split parts out into...
      	* gcc.target/aarch64/sve/vcond_4_costly.c,
      	* gcc.target/aarch64/sve/vcond_4_sel.c,
      	* gcc.target/aarch64/sve/vcond_4_zero.c: ...these new tests.
      	* gcc.target/aarch64/sve/vcond_4_run.c: Adjust accordingly.
      	* gcc.target/aarch64/sve/vcond_5.c: Likewise.
      
      From-SVN: r277682
      Richard Sandiford committed
    • [AArch64] Split gcc.target/aarch64/sve/reduc_strict_3.c · 37115224
      This patch splits gcc.target/aarch64/sve/reduc_strict_3.c into one
      test per function, so that it's easier to see what each scan is
      matching and also so that we no longer rely on the number of times
      that each dump message is printed.
      
      The patch also generalises the tests to work with scalable vectors.
      I think the test probably predates support for variable-length
      loop-aware SLP.
      
      2019-10-31  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/reduc_strict_3.c: Split all but the
      	first function out into...
      	* gcc.target/aarch64/sve/reduc_strict_4.c,
      	* gcc.target/aarch64/sve/reduc_strict_5.c,
      	* gcc.target/aarch64/sve/reduc_strict_6.c,
      	* gcc.target/aarch64/sve/reduc_strict_7.c,
      	* gcc.target/aarch64/sve/reduc_strict_8.c,
      	* gcc.target/aarch64/sve/reduc_strict_9.c: ...these new tests.
      	Test for scalable vectors instead of 256-bit vectors.
      
      From-SVN: r277681
      Richard Sandiford committed
    • [AArch64] Fix build for non-default languages · 6ff0cdeb
      The SVE PCS support broke go, D and Ada because those languages don't
      call TARGET_INIT_BUILTINS.  We therefore ended up trying to get the
      TYPE_MAIN_VARIANT of a null __SVBool_t.
      
      We shouldn't really need to apply TYPE_MAIN_VARIANT there anyway,
      since the ABI-defined types are (and need to be) their own main
      variants.  This patch asserts for that instead.
      
      2019-10-31  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/aarch64-sve-builtins.cc (register_builtin_types):
      	Assert that the type we store in abi_vector_types is its own
      	main variant.
      	(svbool_type_p): Don't apply TYPE_MAIN_VARIANT here.
      
      From-SVN: r277680
      Richard Sandiford committed
    • re PR fortran/92284 (Subroutine with bind(c) attribute causing varied problems) · aaa80941
      	PR fortran/92284
      	* gfortran.dg/bind_c_array_params_3_aux.c: Include
      	../../../libgfortran/ISO_Fortran_binding.h rather than
      	ISO_Fortran_binding.h.
      
      From-SVN: r277679
      Jakub Jelinek committed
    • Ensure that gfortran.dg/achar_2.f90 can fail · ffff4877
              * gfortran.dg/achar_2.f90: Remove bogus line from
              last commit.
      
      From-SVN: r277678
      Tobias Burnus committed
    • [arm] Avoid using negative offsets for 'immediate' addresses when compiling for Thumb2 · a2f9e6e3
      Thumb2 code now uses the Arm implementation of legitimize_address.
      That code has a case to handle addresses that are absolute CONST_INT
      values, which is a common use case in deeply embedded targets (eg:
      void *p = (void*)0x12345678).  Since thumb has very limited negative
      offsets from a constant, we want to avoid forming a CSE base that will
      then be used with a negative value.
      
      This was reported upstream originally in
      https://gcc.gnu.org/ml/gcc-help/2019-10/msg00122.html
      
      For example,
      
      void test1(void) {
        volatile uint32_t * const p = (uint32_t *) 0x43fe1800;
      
        p[3] = 1;
        p[4] = 2;
        p[1] = 3;
        p[7] = 4;
        p[0] = 6;
      }
      
      With the new code, instead of 
      
              ldr     r3, .L2
              subw    r2, r3, #2035
              movs    r1, #1
              str     r1, [r2]
              subw    r2, r3, #2031
              movs    r1, #2
              str     r1, [r2]
              subw    r2, r3, #2043
              movs    r1, #3
              str     r1, [r2]
              subw    r2, r3, #2019
              movs    r1, #4
              subw    r3, r3, #2047
              str     r1, [r2]
              movs    r2, #6
              str     r2, [r3]
              bx      lr
      
      
      We now get
      
              ldr     r3, .L2
              movs    r2, #1
              str     r2, [r3, #2060]
              movs    r2, #2
              str     r2, [r3, #2064]
              movs    r2, #3
              str     r2, [r3, #2052]
              movs    r2, #4
              str     r2, [r3, #2076]
              movs    r2, #6
              str     r2, [r3, #2048]
              bx      lr
      
      
      	* config/arm/arm.c (arm_legitimize_address): Don't form negative
      	offsets from a CONST_INT address when TARGET_THUMB2.
      
      From-SVN: r277677
      Richard Earnshaw committed
    • [arm] Pattern match insns for a + ~b + Carry · d84b9ad5
      On ARM, the SBC instruction is defined as
      
        Ra - Rb - ~C
      
      where C is the carry flag.  But -Rb = ~Rb + 1, so this is equivalent to
      
        Ra + ~Rb + 1 - ~C
      
      which then simplifies to
      
        Ra + ~Rb + C
      
      which is essentially an add-with-carry with one operand inverted.  We
      can define RTL patterns to match this.  In thumb2 we can only match
      when the operands are both registers, but in Arm state we can also use
      RSC to match when Rn is either a constant or a shifted operand.
      
      This overall simplifies some cases of 64-bit arithmetic, for example, 
      
      int64_t f (int64_t a, int64_t b) { return a + ~b; }
      
      will now compile to
      
        MVN  R2, R2
        ADDS R0, R0, R2
        SBC  R1, R1, R3
      
      	* config/arm/arm.md (add_not_cin): New insn.
      	(add_not_shift_cin): Likewise.
      
      From-SVN: r277676
      Richard Earnshaw committed
    • Remove dead code in IPA ICF. · 946b4a68
      2019-10-31  Martin Liska  <mliska@suse.cz>
      
      	* ipa-icf-gimple.c (func_checker::compare_tree_ssa_label): Remove.
      	* ipa-icf-gimple.h: Remove declaration from compare_tree_ssa_label
      	and compare_memory_operand.
      
      From-SVN: r277675
      Martin Liska committed
    • Ensure that gfortran.dg/achar_2.f90 can fail · 1a9e325f
              * gfortran.dg/achar_2.f90: Print 'DONE' and add dg-output.
      
      From-SVN: r277674
      Tobias Burnus committed
    • Improve tests for std::add_pointer · b9ff4d7c
      The type trait depends on is_void so the tests should check those cases.
      
      	* testsuite/20_util/add_pointer/value.cc: Check void types.
      
      From-SVN: r277672
      Jonathan Wakely committed
    • Remove PR 92268 workaround and fix new test failures · b3ffa117
      With the compiler bug fixed we can simplify the __sizable concept to use
      a return-type-requirement again. I also realised it was redundantly
      re-checking a subset of the sized_sentinel_for requirements.
      
      The compiler fix also revealed bugs in two tests which started to fail
      and are fixed by this patch.
      
      	* include/bits/range_access.h (__sizable): Rename to __sentinel_size.
      	Remove workaround for PR c++/92268 and remove redundant requirements
      	that are already checked by sized_sentinel_for.
      	* testsuite/std/ranges/access/cend.cc: Fix failures.
      	* testsuite/std/ranges/access/end.cc: Likewise.
      
      From-SVN: r277667
      Jonathan Wakely committed
    • Fix handling of arrays in range access customization points · beaecb2d
      This combines the overloads for arrays with the non-array overloads,
      using if-constexpr to choose between the cases, and also enforces the
      following:
      
      - ADL should only be used for class types and enumeration types.
      - ranges::begin should be ill-formed for rvalue arrays.
      - ranges::end should be ill-formed for rvalue arrays, unbounded
        arrays, and arrays of incomplete type.
      - ranges::size should be ill-formed for unbounded arrays.
      
      	* include/bits/range_access.h (ranges::begin): Combine array and
      	non-array overloads into one function template. Only use ADL for
      	classes and enums
      	(ranges::end, ranges::size): Likewise. Make unbounded arrays
      	ill-formed.
      	(ranges::rbegin, ranges::rend): Only use ADL for classes and enums.
      	Reformat _S_noexcept() functions to mirror operator() structure.
      	* testsuite/std/ranges/access/begin.cc: Check incomplete array.
      	* testsuite/std/ranges/access/end_neg.cc: New test.
      	* testsuite/std/ranges/access/size.cc: Check array of incomplete type.
      	* testsuite/std/ranges/access/size_neg.cc: New test.
      
      From-SVN: r277666
      Jonathan Wakely committed
    • [testsuite] Fix wrong order of dg-additional-options · d9a6144c
      gcc/testsuite/ChangeLog:
      2019-10-31  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
      	* gcc.target/aarch64/sve/reduc_strict_3.c: Fix option order.
      	* gcc.target/i386/avx-vzeroupper-19.c: Likewise.
      	* gcc.target/i386/avx2-vect-mask-store-move1.c: Likewise.
      	* gcc.target/i386/avx512f-gather-2.c: Likewise.
      	* gcc.target/i386/avx512f-gather-5.c: Likewise.
      	* gcc.target/i386/l_fma_double_1.c: Likewise.
      	* gcc.target/i386/l_fma_double_2.c: Likewise.
      	* gcc.target/i386/l_fma_double_3.c: Likewise.
      	* gcc.target/i386/l_fma_double_4.c: Likewise.
      	* gcc.target/i386/l_fma_double_5.c: Likewise.
      	* gcc.target/i386/l_fma_double_6.c: Likewise.
      	* gcc.target/i386/l_fma_float_1.c: Likewise.
      	* gcc.target/i386/l_fma_float_2.c: Likewise.
      	* gcc.target/i386/l_fma_float_3.c: Likewise.
      	* gcc.target/i386/l_fma_float_4.c: Likewise.
      	* gcc.target/i386/l_fma_float_5.c: Likewise.
      	* gcc.target/i386/l_fma_float_6.c: Likewise.
      	* gcc.target/i386/mask-pack.c: Likewise.
      	* gcc.target/i386/mask-unpack.c: Likewise.
      
      From-SVN: r277664
      Andre Vieira committed
    • Fortran] PR92284 – gfc_desc_to_cfi_desc fixes · fc5a9708
              gcc/fortran/
              PR fortran/92284.
              * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Free CFI descriptor
              at the end; partial revised revert of Rev. 277502.
      
              libgfortran/
              PR fortran/92284.
              * runtime/ISO_Fortran_binding.c (gfc_desc_to_cfi_desc):
      
              gcc/testsuite/
              PR fortran/92284.
              * gfortran.dg/bind-c-intent-out.f90: Update expected dump;
              extend comment.
              * gfortran.dg/bind_c_array_params_3.f90: New.
              * gfortran.dg/bind_c_array_params_3_aux.c: New.
      
      From-SVN: r277663
      Tobias Burnus committed
    • configure.ac: Compute and substitute omp_device_properties and omp_device_property_deps. · 9ba66bf5
      	* configure.ac: Compute and substitute omp_device_properties and
      	omp_device_property_deps.
      	* Makefile.in (generated_files): Add omp-device-properties.h.
      	(omp-general.o): Depend on omp-device-properties.h.
      	(omp_device_properties): New make variable.
      	(omp-device-properties.h, s-omp-device-properties-h,
      	install-omp-device-properties): New goals.
      	(install): Depend on install-omp-device-properties for accelerators.
      	* target.def (TARGET_OMP_DEVICE_KIND_ARCH_ISA): New target hook.
      	* target.h (enum omp_device_kind_arch_isa): New enum.
      	* doc/tm.texi.in: Add placeholder for TARGET_OMP_DEVICE_KIND_ARCH_ISA
      	documentation.
      	* omp-general.c: Include omp-device-properties.h.
      	(omp_max_simt_vf): Expect OFFLOAD_TARGET_NAMES to be separated by
      	colon instead of comma.
      	(omp_offload_device_kind_arch_isa, omp_maybe_offloaded): New
      	functions.
      	(omp_context_selector_matches): Implement device set arch/isa
      	selectors, improve device set kind selector handling.
      	* config/i386/i386-options.h (ix86_omp_device_kind_arch_isa): Declare.
      	* config/i386/i386.c (TARGET_SIMD_CLONE_ADJUST,
      	TARGET_SIMD_CLONE_USABLE): Formatting fix.
      	(TARGET_OMP_DEVICE_KIND_ARCH_ISA): Redefine to
      	ix86_omp_device_kind_arch_isa.
      	* config/i386/i386-options.c (struct ix86_target_opts): Move type
      	definition from ix86_target_string to file scope.
      	(isa2_opts, isa_opts): Moved arrays from ix86_target_string function
      	to file scope.
      	(ix86_omp_device_kind_arch_isa): New function.
      	(ix86_target_string): Moved struct ix86_target_opts, isa2_opts and
      	isa_opts definitions to file scope.
      	* config/i386/t-intelmic (omp-device-properties): New goal.
      	* config/nvptx/t-nvptx (omp-device-properties): Likewise.
      	* config/nvptx/nvptx.c (nvptx_omp_device_kind_arch_isa): New function.
      	(TARGET_OMP_DEVICE_KIND_ARCH_ISA): Redefine to
      	nvptx_omp_device_kind_arch_isa.
      	* configure: Regenerate.
      	* doc/tm.texi: Regenerate.
      testsuite/
      	* c-c++-common/gomp/declare-variant-9.c: New test.
      	* c-c++-common/gomp/declare-variant-10.c: New test.
      
      From-SVN: r277662
      Jakub Jelinek committed
    • Fortran] PR92277 - Fix assumed-rank array with bind(C) · 6409a3c0
              gcc/fortran/
              PR fortran/92277
              * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Fix DECL_ARTIFICIAL
              checking.
      
              gcc/testsuite/
              PR fortran/92277
              * fortran.dg/pr92277.f90: New.
      
      From-SVN: r277661
      Tobias Burnus committed
    • re PR middle-end/92231 (ICE in gimple_fold_stmt_to_constant_1) · 6773658a
      	PR middle-end/92231
      	* tree.h (fndecl_built_in_p): Use fndecl_built_in_p instead of
      	DECL_BUILT_IN in comment.  Remove redundant ()s around return
      	argument.
      	* tree.c (free_lang_data_in_decl): Check if var is FUNCTION_DECL
      	before calling fndecl_built_in_p.
      	* gimple-fold.c (gimple_fold_stmt_to_constant_1): Check if
      	TREE_OPERAND (fn, 0) is a FUNCTION_DECL before calling
      	fndecl_built_in_p on it.
      lto/
      	* lto-lang.c (handle_const_attribute): Don't call fndecl_built_in_p
      	on *node that is not FUNCTION_DECL.
      testsuite/
      	* gcc.c-torture/compile/pr92231.c: New test.
      
      From-SVN: r277660
      Jakub Jelinek committed