1. 11 Oct, 2019 33 commits
    • typeck.c (cp_build_binary_op): Do not handle RROTATE_EXPR and LROTATE_EXPR. · 436103a0
      2019-10-10  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* typeck.c (cp_build_binary_op): Do not handle RROTATE_EXPR and
      	LROTATE_EXPR.
      	* constexpr.c (cxx_eval_constant_expression): Likewise.
      	(potential_constant_expression_1): Likewise.
      	* cp-gimplify.c (cp_fold): Likewise.
      	* pt.c (tsubst_copy): Likewise.
      
      From-SVN: r276903
      Paolo Carlini committed
    • Preserve the location of explicitly defaulted functions. · e0365bd3
      	* decl2.c (mark_used): Don't clobber DECL_SOURCE_LOCATION on
      	explicitly defaulted functions.
      	* method.c (synthesize_method): Likewise.
      
      From-SVN: r276902
      Jason Merrill committed
    • Extend subst to simplify CONST_INT inside SIGN_EXTEND. · c6b6fde0
      This addresses PR 91860 which has four testcases triggering internal errors.
      The problem here is that in combine when handling debug insns, we are trying
      to substitute
      (sign_extend:DI (const_int 8160 [0x1fe0]))
      as the value for
      (reg:DI 78 [ _9 ])
      in the debug insn
      (debug_insn 29 28 30 2 (var_location:QI d (subreg:QI (reg:DI 78 [ _9 ]) 0)) "tmp4.c":11:5 -1
           (nil))
      This eventually triggers an abort because 8160 is not a sign-extended
      QImode value.
      
      In subst there is already code check for a CONST_INT inside a ZERO_EXTEND and
      simplify it.  This needs to be extended to also handle a SIGN_EXTEND the same
      way.
      
      	gcc/
      	PR rtl-optimization/91860
      	* combine.c (subst): If new_rtx is a constant, also check for
      	SIGN_EXTEND when deciding whether to call simplify_unary_operation.
      
      	gcc/testsuite/
      	PR rtl-optimization/91860
      	* gcc.dg/pr91860-1.c: New testcase.
      	* gcc.dg/pr91860-2.c: New testcase.
      	* gcc.dg/pr91860-3.c: New testcase.
      	* gcc.dg/pr91860-4.c: New testcase.
      
      From-SVN: r276901
      Jim Wilson committed
    • re PR fortran/91649 (ICE in gfc_resolve_findloc, at fortran/iresolve.c:1827) · e8c78b3a
      2019-10-11  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/91649
      	check.c (gfc_check_findloc): Additional checking for valid arguments
      
      2019-10-11  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/91649
      	* gfortran.dg/pr91649.f90: New test.
      
      From-SVN: r276900
      Steven G. Kargl committed
    • re PR fortran/91715 (ICE in resolve_fntype, at fortran/resolve.c:16884) · 95040e7e
      2019-10-11  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/91715
      	* decl.c (gfc_match_prefix): If matching a type-spec returns an error,
      	it's an error so re-act correctly.
      
      2019-10-11  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/91715
      	* gfortran.dg/function_kinds_5.f90: Prune run-on error.
      	* gfortran.dg/pr85543.f90: Ditto.
      	* gfortran.dg/pr91715.f90: New test.
      
      From-SVN: r276899
      Steven G. Kargl committed
    • re PR fortran/92018 (ICE in gfc_conv_constant_to_tree, at fortran/trans-const.c:370) · 405e87e8
      2019-10-11  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/92018
      	* check.c (reset_boz): New function.
      	(illegal_boz_arg, boz_args_check, gfc_check_complex, gfc_check_float,
      	gfc_check_transfer): Use it.
      	(gfc_check_dshift): Use reset_boz, and re-arrange the checking to
      	help suppress possible run-on errors.
      	(gfc_check_and): Restore checks for valid argument types.  Use
      	reset_boz, and re-arrange the checking to help suppress possible
       	un-on errors.
      	* resolve.c (resolve_function): Actual arguments cannot be BOZ in
      	a function reference.
      
      2019-10-11  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/92018
      	* gfortran.dg/gnu_logical_2.f90: Update dg-error regex.
      	* gfortran.dg/pr81509_2.f90: Ditto.
      	* gfortran.dg/pr92018.f90: New test.
      
      From-SVN: r276898
      Steven G. Kargl committed
    • re PR fortran/92019 (ICE in find_inquiry_ref, at expr.c:1790) · c988c699
      2019-10-11  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/92019
      	* array.c (match_subscript): BOZ cannot be an array subscript.
       
       
      2019-10-11  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/92019
      	* gfortran.dg/pr92019.f90: New test.
      
      From-SVN: r276897
      Steven G. Kargl committed
    • Support _Decimal* keywords for C2x. · fe2bc27c
      ISO C2x adds decimal floating point as an optional standard feature.
      This patch accordingly makes GCC accept the _Decimal* keywords in
      strict C2x mode, using pedwarn_c11 to get a warning for
      -Wc11-c2x-compat.  (Constants, where the pedwarn is in libcpp, will be
      dealt with separately.)
      
      The _Decimal* keywords are marked with D_EXT, meaning they are not
      considered keywords at all in strict conformance modes.  This is
      contrary to the normal practice for most implementation-namespace
      keywords, which are accepted in all standards modes but with
      appropriate pedwarns for older standards.  This patch removes D_EXT
      from those keywords so they are accepted as keywords for all
      standards, consequently removing the gcc.dg/dfp/keywords-ignored-c99.c
      test that is no longer valid.
      
      (A new D_C2X for keywords will still be needed if any new keywords get
      added that aren't in the implementation namespace for older standards;
      there are proposals for such keywords, albeit as predefined macros
      that might not actually need new keywords in the compiler in all
      cases.  If the DFP keywords end up as decimal32 etc., of course
      appropriate compiler and testcase changes will be needed, and a
      version of keywords-ignored-c99.c would make sense again with such
      spellings.)
      
      Bootstrapped with no regressions on x86_64-pc-linux-gnu.
      
      gcc/c:
      	* c-decl.c (declspecs_add_type): Use pedwarn_c11 for DFP types.
      
      gcc/c-family:
      	* c-common.c (c_common_reswords): Do not use D_EXT for _Decimal32,
      	_Decimal64 and _Decimal128.
      
      gcc/testsuite:
      	* gcc.dg/dfp/c11-keywords-1.c, gcc.dg/dfp/c11-keywords-2.c,
      	gcc.dg/dfp/c2x-keywords-1.c, gcc.dg/dfp/c2x-keywords-2.c: New
      	tests.
      	* gcc.dg/dfp/keywords-ignored-c99.c: Remove test.
      	* gcc.dg/dfp/constants-c99.c, gcc.dg/dfp/keywords-c89.c,
      	gcc.dg/dfp/keywords-c99.c: Use -pedantic-errors.
      
      From-SVN: r276896
      Joseph Myers committed
    • * fi.po: Update. · 6334c1f4
      From-SVN: r276894
      Joseph Myers committed
    • Implement <concepts> header for C++20 · cfc219ae
      There are currently no tests for [concepts.compare], but they will be
      added ASAP.
      
      	* include/Makefile.am: Add new header.
      	* include/Makefile.in: Regenerate.
      	* include/precompiled/stdc++.h: Include <concepts>.
      	* include/std/concepts: New header for C++20.
      	* include/std/version (__cpp_lib_concepts): Define.
      	* scripts/create_testsuite_files: Look for test files in new std
      	directory.
      	* testsuite/libstdc++-dg/conformance.exp: Likewise.
      	* testsuite/std/concepts/concepts.callable/invocable.cc: New test.
      	* testsuite/std/concepts/concepts.callable/regular_invocable.cc: New
      	test.
      	* testsuite/std/concepts/concepts.callable/relation.cc: New test.
      	* testsuite/std/concepts/concepts.callable/strictweakorder.cc: New
      	test.
      	* testsuite/std/concepts/concepts.lang/concept.arithmetic/
      	floating_point.cc: New test.
      	* testsuite/std/concepts/concepts.lang/concept.arithmetic/integral.cc:
      	New test.
      	* testsuite/std/concepts/concepts.lang/concept.arithmetic/
      	signed_integral.cc: New test.
      	* testsuite/std/concepts/concepts.lang/concept.arithmetic/
      	unsigned_integral.cc: New test.
      	* testsuite/std/concepts/concepts.lang/concept.assignable/1.cc: New
      	test.
      	* testsuite/std/concepts/concepts.lang/concept.common/1.cc: New test.
      	* testsuite/std/concepts/concepts.lang/concept.commonref/1.cc: New
      	test.
      	* testsuite/std/concepts/concepts.lang/concept.constructible/1.cc:
      	New test.
      	* testsuite/std/concepts/concepts.lang/concept.convertible/1.cc:
      	New test.
      	* testsuite/std/concepts/concepts.lang/concept.copyconstructible/1.cc:
      	New test.
      	* testsuite/std/concepts/concepts.lang/concept.defaultconstructible/
      	1.cc: New test.
      	* testsuite/std/concepts/concepts.lang/concept.derived/1.cc:
      	New test.
      	* testsuite/std/concepts/concepts.lang/concept.destructible/1.cc:
      	New test.
      	* testsuite/std/concepts/concepts.lang/concept.moveconstructible/1.cc:
      	New test.
      	* testsuite/std/concepts/concepts.lang/concept.same/1.cc:
      	New test.
      	* testsuite/std/concepts/concepts.lang/concept.swappable/swap.cc:
      	New test.
      	* testsuite/std/concepts/concepts.lang/concept.swappable/swappable.cc:
      	New test.
      	* testsuite/std/concepts/concepts.lang/concept.swappable/
      	swappable_with.cc: New test.
      	* testsuite/std/concepts/concepts.object/copyable.cc: New test.
      	* testsuite/std/concepts/concepts.object/movable.cc: New test.
      	* testsuite/std/concepts/concepts.object/regular.cc: New test.
      	* testsuite/std/concepts/concepts.object/semiregular.cc: New test.
      
      From-SVN: r276892
      Jonathan Wakely committed
    • Use __is_same_as for std::is_same and std::is_same_v · 02f6fdff
      By using the built-in we don't need to match a partial specialization
      for std::is_same and don't need to instantiate std::is_same at all for
      uses of std::is_same_v.
      
      	* include/std/type_traits (is_same): Replace partial specialization
      	by using __is_same_as built-in in primary template.
      	(is_same_v): Use __is_same_as built-in instead of instantiating the
      	is_same trait.
      
      From-SVN: r276891
      Jonathan Wakely committed
    • PR libstdc++/92059 fix several bugs in tr2::dynamic_bitset · 07758d90
      	PR libstdc++/92059
      	* include/tr2/dynamic_bitset (__dynamic_bitset_base): Define all
      	special member functions as defaulted. Add noexcept to most members.
      	(__dynamic_bitset_base(size_t, unsigned long long, const _Alloc&)):
      	Mask off unwanted bits in the __val parameter. Avoid undefined left
      	shifts.
      	(__dynamic_bitset_base::_M_assign): Remove.
      	(__dynamic_bitset_base::_M_do_reset): Use std::fill.
      	(__dynamic_bitset_base::_M_are_all_aux): Avoid integer promotion when
      	block_type has lower rank than int.
      	(dynamic_bitset): Add noexcept to most members. Use injected-class-name
      	in return types and parameter types.
      	(dynamic_bitset::_M_Nb): Add default member initializer.
      	(dynamic_bitset(), dynamic_bitset(const dynamic_bitset&)): Define as
      	defaulted.
      	(dynamic_bitset(dynamic_bitset&&)): Clear source object after move.
      	(dynamic_bitset::operator=(const dynamic_bitset&)): Define as
      	defaulted.
      	(dynamic_bitset::operator=(dynamic_bitset&&)): Add noexcept-specifier.
      	Define without using swap, to propagate allocator correctly.
      	(dynamic_bitset(const char*, const _Alloc&)): Use strlen.
      	(dynamic_bitset::_M_do_sanitize, dynamic_bitset::_M_do_fill): Use
      	casts to avoid unwanted integer promotions.
      	(dynamic_bitset::_M_copy_from_ptr): Rearrange template parameters and
      	add default template arguments and default argument to simplify usage.
      	(dynamic_bitset::_M_copy_from_string): Adjust call to _M_copy_from_ptr.
      	(operator==(const dynamic_bitset&, const dynamic_bitset&))
      	(operator<(const dynamic_bitset&, const dynamic_bitset&)): Use _M_Nb.
      	* include/tr2/dynamic_bitset.tcc (dynamic_bitset::_M_copy_from_ptr):
      	Adjust template parameters to match declaration.
      	* testsuite/tr2/dynamic_bitset/cmp.cc: New test.
      	* testsuite/tr2/dynamic_bitset/cons.cc: New test.
      	* testsuite/tr2/dynamic_bitset/copy.cc: New test.
      	* testsuite/tr2/dynamic_bitset/move.cc: New test.
      	* testsuite/tr2/dynamic_bitset/pr92059.cc: New test.
      
      From-SVN: r276890
      Jonathan Wakely committed
    • Avoid warnings in <charconv> · 2bf2dacb
      	* include/bits/charconv.h (__to_chars_len): Avoid -Wsign-compare
      	warnings.
      
      From-SVN: r276889
      Jonathan Wakely committed
    • Relax store_bit_field call in store_expr · 8b27c905
      store_bit_field already takes a poly_uint64 size, so we can relax the
      INTVAL to rtx_to_poly_int64.  This is tested by the SVE ACLE patches.
      
      2019-10-11  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* expr.c (store_expr): Use rtx_to_poly_int64 rather than
      	INTVAL when calling store_bit_field.
      
      From-SVN: r276888
      Richard Sandiford committed
    • [ARM] Tweak HONOR_REG_ALLOC_ORDER · 3635c2bf
      Setting HONOR_REG_ALLOC_ORDER improves codesize with -Os, however it generates
      slower and larger code with -O2 and higher.  So only set it when optimizing for
      size.  On Cortex-A57 this improves SPECINT2006 by 0.15% and SPECFP2006 by 0.25%
      while reducing codesize.
      
          gcc/
      	* config/arm/arm.h (HONOR_REG_ALLOC_ORDER): Set when optimizing for
      	size.
      
      From-SVN: r276887
      Wilco Dijkstra committed
    • tree-vect-loop.c (vect_analyze_loop_operations): Adjust call to vectorizable_live_operation. · bd01f4da
      2019-10-11  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * tree-vect-loop.c (vect_analyze_loop_operations): Adjust call to
              vectorizable_live_operation.
              (vectorizable_live_operation): Adjust parameters.
              * tree-vect-stmts.c (vect_init_vector,
              vect_gen_widened_results_half): Fix typo in function comment.
              (can_vectorize_live_stmts): Adjust function comment.
              Adjust parameters.  Adjust call to vectorizable_live_operation.
              (vect_analyze_stmt): Adjust call to can_vectorize_live_stmts.
              (vect_transform_stmt): Adjust function comment.  Adjust call to
              can_vectorize_live_stmts.
              * tree-vectorizer.h (vectorizable_live_operation): Adjust parameters.
      
      From-SVN: r276886
      Bernd Edlinger committed
    • Fortran] PR 92050 - fix ICE with -fcheck=all · 643d4436
              gcc/fortran/
              PR fortran/92050
              * trans-expr.c (gfc_conv_procedure_call): Handle code generated
              by -fcheck=all.
      
              gcc/testsuite/
              PR fortran/92050
              * gfortran.dg/pr92050.f90: New.
      
      From-SVN: r276885
      Tobias Burnus committed
    • re PR tree-optimization/90883 (Generated code is worse if returned struct is unnamed) · 1284e2b1
      2019-10-11  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/90883
      	PR tree-optimization/91091
      	* tree-ssa-sccvn.c (vn_reference_lookup_3): Use correct
      	alias-sets both for recording VN table entries and continuing
      	walking after translating through copies.  Handle same-sized
      	reads from SSA names by returning the plain SSA name.
      	(eliminate_dom_walker::eliminate_stmt): Properly handle
      	non-size precision stores in redundant store elimination.
      
      	* gcc.dg/torture/20191011-1.c: New testcase.
      	* gcc.dg/tree-ssa/ssa-fre-82.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-fre-83.c: Likewise.
      	* gcc.dg/tree-ssa/redundant-assign-zero-1.c: Disable FRE.
      	* gcc.dg/tree-ssa/redundant-assign-zero-2.c: Likewise.
      
      From-SVN: r276882
      Richard Biener committed
    • ggc-page.c (release_pages): Output statistics when !quiet_flag. · e5207f1a
      	* ggc-page.c (release_pages): Output statistics when !quiet_flag.
      	(ggc_collect): Dump later to not interfere with release_page dump.
      	(ggc_trim): New function.
      	* ggc-none.c (ggc_trim): New.
      	* ggc.h (ggc_trim): Declare.
      
      	* lto.c (lto_wpa_write_files): Call ggc_trim.
      
      From-SVN: r276878
      Jan Hubicka committed
    • re PR tree-optimization/92066 (Many vectorization tests FAIL) · 9d99596e
      2019-10-11  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/92066
      	PR tree-optimization/92046
      	* tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
      	Fix bogus cost model check.
      
      From-SVN: r276876
      Richard Biener committed
    • [OpenMP,Fortran] Fix several OpenMP use_device_addr/map/update errors · 08c14aaa
      	gcc/fortran/
      	* f95-lang.c (LANG_HOOKS_OMP_IS_ALLOCATABLE_OR_PTR): Re-define to
      	gfc_omp_is_allocatable_or_ptr.
      	* trans-decl.c (create_function_arglist): Set GFC_DECL_OPTIONAL_ARGUMENT
      	only if not passed by value.
      	* trans-openmp.c (gfc_omp_is_allocatable_or_ptr): New.
      	(gfc_trans_omp_clauses): For MAP, handle (present) optional arguments;
      	for target update, handle allocatable/pointer scalars.
      	* trans.h (gfc_omp_is_allocatable_or_ptr): Declare.
      
      	gcc/
      	* langhooks-def.h (LANG_HOOKS_OMP_IS_ALLOCATABLE_OR_PTR): Define.
      	(LANG_HOOKS_DECLS): Add it.
      	* langhooks.h (lang_hooks_for_decls): Add omp_is_allocatable_or_ptr;
      	update comment for omp_is_optional_argument.
      	* omp-general.c (omp_is_allocatable_or_ptr): New.
      	* omp-general.h (omp_is_allocatable_or_ptr): Declare.
      	* omp-low.c (scan_sharing_clauses, lower_omp_target): Handle
      	Fortran's optional arguments and allocatable/pointer scalars
      	with use_device_addr.
      
      	libgomp/
      	* testsuite/libgomp.fortran/use_device_addr-1.f90: New.
      	* testsuite/libgomp.fortran/use_device_addr-2.f90: New.
      
      From-SVN: r276875
      Tobias Burnus committed
    • decl.c (elaborate_reference_1): Specifically deal with pointer displacement. · b67e2ad8
      	* gcc-interface/decl.c (elaborate_reference_1): Specifically deal with
      	pointer displacement.
      
      	* gcc-interface/decl.c (components_to_record): Use proper name.
      
      	* gcc-interface/trans.c (Sloc_to_locus): Use standard types.
      
      From-SVN: r276874
      Eric Botcazou committed
    • decl.c (gnat_to_gnu_field): Adjust again the packing for a field without strict… · 75a582cd
      decl.c (gnat_to_gnu_field): Adjust again the packing for a field without strict alignment and with an...
      
      	* gcc-interface/decl.c (gnat_to_gnu_field): Adjust again the packing
      	for a field without strict alignment and with an oversized clause.
      
      From-SVN: r276873
      Eric Botcazou committed
    • S/390: Test signaling FP comparison instructions · 76dcb70d
      gcc/testsuite/ChangeLog:
      
      2019-10-11  Ilya Leoshkevich  <iii@linux.ibm.com>
      
      	PR target/77918
      	* gcc.target/s390/s390.exp: Enable Fortran tests.
      	* gcc.target/s390/zvector/autovec-double-quiet-eq.c: New test.
      	* gcc.target/s390/zvector/autovec-double-quiet-ge.c: New test.
      	* gcc.target/s390/zvector/autovec-double-quiet-gt.c: New test.
      	* gcc.target/s390/zvector/autovec-double-quiet-le.c: New test.
      	* gcc.target/s390/zvector/autovec-double-quiet-lt.c: New test.
      	* gcc.target/s390/zvector/autovec-double-quiet-ordered.c: New test.
      	* gcc.target/s390/zvector/autovec-double-quiet-uneq.c: New test.
      	* gcc.target/s390/zvector/autovec-double-quiet-unordered.c: New test.
      	* gcc.target/s390/zvector/autovec-double-signaling-eq-z13-finite.c: New test.
      	* gcc.target/s390/zvector/autovec-double-signaling-eq-z13.c: New test.
      	* gcc.target/s390/zvector/autovec-double-signaling-eq.c: New test.
      	* gcc.target/s390/zvector/autovec-double-signaling-ge-z13-finite.c: New test.
      	* gcc.target/s390/zvector/autovec-double-signaling-ge-z13.c: New test.
      	* gcc.target/s390/zvector/autovec-double-signaling-ge.c: New test.
      	* gcc.target/s390/zvector/autovec-double-signaling-gt-z13-finite.c: New test.
      	* gcc.target/s390/zvector/autovec-double-signaling-gt-z13.c: New test.
      	* gcc.target/s390/zvector/autovec-double-signaling-gt.c: New test.
      	* gcc.target/s390/zvector/autovec-double-signaling-le-z13-finite.c: New test.
      	* gcc.target/s390/zvector/autovec-double-signaling-le-z13.c: New test.
      	* gcc.target/s390/zvector/autovec-double-signaling-le.c: New test.
      	* gcc.target/s390/zvector/autovec-double-signaling-lt-z13-finite.c: New test.
      	* gcc.target/s390/zvector/autovec-double-signaling-lt-z13.c: New test.
      	* gcc.target/s390/zvector/autovec-double-signaling-lt.c: New test.
      	* gcc.target/s390/zvector/autovec-double-signaling-ltgt-z13-finite.c: New test.
      	* gcc.target/s390/zvector/autovec-double-signaling-ltgt-z13.c: New test.
      	* gcc.target/s390/zvector/autovec-double-signaling-ltgt.c: New test.
      	* gcc.target/s390/zvector/autovec-double-smax-z13.F90: New test.
      	* gcc.target/s390/zvector/autovec-double-smax.F90: New test.
      	* gcc.target/s390/zvector/autovec-double-smin-z13.F90: New test.
      	* gcc.target/s390/zvector/autovec-double-smin.F90: New test.
      	* gcc.target/s390/zvector/autovec-float-quiet-eq.c: New test.
      	* gcc.target/s390/zvector/autovec-float-quiet-ge.c: New test.
      	* gcc.target/s390/zvector/autovec-float-quiet-gt.c: New test.
      	* gcc.target/s390/zvector/autovec-float-quiet-le.c: New test.
      	* gcc.target/s390/zvector/autovec-float-quiet-lt.c: New test.
      	* gcc.target/s390/zvector/autovec-float-quiet-ordered.c: New test.
      	* gcc.target/s390/zvector/autovec-float-quiet-uneq.c: New test.
      	* gcc.target/s390/zvector/autovec-float-quiet-unordered.c: New test.
      	* gcc.target/s390/zvector/autovec-float-signaling-eq.c: New test.
      	* gcc.target/s390/zvector/autovec-float-signaling-ge.c: New test.
      	* gcc.target/s390/zvector/autovec-float-signaling-gt.c: New test.
      	* gcc.target/s390/zvector/autovec-float-signaling-le.c: New test.
      	* gcc.target/s390/zvector/autovec-float-signaling-lt.c: New test.
      	* gcc.target/s390/zvector/autovec-float-signaling-ltgt.c: New test.
      	* gcc.target/s390/zvector/autovec-fortran.h: New test.
      	* gcc.target/s390/zvector/autovec-long-double-signaling-ge.c: New test.
      	* gcc.target/s390/zvector/autovec-long-double-signaling-gt.c: New test.
      	* gcc.target/s390/zvector/autovec-long-double-signaling-le.c: New test.
      	* gcc.target/s390/zvector/autovec-long-double-signaling-lt.c: New test.
      	* gcc.target/s390/zvector/autovec.h: New test.
      
      From-SVN: r276872
      Ilya Leoshkevich committed
    • S/390: Use signaling FP comparison instructions · d0a0caca
      dg-torture.exp=inf-compare-1.c is failing, because (qNaN > +Inf)
      comparison is compiled to CDB instruction, which does not signal an
      invalid operation exception. KDB should have been used instead.
      
      This patch introduces a new CCmode and a new pattern in order to
      generate signaling instructions in this and similar cases.
      
      gcc/ChangeLog:
      
      2019-10-11  Ilya Leoshkevich  <iii@linux.ibm.com>
      
      	PR target/77918
      	* config/s390/2827.md: Add new opcodes.
      	* config/s390/2964.md: Likewise.
      	* config/s390/3906.md: Likewise.
      	* config/s390/8561.md: Likewise.
      	* config/s390/s390-builtins.def (s390_vfchesb): Use
      	the new vec_cmpgev4sf_quiet_nocc.
      	(s390_vfchedb): Use the new vec_cmpgev2df_quiet_nocc.
      	(s390_vfchsb): Use the new vec_cmpgtv4sf_quiet_nocc.
      	(s390_vfchdb): Use the new vec_cmpgtv2df_quiet_nocc.
      	(vec_cmplev4sf): Use the new vec_cmplev4sf_quiet_nocc.
      	(vec_cmplev2df): Use the new vec_cmplev2df_quiet_nocc.
      	(vec_cmpltv4sf): Use the new vec_cmpltv4sf_quiet_nocc.
      	(vec_cmpltv2df): Use the new vec_cmpltv2df_quiet_nocc.
      	* config/s390/s390-modes.def (CCSFPS): New mode.
      	* config/s390/s390.c (s390_match_ccmode_set): Support CCSFPS.
      	(s390_select_ccmode): Return CCSFPS for LT, LE, GT, GE and LTGT.
      	(s390_branch_condition_mask): Reuse CCS for CCSFPS.
      	(s390_expand_vec_compare): Use non-signaling patterns where
      	necessary.
      	(s390_reverse_condition): Support CCSFPS.
      	* config/s390/s390.md (*cmp<mode>_ccsfps): New pattern.
      	* config/s390/vector.md: (VFCMP_HW_OP): Remove.
      	(asm_fcmp_op): Likewise.
      	(*smaxv2df3_vx): Use pattern for quiet comparison.
      	(*sminv2df3_vx): Likewise.
      	(*vec_cmp<VFCMP_HW_OP:code><mode>_nocc): Remove.
      	(*vec_cmpeq<mode>_quiet_nocc): New pattern.
      	(vec_cmpgt<mode>_quiet_nocc): Likewise.
      	(vec_cmplt<mode>_quiet_nocc): New expander.
      	(vec_cmpge<mode>_quiet_nocc): New pattern.
      	(vec_cmple<mode>_quiet_nocc): New expander.
      	(*vec_cmpeq<mode>_signaling_nocc): New pattern.
      	(*vec_cmpgt<mode>_signaling_nocc): Likewise.
      	(*vec_cmpgt<mode>_signaling_finite_nocc): Likewise.
      	(*vec_cmpge<mode>_signaling_nocc): Likewise.
      	(*vec_cmpge<mode>_signaling_finite_nocc): Likewise.
      	(vec_cmpungt<mode>): New expander.
      	(vec_cmpunge<mode>): Likewise.
      	(vec_cmpuneq<mode>): Use quiet patterns.
      	(vec_cmpltgt<mode>): Allow only on z14+.
      	(vec_cmpordered<mode>): Use quiet patterns.
      	(vec_cmpunordered<mode>): Likewise.
      	(VEC_CMP_EXPAND): Add ungt and unge.
      
      gcc/testsuite/ChangeLog:
      
      2019-10-11  Ilya Leoshkevich  <iii@linux.ibm.com>
      
      	* gcc.target/s390/vector/vec-scalar-cmp-1.c: Adjust
      	expectations.
      
      From-SVN: r276871
      Ilya Leoshkevich committed
    • Do not allocate ggc during streaming. · 1fcf52a6
      	* gimple-streamer-out.c (output_gimple_stmt): Add explicit function
      	parameter.
      	* lto-streamer-out.c: Include tree-dfa.h.
      	(output_cfg): Do not use cfun.
      	(lto_prepare_function_for_streaming): New.
      	(output_function): Do not push cfun; do not initialize loop optimizer.
      	* lto-streamer.h (lto_prepare_function_for_streaming): Declare.
      	* passes.c (ipa_write_summaries): Use it.
      	(ipa_write_optimization_summaries): Do not modify bodies.
      	* tree-dfa.c (renumber_gimple_stmt_uids): Add function parameter.
      	* tree.dfa.h (renumber_gimple_stmt_uids): Update prototype.
      	* tree-ssa-dse.c (pass_dse::execute): Update use of
      	renumber_gimple_stmt_uids.
      	* tree-ssa-math-opts.c (pass_optimize_widening_mul::execute): Likewise.
      
      	* lto.c (lto_wpa_write_files): Prepare all bodies for streaming.
      
      From-SVN: r276870
      Jan Hubicka committed
    • decl.c (annotate_value): Really test the sign of the value when deciding to build a NEGATE_EXPR. · 05626b02
      	* gcc-interface/decl.c (annotate_value) <INTEGER_CST>: Really test the
      	sign of the value when deciding to build a NEGATE_EXPR.
      	<PLUS_EXPR>: Remove redundant line.
      	<BIT_AND_EXPR>: Do the negation here.
      
      From-SVN: r276866
      Eric Botcazou committed
    • decl.c (Gigi_Equivalent_Type): New case. · 43b60e57
      	* gcc-interface/decl.c (Gigi_Equivalent_Type) <E_Array_Subtype>: New
      	case.  Return the base type if the subtype is not constrained.
      
      From-SVN: r276865
      Eric Botcazou committed
    • decl.c (gnat_to_gnu_entity): New case to deal with the definition of named numbers. · 104099b8
      	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Named_{Integer|Real}>:
      	New case to deal with the definition of named numbers.
      	<E_Variable>: Minor tweaks.  Set DECL_IGNORED_P on the CONST_DECL
      	if a corresponding variable is built.
      	* gcc-interface/trans.c (gnat_to_gnu) <N_Integer_Literal>: Return
      	error_mark_node instead of aborting on overflow for named numbers.
      	<N_Number_Declaration>: Reuse the <N_Object_Declaration> case and
      	deal with error_mark_node specifically.
      	* gcc-interface/utils.c (create_var_decl): Do not set DECL_IGNORED_P
      	on CONST_DECLs.
      	(gnat_write_global_declarations): Output global constants.
      
      From-SVN: r276864
      Eric Botcazou committed
    • [Ada] Repair ChangeLog entries · 848830dc
      My scripts and I unexpectedly erased gcc/ada/ChangeLog yesterday. This
      commit restores the ChangeLog file to its previous state and adds the
      entries for my commits yesterday.
      
      From-SVN: r276861
      Pierre-Marie de Rodat committed
    • re PR c++/91987 (-fstrict-eval-order issues) · 1a37b6d9
      	PR c++/91987
      cp/
      	* decl2.c (grok_array_decl): For -fstrong-eval-order, when array ref
      	operands have been swapped and at least one operand has side-effects,
      	revert the swapping before calling build_array_ref.
      	* typeck.c (cp_build_array_ref): For non-ARRAY_TYPE array ref with
      	side-effects on the index operand, if -fstrong-eval-order use
      	save_expr around the array operand.
      	(cp_build_binary_op): For shifts with side-effects in the second
      	operand, wrap first operand into SAVE_EXPR and evaluate it before
      	the shift.
      	* semantics.c (handle_omp_array_sections_1): Temporarily disable
      	flag_strong_eval_order during OMP_CLAUSE_REDUCTION array section
      	processing.
      	* cp-gimplify.c (gimplify_to_rvalue): New function.
      	(cp_gimplify_expr): Use it.
      testsuite/
      	* g++.dg/cpp1z/eval-order6.C: New test.
      	* g++.dg/cpp1z/eval-order7.C: New test.
      	* g++.dg/cpp1z/eval-order8.C: New test.
      	* c-c++-common/gomp/pr91987.c: New test.
      
      From-SVN: r276860
      Jakub Jelinek committed
    • vec_promote_demote cost to 1 for non-Power7 VSX architectures · 1e99e6fe
      2019-10-11  Kewen Lin  <linkw@gcc.gnu.org>
      
          * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Lower
          vec_promote_demote cost to 1 for non-Power7 VSX architectures.
      
      From-SVN: r276859
      Kewen Lin committed
    • Daily bump. · 192eaafb
      From-SVN: r276858
      GCC Administrator committed
  2. 10 Oct, 2019 7 commits
    • Update DFP macros in float.h for C2x and TS 18661-2. · 27dfdc0f
      GCC's <float.h> includes various macros for decimal floating-point
      types, defined if __STDC_WANT_DEC_FP__, as defined in TS 24732.
      
      TS 18661-2 and C2X make some changes to those macros.  In TS 18661-2,
      they are to be defined if __STDC_WANT_IEC_60559_DFP_EXT__, and the
      *_SUBNORMAL_MIN macros are renamed to *_TRUE_MIN.  In C2X, the macros
      are to be defined whenever DFP is supported, without needing any
      feature test macro to be defined.
      
      This patch updates the header accordingly.  There is no existing
      predefined macro for whether the target supports DFP; rather than
      adding a new macro for that purpose, this patch changes the predefined
      macros used in <float.h> so that they are only defined when DFP is
      supported and thus can be used as conditionals; this is the same way
      predefined macros for _FloatN and _FloatNx types work.  Although
      formally TR 24732 and TS 18661-2 say nothing about implementations
      lacking DFP support, it seems appropriate to avoid defining the macros
      in <float.h>, in the absence of DFP support, even if the respective
      feature test macros are defined.
      
      Bootstrapped with no regressions on x86_64-pc-linux-gnu.  Also tested
      the c2x-float-no-dfp-* tests for aarch64-linux-gnu to make sure they
      do pass in a no-DFP configuration.
      
      gcc:
      	* ginclude/float.h [!__DEC32_MANT_DIG__]: Do not define DFP
      	macros.
      	[__STDC_WANT_IEC_60559_DFP_EXT__ || __STDC_VERSION__ > 201710L]:
      	Also define DFP macros for these conditions.
      	[!__STDC_WANT_DEC_FP__] (DEC32_SUBNORMAL_MIN, DEC64_SUBNORMAL_MIN,
      	DEC128_SUBNORMAL_MIN): Do not define.
      	[__STDC_WANT_IEC_60559_DFP_EXT__ || __STDC_VERSION__ > 201710L]
      	(DEC32_TRUE_MIN, DEC64_TRUE_MIN, DEC128_TRUE_MIN): New macros.
      
      gcc/c-family:
      	* c-cppbuiltin.c (c_cpp_builtins): Do not define macros for DFP
      	types if DFP not supported.
      
      gcc/testsuite:
      	* gcc.dg/c11-float-dfp-1.c, gcc.dg/c2x-float-no-dfp-1.c,
      	gcc.dg/c2x-float-no-dfp-2.c, gcc.dg/dfp/c2x-float-dfp-1.c,
      	gcc.dg/dfp/c2x-float-dfp-2.c, gcc.dg/dfp/c2x-float-dfp-3.c,
      	gcc.dg/dfp/tr24732-float-dfp-1.c,
      	gcc.dg/dfp/ts18661-2-float-dfp-1.c: New tests.
      
      From-SVN: r276854
      Joseph Myers committed
    • re PR middle-end/26241 (None of the IPA passes are documented in passes.texi) · 8faf3ed9
      2019-10-10  Xiong Hu Luo  <luoxhu@linux.ibm.com>
      	    Sandra Loosemore  <sandra@codesourcery.com>
      
      	gcc/
      
      	PR middle-end/26241
      	* doc/lto.texi (IPA): Reference to the IPA passes.
      	* doc/passes.texi (Pass manager): Add node IPA passes and
      	  description for each IPA pass.
      
      Co-Authored-By: Sandra Loosemore <sandra@codesourcery.com>
      
      From-SVN: r276851
      Xiong Hu Luo committed
    • ipa-reference.c: Do not include splay-tree.h · 6488759f
      	* ipa-reference.c: Do not include splay-tree.h
      	(reference_vars_to_consider): Turn to hash map.
      	(get_static_name, ipa_init, analyze_function, propagate,
      	stream_out_bitmap, ipa_reference_write_optimization_summary,
      	ipa_reference_write_optimization_summary): Update.
      
      From-SVN: r276850
      Jan Hubicka committed
    • * ipa-reference.c (propagate): Fix releasing of IPA summaries. · cd8589ab
      From-SVN: r276849
      Jan Hubicka committed
    • [Darwin, machopic 4/n] Arrange to indirect IVARs when needed. · 3a73cd7c
      Objective C V2 (m64) IVAR offset refs from Apple GCC-4.x have an indirection
      for m64 code on PPC (which is the only 64b user for Mach-O PIC).  Apple GCC
      4.x places the indirections in the .data section, however this seems to have
      been unintentional - and we are placing the indirections in the non-lazy
      symbol pointers section.
      
      gcc/ChangeLog:
      
      2019-10-10  Iain Sandoe  <iain@sandoe.co.uk>
      
      	* config/darwin.c: Lookup Objective C metadata and force indirection
      	for IVAR refs.
      
      From-SVN: r276848
      Iain Sandoe committed
    • [Objective-C, NeXT ABI] Identify V2 IVAR refs by metadata. · eb870e5e
      For the NeXT 64b ABI, IVAR refs are supposed to be indirected for
      Mach-O PIC.  Identify them so that we can act as needed.
      
      gcc/objc/ChangeLog:
      
      2019-10-10  Iain Sandoe  <iain@sandoe.co.uk>
      
      	* objc-next-metadata-tags.h (OCTI_RT_META_IVAR_REF): New.
      	(meta_ivar_ref): New.
      	* objc-next-runtime-abi-02.c
      	(next_runtime_abi_02_init_metadata_attributes): Create the
      	IVAR ref metadata identifier.
      	(ivar_offset_ref): Tag IVAR refs with specific metadata.
      
      From-SVN: r276847
      Iain Sandoe committed
    • Add check for prefixed addresses. · d102b039
      2019-10-10  Michael Meissner  <meissner@linux.ibm.com>
      
      	* config/rs6000/rs6000.c (quad_address_p): Add check for prefixed
      	addresses.
      	(mem_operand_gpr): Add check for prefixed addresses.
      	(mem_operand_ds_form): Add check for prefixed addresses.
      	(rs6000_legitimate_offset_address_p): If we support prefixed
      	addresses, check for a 34-bit offset instead of 16-bit.
      	(rs6000_legitimate_address_p): Add check for prefixed addresses.
      	Do not allow load/store with update if the address is prefixed.
      	(rs6000_mode_dependent_address):  If we support prefixed
      	addresses, check for a 34-bit offset instead of 16-bit.
      
      From-SVN: r276846
      Michael Meissner committed