Commit Graph

172148 Commits

Author SHA1 Message Date
Marek Polacek
c6c3f55699 PR c++/92049 - extra error with -fchecking=2.
The concepts merge brought this bit

@@ -26326,9 +26559,9 @@ build_non_dependent_expr (tree expr)
     unexpected recursive instantiations.  */
       && !parsing_nsdmi ()
       /* Don't do this during concept expansion either and for
-         the same reason.  */
-      && !expanding_concept ())
-    fold_non_dependent_expr (expr, tf_none);
+    the same reason.  */
+      && !parsing_constraint_expression_p ())
+    fold_non_dependent_expr (expr);

   STRIP_ANY_LOCATION_WRAPPER (expr);

(which I'm not finding in the ChangeLog).  Dropping tf_none means that
fold_non_dependent_expr will use tf_warning_or_error by default, and in
this test that causes an error:

  template<bool> struct cond;

  template<int> struct S { 
    void f(int i) {
      cond<__builtin_constant_p(i)>();
    }
  };

  S<1> s;

where it complains that cond<false> is incomplete.  Which it is, but we're
not actually instantiating the function f, so issuing an error seems
overzealous (though not wrong), and it breaks a bunch of tests.  This patch
brings that tf_none back.  We will still complain if we do instantiate f.

	* pt.c (build_non_dependent_expr): Call fold_non_dependent_expr
	with tf_none.

	* g++.dg/template/builtin2.C: New test.

From-SVN: r276906
2019-10-11 20:44:02 +00:00
Paolo Carlini
436103a098 typeck.c (cp_build_binary_op): Do not handle RROTATE_EXPR and LROTATE_EXPR.
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
2019-10-11 19:18:13 +00:00
Jason Merrill
e0365bd388 Preserve the location of explicitly defaulted functions.
* decl2.c (mark_used): Don't clobber DECL_SOURCE_LOCATION on
	explicitly defaulted functions.
	* method.c (synthesize_method): Likewise.

From-SVN: r276902
2019-10-11 14:55:14 -04:00
Jim Wilson
c6b6fde0bc Extend subst to simplify CONST_INT inside SIGN_EXTEND.
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
2019-10-11 11:41:35 -07:00
Steven G. Kargl
e8c78b3a0c re PR fortran/91649 (ICE in gfc_resolve_findloc, at fortran/iresolve.c:1827)
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
2019-10-11 18:05:35 +00:00
Steven G. Kargl
95040e7e20 re PR fortran/91715 (ICE in resolve_fntype, at fortran/resolve.c:16884)
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
2019-10-11 17:59:09 +00:00
Steven G. Kargl
405e87e825 re PR fortran/92018 (ICE in gfc_conv_constant_to_tree, at fortran/trans-const.c:370)
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
2019-10-11 17:52:27 +00:00
Steven G. Kargl
c988c699fa re PR fortran/92019 (ICE in find_inquiry_ref, at expr.c:1790)
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
2019-10-11 17:41:29 +00:00
Joseph Myers
fe2bc27cdb Support _Decimal* keywords for C2x.
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
2019-10-11 18:32:48 +01:00
Joseph Myers
6334c1f49f * fi.po: Update.
From-SVN: r276894
2019-10-11 18:23:50 +01:00
Jonathan Wakely
cfc219ae68 Implement <concepts> header for C++20
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
2019-10-11 16:53:52 +01:00
Jonathan Wakely
02f6fdff65 Use __is_same_as for std::is_same and std::is_same_v
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
2019-10-11 16:53:44 +01:00
Jonathan Wakely
07758d90c7 PR libstdc++/92059 fix several bugs in tr2::dynamic_bitset
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
2019-10-11 16:29:55 +01:00
Jonathan Wakely
2bf2dacb35 Avoid warnings in <charconv>
* include/bits/charconv.h (__to_chars_len): Avoid -Wsign-compare
	warnings.

From-SVN: r276889
2019-10-11 16:29:50 +01:00
Richard Sandiford
8b27c9052b Relax store_bit_field call in store_expr
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
2019-10-11 14:44:13 +00:00
Wilco Dijkstra
3635c2bf7c [ARM] Tweak HONOR_REG_ALLOC_ORDER
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
2019-10-11 14:23:28 +00:00
Bernd Edlinger
bd01f4da3e tree-vect-loop.c (vect_analyze_loop_operations): Adjust call to vectorizable_live_operation.
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
2019-10-11 14:17:32 +00:00
Tobias Burnus
643d443665 Fortran] PR 92050 - fix ICE with -fcheck=all
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
2019-10-11 15:41:13 +02:00
Richard Biener
1284e2b104 re PR tree-optimization/90883 (Generated code is worse if returned struct is unnamed)
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
2019-10-11 13:10:15 +00:00
Jan Hubicka
e5207f1a65 ggc-page.c (release_pages): Output statistics when !quiet_flag.
* 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
2019-10-11 11:53:40 +00:00
Richard Biener
9d99596e32 re PR tree-optimization/92066 (Many vectorization tests FAIL)
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
2019-10-11 10:45:48 +00:00
Tobias Burnus
08c14aaaab [OpenMP,Fortran] Fix several OpenMP use_device_addr/map/update errors
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
2019-10-11 11:17:49 +02:00
Eric Botcazou
b67e2ad80d decl.c (elaborate_reference_1): Specifically deal with pointer displacement.
* 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
2019-10-11 09:17:23 +00:00
Eric Botcazou
75a582cd9f 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
2019-10-11 09:09:40 +00:00
Ilya Leoshkevich
76dcb70dab S/390: Test signaling FP comparison instructions
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
2019-10-11 09:03:00 +00:00
Ilya Leoshkevich
d0a0cacaba S/390: Use signaling FP comparison instructions
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
2019-10-11 09:00:26 +00:00
Jan Hubicka
1fcf52a6a2 Do not allocate ggc during streaming.
* 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
2019-10-11 08:59:16 +00:00
Eric Botcazou
05626b02e8 decl.c (annotate_value): Really test the sign of the value when deciding to build a NEGATE_EXPR.
* 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
2019-10-11 08:57:18 +00:00
Eric Botcazou
43b60e5783 decl.c (Gigi_Equivalent_Type): New case.
* 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
2019-10-11 08:33:03 +00:00
Eric Botcazou
104099b897 decl.c (gnat_to_gnu_entity): New case to deal with the definition of named numbers.
* 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
2019-10-11 08:19:03 +00:00
Pierre-Marie de Rodat
848830dcf7 [Ada] Repair ChangeLog entries
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
2019-10-11 07:56:41 +00:00
Jakub Jelinek
1a37b6d9a7 re PR c++/91987 (-fstrict-eval-order issues)
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
2019-10-11 09:36:07 +02:00
Kewen Lin
1e99e6fe6b vec_promote_demote cost to 1 for non-Power7 VSX architectures
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
2019-10-11 06:01:30 +00:00
GCC Administrator
192eaafbaa Daily bump.
From-SVN: r276858
2019-10-11 00:16:43 +00:00
Joseph Myers
27dfdc0f92 Update DFP macros in float.h for C2x and TS 18661-2.
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
2019-10-10 23:54:33 +01:00
Xiong Hu Luo
8faf3ed953 re PR middle-end/26241 (None of the IPA passes are documented in passes.texi)
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
2019-10-10 15:44:26 -04:00
Jan Hubicka
6488759f40 ipa-reference.c: Do not include splay-tree.h
* 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
2019-10-10 19:31:58 +00:00
Jan Hubicka
cd8589ab05 * ipa-reference.c (propagate): Fix releasing of IPA summaries.
From-SVN: r276849
2019-10-10 19:20:01 +00:00
Iain Sandoe
3a73cd7c9d [Darwin, machopic 4/n] Arrange to indirect IVARs when needed.
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
2019-10-10 19:14:07 +00:00
Iain Sandoe
eb870e5e5e [Objective-C, NeXT ABI] Identify V2 IVAR refs by metadata.
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
2019-10-10 19:04:33 +00:00
Michael Meissner
d102b03946 Add check for prefixed addresses.
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
2019-10-10 18:54:50 +00:00
David Malcolm
b4c7ca2ef3 Documentation hyperlinks for [-Wname-of-option] (PR 87488)
This patch uses the support for pretty-printing escaped URLs added in
the previous patch (PR 87488) so that in a sufficiently capable terminal
the [-Wname-of-option] emitted at the end of each diagnostic becomes a
hyperlink to the documentation for that option on the GCC website.

I've tested it with Fedora 30's GNOME Terminal (3.32.2 with VTE 0.56.3);
the option text is printed with a dotted underline, hovering shows the
URL, and on right-clicking it offers menu items to visit/copy the URL.

gcc/ChangeLog:
	PR 87488
	* Makefile.in (CFLAGS-opts.o): Pass in DOCUMENTATION_ROOT_URL via
	-D.
	* configure.ac (--with-documentation-root-url): New option.
	* configure: Regenerate.
	* diagnostic-format-json.cc (json_end_diagnostic): If there is an
	option URL, add it as a new string field of the diagnostic option.
	* diagnostic.c (diagnostic_initialize): Initialize get_option_url.
	(print_option_information): If get_option_url is non-NULL, call
	it, and if the result is non-NULL, potentially emit an escape
	sequence to markup the option text with the resulting URL.
	* diagnostic.h (diagnostic_context::get_option_url): New callback.
	* doc/invoke.texi (-fdiagnostics-format=): Add "option_url" to
	example of JSON output.
	* opts-diagnostic.h (get_option_url): New decl.
	* opts.c (get_option_url): New function.
	* toplev.c (general_init): Initialize the get_option_url callback.

gcc/testsuite/ChangeLog:
	PR 87488
	* c-c++-common/diagnostic-format-json-2.c: Expect an "option_url"
	field.
	* c-c++-common/diagnostic-format-json-3.c: Likewise.
	* gfortran.dg/diagnostic-format-json-2.F90: Likewise.
	* gfortran.dg/diagnostic-format-json-3.F90: Likewise.
	* jit.dg/test-error-array-bounds.c (create_code): Ensure that
	error messages don't contain escaped URLs.

From-SVN: r276843
2019-10-10 17:03:46 +00:00
Ilya Leoshkevich
3245582f7d [PATCH 1/3] S/390: Do not use signaling vector comparisons on z13
z13 supports only non-signaling vector comparisons.  This means we
cannot vectorize LT, LE, GT, GE and LTGT when compiling for z13.  Notify
middle-end about this by using more restrictive operator predicate in
vcond<V_HW:mode><V_HW2:mode>.

gcc/ChangeLog:

2019-10-10  Ilya Leoshkevich  <iii@linux.ibm.com>

	PR target/77918
	* config/s390/vector.md (vcond_comparison_operator): New
	predicate.
	(vcond<V_HW:mode><V_HW2:mode>): Use vcond_comparison_operator.

From-SVN: r276842
2019-10-10 17:00:29 +00:00
David Malcolm
d260823576 pretty-print: support URL escape sequences (PR 87488)
https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda
describes an emerging standard for embedding URLs in escape sequences
for marking up text output.  This is supported e.g. by recent releases
of GNOME Terminal.

This patch adds support to our pretty-printing framework for emitting
URLs.

A followup patch uses this to add URLs to the pertinent documentation
for the output of -fdiagnostics-show-option.

gcc/ChangeLog:
	PR 87488
	* common.opt (fdiagnostics-urls=): New option.
	(diagnostic-url.h): Add SourceInclude.
	(diagnostic_url_rule): New enum.
	* diagnostic-color.c: Include "diagnostic-url.h".
	(diagnostic_urls_enabled_p): New function.
	* diagnostic-url.h: New file.
	* diagnostic.c: Include "diagnostic-url.h".
	(diagnostic_urls_init): New function.
	* diagnostic.h (diagnostic_urls_init): New decl.
	* doc/invoke.texi (Diagnostic Message Formatting Options): Add
	-fdiagnostics-urls to the list.
	(-fdiagnostics-urls): New option.
	* gcc.c (driver_handle_option): Handle OPT_fdiagnostics_urls_.
	(driver::global_initializations): Call diagnostic_urls_init.
	* opts-global.c (init_options_once): Likewise.
	* opts.c (common_handle_option): Handle OPT_fdiagnostics_urls_.
	* pretty-print.c (pretty_printer::pretty_printer): Initialize
	show_urls.
	(pp_begin_url): New function.
	(pp_end_url): New function.
	(selftest::test_urls): New selftest.
	(selftest::pretty_print_c_tests): Call it.
	* pretty-print.h (pretty_printer::show_urls): New field.
	(pp_begin_url): New decl.
	(pp_end_url): New decl.

gcc/testsuite/ChangeLog:
	PR 87488
	* lib/prune.exp (TEST_ALWAYS_FLAGS): Add -fdiagnostics-urls=never.

From-SVN: r276841
2019-10-10 16:57:30 +00:00
Jonathan Wakely
9cfc400f3f PR libstdc++/91057 fix bootstrap failure on powerpc
PR libstdc++/91057
	* src/c++98/locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]
	(find_ldbl_sync_facet): Fix parameter type and missing return.

From-SVN: r276840
2019-10-10 17:16:17 +01:00
Uros Bizjak
e5da0a1d01 re PR target/92022 (ICE in alpha_handle_trap_shadows, at config/alpha/alpha.c:8847)
PR target/92022
	* config/alpha/alpha.c (alpha_handle_trap_shadows): Skip DEBUG_INSN.

testsuite/ChangeLog:

	PR target/92022
	* g++.dg/pr92022.C: New test.

From-SVN: r276839
2019-10-10 18:11:10 +02:00
Gary Dismukes
7e536bfd06 [Ada] Handling up-level references in loops within library-level declarations
2019-10-10  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

	* exp_ch7.adb (Check_Unnesting_In_Decls_Or_Stmts): When
	encountering a loop at the top level of a package declaration
	list (that is, within the declarations of a package spec or
	body) that has nested subprograms, call Unnest_Loop to create a
	new library-level procedure that will contain the loop, to allow
	for proper handling of up-level references from within nested
	subprograms, such as to loop parameters.
	(Unnest_Loop): New procedure that takes a loop statement and
	creates a new procedure body to enclose the loop statement,
	along with generating a call to the procedure.

From-SVN: r276836
2019-10-10 15:25:36 +00:00
Arnaud Charlet
ebeabe0454 [Ada] Ensure constructor is a C++ constructor
2019-10-10  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* freeze.adb (Freeze_Subprogram): Ensure constructor is a C++
	constructor.

From-SVN: r276835
2019-10-10 15:25:32 +00:00
Gary Dismukes
96dd5bb6b7 [Ada] Add pragma Preelaborable_Initialization to Stream_IO.File_Type
2019-10-10  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

	* libgnat/a-ststio.ads (File_Type): Apply pragma
	Preelaborable_Initialization to the type.

From-SVN: r276834
2019-10-10 15:25:27 +00:00
Yannick Moy
5913d1b7c0 [Ada] Fix inlining of subprograms with deep param/result in GNATprove
2019-10-10  Yannick Moy  <moy@adacore.com>

gcc/ada/

	* inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Do not peek
	under private types whose completion is SPARK_Mode Off.

From-SVN: r276833
2019-10-10 15:25:22 +00:00