Commit Graph

173440 Commits

Author SHA1 Message Date
Pierre-Marie de Rodat
c38d4670d7 [Ada] Remove implicit anonymous access conversion in testcase
2019-12-12  Pierre-Marie de Rodat  <derodat@adacore.com>

gcc/testsuite/

	* gnat.dg/subp_inst_pkg.adb: Remove implicit anonymous access
	conversion.

From-SVN: r279276
2019-12-12 10:01:36 +00:00
Vineet Gupta
fbf8314b0a [ARC] generate signaling FDCMPF for hard float comparisons
PR 92846:
ARC gcc generates FDCMP instructions which raises Invalid operation for
signaling NaN only. This causes glibc iseqsig() primitives to fail (in
the current ongoing glibc port to ARC)

So break up the hard float compares into tw categories and for unordered
compares generate the FDCMPF instructions which raised exception for
either NaNs.

With this fix testsuite/gcc.dg/torture/pr52451.c passes for ARC.

Also no regressions for the glibc math testsuite, only 6 additional
passes for test*iseqsig

gcc/
xxxx-xx-xx  Vineet Gupta  <vgupta@synopsys.com>

	* config/arc/arc-modes.def (CC_FPUE): New Mode CC_FPUE which
	helps codegen generate exceptions even for quiet NaN.
	* config/arc/arc.c (arc_init_reg_tables): Handle New CC_FPUE mode.
	(get_arc_condition_code): Likewise.
	(arc_select_cc_mode): LT, LE, GT, GE to use the New CC_FPUE mode.
	* config/arc/arc.h (REVERSE_CONDITION): Handle New CC_FPUE mode.
	* config/arc/predicates.md (proper_comparison_operator): Likewise.
	* config/arc/fpu.md (cmpsf_fpu_trap): New Pattern for CC_FPUE.
	(cmpdf_fpu_trap): Likewise.

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>

From-SVN: r279274
2019-12-12 09:42:21 +01:00
Claudiu Zissulescu
48f13fb118 [ARC] Use hardware support for double-precision compare instructions.
Allow the compiler to use the double-precision compare instructions.

xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.md (iterator SDF): Check TARGET_FP_DP_BASE.
	(cstoredi4): Use TARGET_HARD_FLOAT.

From-SVN: r279273
2019-12-12 09:42:10 +01:00
François Dumont
5345a1906a libstdc++: Fix tr1 definition ambiguity in versioned namespace
* include/tr1/cctype: Add _GLIBCXX_BEGIN_VERSION_NAMESPACE and
	_GLIBCXX_END_VERSION_NAMESPACE.
	* include/tr1/cfenv: Likewise.
	* include/tr1/cinttypes: Likewise.
	* include/tr1/cstdint: Likewise.
	* include/tr1/cstdio: Likewise.
	* include/tr1/cstdlib: Likewise.
	* include/tr1/cwchar: Likewise.
	* include/tr1/cwctype: Likewise.

From-SVN: r279272
2019-12-12 07:23:34 +00:00
François Dumont
8bc1995989 libstdc++: Qualify isdigit call to fix versioned namespace build.
* src/c++11/random.cc: Include <cctype>.
	(random_devise::_M_init_pretr1): Qualify isdigit call.

From-SVN: r279271
2019-12-12 07:14:55 +00:00
GCC Administrator
d64515f565 Daily bump.
From-SVN: r279270
2019-12-12 00:16:21 +00:00
Jakub Jelinek
afb4cc6853 opts.c (default_options_table): Move -ftree-loop-distribute-patterns entry from -O3 or later section to -O2 or...
* opts.c (default_options_table): Move -ftree-loop-distribute-patterns
	entry from -O3 or later section to -O2 or later section.
	* doc/invoke.texi (-ftree-loop-distribute-patterns): Mention the
	option is enabled by default at -O2+ rather than just at -O3.

From-SVN: r279267
2019-12-12 00:59:14 +01:00
Jakub Jelinek
f8ac7d8f35 re PR fortran/92899 ([OpenMP] ICE in gfc_trans_omp_atomic, at fortran/trans-openmp.c:3769)
PR fortran/92899
	* trans-openmp.c (gfc_trans_omp_atomic): For GFC_OMP_ATOMIC_SWAP,
	do look through conversion on expr2 if any.

	* testsuite/libgomp.fortran/atomic1.f90: New test.

From-SVN: r279266
2019-12-12 00:58:04 +01:00
Jakub Jelinek
f5c03155aa re PR target/92723 (ICE in expand_shift_1, at expmed.c:2635)
PR target/92723
	* tree-vect-patterns.c (vect_recog_rotate_pattern): If dt is not
	vect_internal_def, use oprnd1 as is, without trying to cast it.
	Formatting fix.

	* gcc.dg/vect/pr92723.c: New test.

From-SVN: r279265
2019-12-12 00:49:30 +01:00
Matthias Klose
4f94386981 configure.ac: Factor out common cases for compare_exclusions.
2019-12-11  Matthias Klose  <doko@ubuntu.com>

        * configure.ac: Factor out common cases for compare_exclusions.
        * configure: Regenerate.

From-SVN: r279250
2019-12-11 20:59:35 +00:00
Martin Sebor
f7d86b5ca8 builtins.c (compute_objsize): Add an argument and set it to offset into destination.
gcc/ChangeLog:

	* builtins.c (compute_objsize): Add an argument and set it to offset
	into destination.
	* builtins.h (compute_objsize): Add an argument.
	* tree-object-size.c (addr_object_size): Add an argument and set it
	to offset into destination.
	(compute_builtin_object_size): Same.
	* tree-object-size.h (compute_builtin_object_size): Add an argument.
	* tree-ssa-strlen.c (get_addr_stridx): Add an argument and set it
	to offset into destination.
	(maybe_warn_overflow): New function.
	(handle_store): Call maybe_warn_overflow to issue warnings.

gcc/testsuite/ChangeLog:

	* c-c++-common/Wstringop-overflow-2.c: Adjust text of expected messages.
	* g++.dg/warn/Wstringop-overflow-3.C: Same.
	* gcc.dg/Wstringop-overflow-17.c: Same.

From-SVN: r279248
2019-12-11 12:50:43 -07:00
Steven G. Kargl
c7f5b4eddd re PR fortran/92897 ([Coarray] ICE in gfc_set_array_spec, at fortran/array.c:864)
2019-12-11 Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/92897
	* array.c (gfc_set_array_spec):  Remove invalid assert() triggered
	by invalid Fortran code.
 
2019-12-11 Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/92897
	* gfortran.dg/pr92897.f90: New test.

From-SVN: r279247
2019-12-11 19:28:57 +00:00
Jozef Lawrynowicz
a9046e9853 MSP430: Add -fno-exceptions multilib
ChangeLog:

2019-12-11  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

	* config-ml.in (msp430-*-*): Support --disable-no-exceptions configure
	flag.

gcc/ChangeLog:

2019-12-11  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

	* config/msp430/msp430.h (STARTFILE_SPEC) [!fexceptions]: Use
	crtbegin_no_eh.o if building for the C language.
	[fno-exceptions]: Use crtbegin_no_eh.o if building for any language
	except C.
	(ENDFILE_SPEC) [!fexceptions]: Use crtend_no_eh.o if building for 
	the C language.
	[fno-exceptions]: Use crtend_no_eh.o if building for any language
	except C.
	* config/msp430/t-msp430: Add -fno-exceptions multilib.
	* doc/install.texi: Document --disable-no-exceptions multilib configure
	option.
	* doc/sourcebuild.texi: Document exceptions_enabled effective target.

gcc/testsuite/ChangeLog:

2019-12-11  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

	* lib/gcc-dg.exp: Add dg-prune messages for when exception handling is
	disabled.
	* lib/target-supports.exp (check_effective_target_exceptions_enabled):
	New.

libgcc/ChangeLog:

2019-12-11  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

	* config.host: Add crt{begin,end}_no_eh.o to "extra_parts".
	* config.host (msp430*-*-elf): Add crt{begin,end}_no_eh.o to
	"extra_parts".

From-SVN: r279246
2019-12-11 19:19:50 +00:00
David Malcolm
368877a11b Introduce pretty_printer::clone vfunc
This patch provides a way to clone a pretty_printer.

This is needed so that we can capture text in a label_text and make
layout decisions based on it, using the policy of global_dc's printer,
whilst within a call to diagnostic_show_locus.  We can't print with
the pretty_printer itself within a call to diagnostic_show_locus since
it has partly-buffered content.

gcc/c-family/ChangeLog:
	* c-pretty-print.c (c_pretty_printer::clone): New vfunc
	implementation.
	* c-pretty-print.h (c_pretty_printer::clone): New vfunc decl.

gcc/cp/ChangeLog:
	* cxx-pretty-print.c (cxx_pretty_printer::clone): New vfunc
	implementation.
	* cxx-pretty-print.h (cxx_pretty_printer::clone): New vfunc decl.
	* error.c (cxx_format_postprocessor::clone): New vfunc.

gcc/ChangeLog:
	* pretty-print.c (pretty_printer::pretty_printer): New copy-ctor.
	(pretty_printer::clone): New vfunc implementation.
	* pretty-print.h (format_postprocessor::clone): New pure vfunc
	decl.
	(pretty_printer::pretty_printer): New copy-ctor decl.
	(pretty_printer::clone): New vfunc decl.

From-SVN: r279244
2019-12-11 19:06:39 +00:00
Jozef Lawrynowicz
34a53788fe libgcc: Declare __dso_handle only if DEFAULT_USE_CXA_ATEXIT is true
2019-12-11  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

	* crtstuff.c: Declare __dso_handle only if DEFAULT_USE_CXA_ATEXIT is
	true.

From-SVN: r279243
2019-12-11 18:59:38 +00:00
David Malcolm
0230c89710 function-tests.c: expose selftest::make_fndecl for use elsewhere
This is used by new selftests in the analyzer patch kit.

gcc/ChangeLog:
	* function-tests.c (selftest::make_fndecl): Make non-static.
	* selftest.h (selftest::make_fndecl): New decl.

From-SVN: r279242
2019-12-11 18:58:56 +00:00
Jakub Jelinek
3455115379 re PR c++/92869 (C++17 wrongly reports aggregate type as not-aggregate (when explicitly defaulted ctors are added))
PR c++/92869
	* class.c (finish_struct): For C++17 and earlier, check
	type_has_user_provided_or_explicit_constructor rather than
	TYPE_HAS_USER_CONSTRUCTOR whether to set CLASSTYPE_NON_AGGREGATE.

	* g++.dg/cpp0x/aggr3.C: New test.

From-SVN: r279241
2019-12-11 19:44:02 +01:00
Marek Polacek
c20f7e9971 PR c++/92878 - Parenthesized init of aggregates in new-expression.
Ville pointed out that our paren init of aggregates doesn't work for

  auto a = new A(1, 2, 3);

and I think it should:

A new-expression that creates an object of type T initializes that object
as follows:
...
-- Otherwise, the new-initializer is interpreted according to the
   initialization rules of [dcl.init] for direct-initialization.

so I think it follows that we should perform dcl.init#17.6.2.2.

This doesn't work with new[]; we have:
  error ("parenthesized initializer in array new");

	* init.c (build_new_1): Handle parenthesized initialization of
	aggregates in new-expression.

	* g++.dg/cpp2a/paren-init20.C: New test.

From-SVN: r279240
2019-12-11 18:40:55 +00:00
Jason Merrill
cc3b6728a2 * g++.dg/cpp0x/initlist-new2.C: Clarify comment.
From-SVN: r279239
2019-12-11 11:55:02 -05:00
Jason Merrill
7ae0172800 PR c++/92105 - decltype(decltype) error cascade.
The primary change here is to do the CPP_DECLTYPE replacement even when we
get an error, so we don't keep trying and giving the same parse error each
time.  We also commit to the tentative firewall parse more often, leading to
better diagnostics.

	* parser.c (cp_parser_decltype_expr): Don't tentative_firewall here.
	(cp_parser_decltype): Do it here.  Remember a non-tentative error.

From-SVN: r279237
2019-12-11 11:51:14 -05:00
Jason Merrill
0e5def817a PR c++/57082 - new X{} and private destructor.
build_new_1 already passes tf_no_cleanup to build_value_init, but in this
testcase we end up calling build_value_init by way of
build_special_member_call, so we need to pass it to that function as well.

	* init.c (build_new_1): Also pass tf_no_cleanup to
	build_special_member_call.

From-SVN: r279236
2019-12-11 11:51:09 -05:00
Jason Merrill
60e457d9ca PR c++/92774 - ICE with implicitly deleted operator<=>.
Missing error-recovery code.  While I was poking at this I also figured we
don't need to iterate over the members of a union.

	* method.c (comp_info::~comp_info): Factor out of...
	(build_comparison_op): Here.  Handle error return from build_new_op.

From-SVN: r279235
2019-12-11 11:51:05 -05:00
Thomas Schwinge
d6e8c01cff [PR92843] [OpenACC] Fix dynamic reference counting for structured 'REFCOUNT_INFINITY'
libgomp/
	PR libgomp/92843
	* oacc-mem.c (present_create_copy, delete_copyout): Fix dynamic
	reference counting for structured 'REFCOUNT_INFINITY'.  Add some
	assertions.
	(goacc_insert_pointer, goacc_remove_pointer): Adjust accordingly.
	* testsuite/libgomp.oacc-c-c++-common/pr92843-1.c: New file.
	* testsuite/libgomp.oacc-c-c++-common/clauses-1.c: Fix OpenACC.
	* testsuite/libgomp.oacc-c-c++-common/lib-82.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/nested-1.c: Likewise.

From-SVN: r279234
2019-12-11 17:49:27 +01:00
Thomas Schwinge
57963e3934 [OpenACC] Consolidate 'GOACC_enter_exit_data' and its helper functions in 'libgomp/oacc-mem.c'
libgomp/
	* oacc-parallel.c (find_pointer, GOACC_enter_exit_data): Move...
	* oacc-mem.c: ... here.
	(gomp_acc_insert_pointer, gomp_acc_remove_pointer): Rename to
	'goacc_insert_pointer', 'goacc_remove_pointer', and make 'static'.
	* libgomp.h (gomp_acc_insert_pointer, gomp_acc_remove_pointer):
	Remove.
	* libgomp_g.h: Update.

From-SVN: r279233
2019-12-11 17:49:17 +01:00
Thomas Schwinge
c5578b56b6 [OpenACC] Consolidate 'async'/'wait' code in 'libgomp/oacc-async.c'
libgomp/
	* oacc-parallel.c (GOACC_wait, goacc_wait): Move...
	* oacc-async.c: ... here.
	* oacc-int.h (goacc_wait): Declare.
	* libgomp_g.h: Update

From-SVN: r279232
2019-12-11 17:49:08 +01:00
Thomas Schwinge
3d1b5e710e [PR92854] Add 'libgomp.oacc-c-c++-common/acc_map_data-device_already-*.c', 'libgomp.oacc-c-c++-common/acc_map_data-host_already-*.c'
... to document the status quo.

	libgomp/
	PR libgomp/92854
	* testsuite/libgomp.oacc-c-c++-common/acc_map_data-device_already-1.c:
	New file.
	* testsuite/libgomp.oacc-c-c++-common/acc_map_data-device_already-2.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/acc_map_data-device_already-3.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/acc_map_data-host_already-1.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/acc_map_data-host_already-2.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/acc_map_data-host_already-3.c:
	Likewise.

From-SVN: r279231
2019-12-11 17:48:59 +01:00
Thomas Schwinge
5e93943822 [OpenACC] Initialize 'dynamic_refcount' whenever we initialize 'refcount'
Cases missed in r261813 "Update OpenACC data clause semantics to the 2.5
behavior".

	libgomp/
	* target.c (gomp_load_image_to_device, omp_target_associate_ptr):
	Initialize 'dynamic_refcount' whenever we initialize 'refcount'.

Co-Authored-By: Julian Brown <julian@codesourcery.com>

From-SVN: r279230
2019-12-11 17:48:44 +01:00
Jason Merrill
7c0a61870e PR c++/92859 - ADL and bit-field.
We also need unlowered_expr_type when considering associated types for ADL.

	* name-lookup.c: Use unlowered_expr_type.

From-SVN: r279229
2019-12-11 11:48:44 -05:00
Jason Merrill
3e7a892cc5 PR c++/92446 - deduction of class NTTP.
Another place we need to look through the VIEW_CONVERT_EXPR we add to make a
use of a class NTTP have const type.

	* pt.c (deducible_expression): Look through VIEW_CONVERT_EXPR.

From-SVN: r279228
2019-12-11 11:48:22 -05:00
Martin Sebor
0a22f99639 PR middle-end/79221 - missing -Wstringop-overflow= on a strcat overflow
gcc/testsuite/ChangeLog:
	* gcc.dg/Wstringop-overflow-26.c: New test.

From-SVN: r279227
2019-12-11 08:59:55 -07:00
Lewis Hyatt
ddd0fd173a Adds multibyte awareness to pretty-print.c
2019-12-11  Lewis Hyatt  <lhyatt@gmail.com>

	PR 91853
	* pretty-print.c (pp_quoted_string): Avoid hex-escaping valid
	multibyte input.  Fix off-by-one-bug printing the last byte before a
	hex-escaped output.
	(pp_character): Don't apply line wrapping in the middle of multibyte
	characters.
	(test_utf8): New test.
	(pretty_print_c_tests): Call the new test.

From-SVN: r279226
2019-12-11 14:52:31 +00:00
Andre Vieira
0dc4e690ce [testsuite][arm] Remove xfail for vect-epilogues test
gcc/testsuite/ChangeLog:
2019-12-11  Andre Vieira  <andre.simoesdiasvieira@arm.com>

	* gcc.dg/vect/vect-epilogues.c: Remove xfail for arm.

From-SVN: r279225
2019-12-11 14:21:48 +00:00
Jonathan Wakely
554c02a590 libstdc++: Fix whitepace in changelog
From-SVN: r279220
2019-12-11 13:19:18 +00:00
Richard Earnshaw
fd9058b6fc arm: Fix an incorrect warning when -mcpu=cortex-a55 is used with -mfloat-abi=soft
When a CPU such as cortex-a55 is used with the soft-float ABI variant,
the compiler is incorrectly issuing a warning about a mismatch between
the architecture (generated internally) and the CPU.  This is not
expected or intended.

The problem stems from the fact that we generate (correctly) an
architecture for a soft-float compilation, but then try to compare it
against the one recorded for the CPU.  Normally we strip out the
floating point information before doing that comparison, but we
currently only do that for the features that can be affected by the
-mfpu option.  For a soft-float environment we also need to strip out
any bits that depend on having floating-point present.

So this patch implements that and does a bit of housekeeping at the
same time:

- in arm-cpus.in it is not necessary for a CPU to specify both
  +dotprod and +simd in its architecture specification, since +dotprod
  implies +simd.

- I've refactored the ALL_SIMD fgroup in arm-cpus.in to create a new
  subgroup ALL_SIMD_EXTERNAL and containing the bits that were
  previously added directly to ALL_SIMD.  Similarly, I've added an
  ALL_FPU_EXTERNAL subgroup.

- in arm.c rename fpu_bitlist and all_fpubits to fpu_bitlist_internal
  and all_fpubits_internal for consistency with the fgroup bits which
  they contain.

	* config/arm/arm-cpus.in (ALL_SIMD_EXTERNAL): New fgroup.
	(ALL_SIMD): Use it.
	(ALL_FPU_EXTERNAL): New fgroup.
	(ALL_FP): Use it.
	(cortex-a55, cortex-a75, cortex-a76, cortex-a76ae): Remove redundant
	+simd from architecture specification.
	(cortex-a77, neoverse-n1, cortex-a75.cortex-a55): Likewise.
	* config/arm/arm.c (isa_all_fpubits, fpu_bitlist): Rename to ...
	(isa_all_fpubits_internal, fpu_bitlist_internal): ... these.
	(isa_all_fpbits): New bitmap.
	(arm_option_override): Initialize it.
	(arm_configure_build_target): If the target isa does not have any
	FP enabled, do not warn about mismatches in FP-related feature bits.

From-SVN: r279219
2019-12-11 11:59:04 +00:00
Tobias Burnus
93d9021987 libgomp – spelling fixes, incl. omp_lib.h.in
* omp_lib.h.in: Fix spelling of function declaration
        omp_get_cancell(l)ation.
        * libgomp.texi (acc_is_present, acc_async_test, acc_async_test_all):
        Fix typos.
        * env.c: Fix comment typos.
        * oacc-host.c: Likewise.
        * ordered.c: Likewise.
        * task.c: Likewise.
        * team.c: Likewise.
        * config/gcn/task.c: Likewise.
        * config/gcn/team.c: Likewise.
        * config/nvptx/task.c: Likewise.
        * config/nvptx/team.c: Likewise.
        * plugin/plugin-gcn.c: Likewise.
        * testsuite/libgomp.fortran/jacobi.f: Likewise.
        * testsuite/libgomp.hsa.c/tiling-2.c: Likewise.
        * testsuite/libgomp.oacc-c-c++-common/enter_exit-lib.c: Likewise.

From-SVN: r279218
2019-12-11 12:45:49 +01:00
Tobias Burnus
a0221aeebd [OpenMP/OpenACC/Fortran] Fix mapping of optional (present|absent) arguments
* testsuite/libgomp.oacc-fortran/optional-cache.f95: Add 'dg-do run'.
        * testsuite/libgomp.oacc-fortran/optional-reduction.f90: Remove
        unnecessary 'dg-additional-options "-w"'.

From-SVN: r279217
2019-12-11 11:40:11 +01:00
Stam Markianos-Wright
d5ffd47e9a Add ARM-specific Bfloat format support to middle-end
2019-12-11  Stam Markianos-Wright  <stam.markianos-wright@arm.com>

	* real.c (struct arm_bfloat_half_format,
	encode_arm_bfloat_half, decode_arm_bfloat_half): New.
	* real.h (arm_bfloat_half_format): New.

From-SVN: r279216
2019-12-11 10:27:30 +00:00
Frederik Harwath
e6c90dba73 Fix PR92901: Change test expectation for C++ in OpenACC test clause-locations.c
The columns of the clause locations that are reported for C and C++ are
different and hence we need separate test expectations for both languages.

2019-12-11  Frederik Harwath  <frederik@codesourcery.com>

	PR other/92901
	/gcc/testsuite/
	* c-c++-common/clause-locations.c: Adjust test expectation for C++.

From-SVN: r279215
2019-12-11 08:26:18 +00:00
Hongtao Liu
a8654147f1 Fix unrecognizable insn of pr92865.
gcc/
    PR target/92865
    * config/i386/i386-expand.c (ix86_valid_mask_cmp_mode): Enable
    integer mask cmov when available even with TARGET_XOP.

gcc/testsuite
    * gcc.target/i386/pr92865-1.c: New test.

From-SVN: r279214
2019-12-11 08:06:06 +00:00
Thomas Rodgers
2aae713bb4 Restore enable_if lost during original import of pstl
* include/pstl/glue_numeric_defs.h: Restore enable_if lost
        during original import of pstl.
        * include/pstl/glue_numeric_impl.h: Likewise.

From-SVN: r279212
2019-12-11 03:38:24 +00:00
GCC Administrator
03e5f213ee Daily bump.
From-SVN: r279210
2019-12-11 00:16:21 +00:00
Ian Lance Taylor
1e2b400bbb compiler: generate type descriptor for pointer to alias defined in another package
When a type descriptor is needed (for e.g. interface conversion),
    if the type is a pointer to a named type defined in another
    package, we don't generate the definition of the type descriptor
    because it is generated in the package where the type is defined.
    However, if the named type is an alias to an unnamed type, its
    descriptor is not generated in the other package, and we need to
    generate it.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/210787

From-SVN: r279207
2019-12-11 00:15:53 +00:00
Jonathan Wakely
cff87282f4 libstdc++: Correct noexcept-specifiers on span constructors
As discussed at https://github.com/cplusplus/draft/issues/3534 two
std::span constructors specify incorrect conditions for throwing
exceptions. This patch makes those constructors have correct
noexcept-specifiers that accurately reflect what can actually throw.

	(span(ContiguousIterator, Sentinel)): Add conditional noexcept.
	* include/std/span (span(ContiguousIterator, size_type)): Change
	noexcept to be unconditionally true.
	* testsuite/23_containers/span/nothrow_cons.cc: New test.

From-SVN: r279206
2019-12-10 23:50:26 +00:00
Jakub Jelinek
a6ae300f9a re PR tree-optimization/92891 (ice in decompose, at wide-int.h:984)
PR tree-optimization/92891
	* builtins.c (gimple_call_alloc_size): Convert size to sizetype
	before returning it.

	* gcc.c-torture/compile/pr92891.c: New test.

From-SVN: r279205
2019-12-11 00:49:40 +01:00
Vladimir Makarov
7436a1c675 re PR rtl-optimization/92796 (ICE in lra_assign, at lra-assigns.c:1646 on powerpc64le-linux-gnu)
2019-12-10  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/92796
	* lra-int.h (lra_risky_transformations_p): Rename to
	check_and_force_assignment_correctness_p.
	* lra-assigns.c: Ditto.
	(lra_assign): Reset check_and_force_assignment_correctness_p.
	* lra-constraints.c (lra_risky_transformations_p): Rename to
	check_and_force_assignment_correctness_p.
	(lra_constraints): Set up check_and_force_assignment_correctness_p
	only for the 1st sub-pass.
	* lra-eliminations.c (process_insn_for_elimination): Set up
	check_and_force_assignment_correctness_p if the insn chnaged its
	code.

2019-12-10  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/92796
	* gcc.target/powerpc/pr92796.c: New test.

From-SVN: r279204
2019-12-10 22:07:57 +00:00
Thomas Koenig
0cc063af32 re PR fortran/91643 (ICE in gfc_trans_create_temp_array, at fortran/trans-array.c:1265)
2019-12-10  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/91643
    * trans-array.c (gfc_conv_array_parameter): Do not repack
    an assumed rank dummy argument.

2019-12-10  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/91643
    * gfortran.dg/assumed_rank_18.f90: New test.

From-SVN: r279203
2019-12-10 21:59:09 +00:00
François Dumont
6004c17b4d libstdc++: Rework std::copy/copy_backward/move/move_backward/fill/fill_n algos
Enhance those algos overloads to generalize existing optimization for
__gnu_debug::_Safe_iterator w/o _GLIBCXX_DEBUG mode and for std::deque
 iterators.

Also extend __copy_move_a2 ostreambuf_iterator overloads to std::vector and
std::deque iterators.

	* include/bits/stl_algobase.h
	(__copy_move_a1<>(_II, _II, _OI)): New.
	(__copy_move_a1<>(_Deque_iterator<>, _Deque_iterator<>, _OI)): New.
	(__copy_move_a1<>(_Deque_iterator<>, _Deque_iterator<>,
	_Deque_iterator<>)): New.
	(__copy_move_a1<>(_II, _II, _Deque_iterator<>)): New.
	(__copy_move_a<>(_II, _II, _OI)): Adapt, call __copy_move_a1<>.
	(__copy_move_a<>(const _Safe_iterator<>&, const _Safe_iterator<>&,
	_OI)): New.
	(__copy_move_a<>(const _Safe_iterator<>&, const _Safe_iterator<>&,
	 const _Safe_iterator<>&)): New.
	(__copy_move_a<>(_II, _II, const _Safe_iterator<>&)): New.
	(copy, move): Adapt, call __copy_move_a.
	(__copy_move_backward_a1<>(_II, _II, _OI)): New,
	call __copy_move_backward_a2.
	(__copy_move_backward_a1<>(_Deque_iterator<>, _Deque_iterator<>, _OI)): New.
	(__copy_move_backward_a1<>(_Deque_iterator<>, _Deque_iterator<>,
	_Deque_iterator<>)): New.
	(__copy_move_backward_a1<>(_II, _II, _Deque_iterator<>)): New.
	(__copy_move_backward_a<>(_II, _II, _OI)): Adapt, call
	__copy_move_backward_a1<>.
	(__copy_move_backward_a<>(const _Safe_iterator<>&, const _Safe_iterator<>&,
	_OI)): New.
	(__copy_move_backward_a<>(const _Safe_iterator<>&, const _Safe_iterator<>&,
	 const _Safe_iterator<>&)): New.
	(__copy_move_backward_a<>(_II, _II, const _Safe_iterator<>&)): New.
	(copy_backward, move_backward): Adapt, call __copy_move_backward_a<>.
	(__fill_a): Rename into...
	(__fill_a1): ... this.
	(__fill_a1(__normal_iterator<>, __normal_iterator<>, const _Tp&)): New.
	(__fill_a1(const _Deque_iterator<>&, const _Deque_iterator<>&, _VTp)):
	New.
	(__fill_a(_FIte, _FIte, const _Tp&)): New, call __fill_a1.
	(__fill_a(const _Safe_iterator<>&, const _Safe_iterator<>&,
	const _Tp&)): New.
	(fill): Adapt, remove __niter_base usage.
	(__fill_n_a): Rename into...
	(__fill_n_a1): ...this.
	(__fill_n_a(const _Safe_iterator<>&, _Size, const _Tp&,
	input_iterator_tag)): New.
	(__fill_n_a(_OI, _Size, const _Tp&, output_iterator_tag)): New, call
	__fill_n_a1.
	(__fill_n_a(_OI, _Size, const _Tp&, random_access_iterator_tag)): New,
	call __fill_a.
	(__equal_aux): Rename into...
	(__equal_aux1): ...this.
	(__equal_aux1(_Deque_iterator<>, _Deque_iterator<>, _OI)): New.
	(__equal_aux1(_Deque_iterator<>, _Deque_iterator<>,
	_Deque_iterator<>)): New.
	(__equal_aux1(_II, _II, _Deque_iterator<>)): New.
	(__equal_aux(_II1, _II1, _II2)): New, call __equal_aux1.
	(__equal_aux(const _Safe_iterator<>&, const _Safe_iterator<>&,
	_OI)): New.
	(__equal_aux(const _Safe_iterator<>&, const _Safe_iterator<>&,
	 const _Safe_iterator<>&)): New.
	(__equal_aux(_II, _II, const _Safe_iterator<>&)): New.
	(equal(_II1, _II1, _II2)): Adapt.
	* include/bits/stl_deque.h
	(fill, copy, copy_backward, move, move_backward): Remove.
	* include/bits/deque.tcc: Include <bits/stl_algobase.h>.
	(__fill_a1): New.
	(__copy_move_dit): New.
	(__copy_move_a1): New, use latter.
	(__copy_move_a1(_II, _II, _Deque_iterator<>)): New.
	(__copy_move_backward_dit): New.
	(__copy_move_backward_a1): New, use latter.
	(__copy_move_backward_a1(_II, _II, _Deque_iterator<>)): New.
	(__equal_dit): New.
	(__equal_aux1): New, use latter.
	(__equal_aux1(_II, _II, _Deque_iterator<>)): New.
	* include/std/numeric (__is_random_access_iter): Move...
	* include/bits/stl_iterator_base_types.h (__is_random_access_iter): ...
	here. Provide pre-C++11 definition.
	* include/debug/debug.h (_Safe_iterator<>): New declaration.
	* include/debug/safe_iterator.h (_Safe_iterator<>::_M_can_advance): Add
	__strict parameter.
	* include/debug/safe_iterator.tcc: Include <bits/stl_algobase.h>.
	(_Safe_iterator<>::_M_can_advance): Adapt.
	(std::__copy_move_a, std::__copy_move_backward_a, __fill_a): New.
	(__fill_n_a, __equal_aux): New.
	* include/debug/stl_iterator.h (__niter_base): Remove.
	* include/debug/vector (__niter_base): Remove.
	* testsuite/performance/25_algorithms/copy_backward_deque_iterators.cc:
	Include <vector> and <list>. Add benches.
	* testsuite/performance/25_algorithms/copy_deque_iterators.cc: Likewise.
	* testsuite/performance/25_algorithms/equal_deque_iterators.cc: Likewise.
	* testsuite/25_algorithms/copy/debug/1_neg.cc: New.
	* testsuite/25_algorithms/copy/deque_iterators/2.cc: New.
	* testsuite/25_algorithms/copy/deque_iterators/31.cc: New.
	* testsuite/25_algorithms/copy/deque_iterators/32.cc: New.
	* testsuite/25_algorithms/copy/deque_iterators/33.cc: New.
	* testsuite/25_algorithms/copy/deque_iterators/41.cc: New.
	* testsuite/25_algorithms/copy/deque_iterators/42.cc: New.
	* testsuite/25_algorithms/copy/deque_iterators/43.cc: New.
	* testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc (test02):
	New.
	* testsuite/25_algorithms/copy_backward/deque_iterators/2.cc: New.
	* testsuite/25_algorithms/equal/deque_iterators/1.cc: New.
	* testsuite/25_algorithms/fill/deque_iterators/1.cc: New.
	* testsuite/25_algorithms/move/deque_iterators/2.cc: New.
	* testsuite/25_algorithms/move_backward/deque_iterators/2.cc: New.

From-SVN: r279201
2019-12-10 21:49:55 +00:00
Jakub Jelinek
5e72bcc1dd re PR rtl-optimization/92882 (ICE in regstat_bb_compute_calls_crossed, at regstat.c:327 since r279124)
PR rtl-optimization/92882
	* regstat.c (regstat_bb_compute_calls_crossed): Don't check
	INSN_UID against DF_INSN_SIZE or use DF_INSN_INFO_GET unless
	NONDEBUG_INSN_P.

	* gfortran.dg/pr92882.f: New test.

From-SVN: r279196
2019-12-10 22:05:59 +01:00
Jakub Jelinek
27f418b8ec re PR ipa/92883 (ICE in compare_values_warnv)
PR ipa/92883
	* ipa-cp.c (propagate_vr_across_jump_function): Pass jvr rather
	than *jfunc->m_vr to intersect.  Formatting fix.

	* gcc.dg/ipa/pr92883.c: New test.

From-SVN: r279194
2019-12-10 22:04:57 +01:00
Jakub Jelinek
6b24e342cb re PR middle-end/92825 (Unnecesary stack protection in Firefox's LightPixel.)
PR middle-end/92825
	* cfgexpand.c (add_stack_protection_conflicts): Change return type
	from void to bool, return true if at least one stack_vars[i].decl
	is addressable.
	(record_or_union_type_has_array_p, stack_protect_decl_p): Remove.
	(expand_used_vars): Don't call stack_protect_decl_p, instead for
	-fstack-protector-strong set gen_stack_protect_signal to true
	if add_stack_protection_conflicts returned true.  Formatting fixes.
	* doc/invoke.texi (-fstack-protector-strong): Clarify that optimized
	out variables or variables not living on the stack don't count.
	(-fstack-protector): Likewise.  Clarify it affects >= 8 byte arrays
	rather than > 8 byte.

	* gcc.target/i386/pr92825.c: New test.

From-SVN: r279193
2019-12-10 22:04:08 +01:00