Commit Graph

168893 Commits

Author SHA1 Message Date
Jakub Jelinek
6992d6fbf2 re PR tree-optimization/90671 (ICE on valid code at -Os and above with -g enabled in gsi_split_seq_after, at gimple-iterator.c:345)
PR tree-optimization/90671
	* tree-ssa-threadupdate.c (ssa_create_duplicates): If
	template_block used to be empty on the first call, don't use
	gsi_split_seq_after and gsi_insert_seq_after, but remember whole
	seq with bb_seq and set it with set_bb_seq.

	* gcc.dg/torture/pr90671.c: New test.

From-SVN: r271802
2019-05-31 09:53:48 +02:00
Iain Sandoe
0eee8eaa83 c++, testsuite - require alias support for a test.
The test for pr84497 uses a facility that requires alias support from
the target, and therefore fails on targets without.  Add a suitable 
dg-require statement.

2019-05-31  Iain Sandoe  <iain@sandoe.co.uk>

	* g++.dg/cpp0x/pr84497.C: Require alias support.

From-SVN: r271801
2019-05-31 07:23:14 +00:00
Iain Sandoe
4ef2ef0c03 Darwin, x86, testsuite - adjust tests for Darwin's align syntax.
Darwin has a .align taking a power of 2 by default, so that some
tests expecting a byte count are failing, fixed thus.

gcc/testsuite/

2019-05-31  Iain Sandoe  <iain@sandoe.co.uk>

	* gcc.target/i386/falign-functions-3.c: Adjust align syntax
	and label for Darwin.
	* gcc.target/i386/attr-aligned-2.c: Adjust align syntax for
	Darwin.

From-SVN: r271800
2019-05-31 07:17:11 +00:00
Iain Sandoe
eb11a55268 Darwin, x86 - We have .p2align, so declare its use.
.p2align support is present in all x86 assemblers on released
Darwin systems.

gcc/

2019-05-29  Iain Sandoe  <iain@sandoe.co.uk>

	* config/i386/darwin.h (ASM_OUTPUT_MAX_SKIP_ALIGN): New.

From-SVN: r271799
2019-05-31 07:13:46 +00:00
Bill Schmidt
a1842c37af predicates.md (pcrel_address): New define_predicate.
2019-05-30  Bill Schmidt  <wschmidt@linux.ibm.com>
	    Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/predicates.md (pcrel_address): New define_predicate.
	(prefixed_mem_operand): Likewise.
	(non_prefixed_mem_operand): Likewise.
	* config/rs6000/rs6000-protos.h (rs6000_prefixed_address): New
	prototype.
	* config/rs6000/rs6000.c (print_operand_address): Handle
	PC-relative addresses.
	(mode_supports_prefixed_address_p): New function.
	(rs6000_prefixed_address): New function.
	* config/rs6000/rs6000.h (SYMBOL_FLAG_PCREL): New #define.
	(SYMBOL_REF_PCREL_P): Likewise.


Co-Authored-By: Michael Meissner <meissner@linux.ibm.com>

From-SVN: r271798
2019-05-31 00:38:35 +00:00
Joseph Myers
47a665af3b * fi.po, sv.po: Update.
From-SVN: r271796
2019-05-31 01:28:14 +01:00
GCC Administrator
17c5c4c70b Daily bump.
From-SVN: r271795
2019-05-31 00:16:16 +00:00
Jakub Jelinek
8221c30b09 gimplify.c (enum gimplify_omp_var_data): Add GOVD_CONDTEMP.
* gimplify.c (enum gimplify_omp_var_data): Add GOVD_CONDTEMP.
	(gimplify_adjust_omp_clauses_1): Handle GOVD_CONDTEMP.
	(gimplify_omp_for): If worksharing loop with lastprivate conditional
	is nested inside of parallel region, add _condtemp_ clause to both.
	* tree-nested.c (convert_nonlocal_omp_clauses,
	convert_local_omp_clauses): Ignore OMP_CLAUSE__CONDTEMP_ instead of
	assertion failure.
	* omp-general.h (struct omp_for_data): Add have_pointer_condtemp
	member.
	* omp-general.c (omp_extract_for_data): Compute it.
	* omp-low.c (scan_sharing_clauses): Handle OMP_CLAUSE__CONDTEMP_.
	(lower_rec_input_clauses): Likewise.
	(lower_lastprivate_conditional_clauses): If OMP_CLAUSE__CONDTEMP_
	clause is already present, just add one further one after it.
	(lower_lastprivate_clauses): Handle cond_ptr with array type.
	(lower_send_shared_vars): Clear _condtemp_ vars.
	(lower_omp_1) <case GIMPLE_ASSIGN>: Handle target data like critical
	or section or taskgroup.
	* omp-expand.c (determine_parallel_type): Disallow combining only if
	first OMP_CLAUSE__CONDTEMP_ has pointer type.  Disallow combining
	of parallel sections if OMP_CLAUSE__CONDTEMP_ is present.
	(expand_omp_for_generic, expand_omp_for_static_nochunk,
	expand_omp_for_static_chunk, expand_omp_for): Use
	fd->have_pointer_condtemp instead of fd->lastprivate_conditional to
	determine if a special set of API routines are needed and if condtemp
	needs to be initialized, while always initialize cond_var if
	fd->lastprivate_conditional is non-zero.

From-SVN: r271791
2019-05-30 23:19:39 +02:00
Jim Wilson
00a0e1f5a3 Fix RISC-V build failure for go language.
gcc/go/
	* go-gcc.cc (Gcc_backend::Gcc_backend): Add BUILT_IN_ATOMIC_FETCH_AND_1
	and BUILT_IN_ATOMIC_FETCH_OR_1.

From-SVN: r271790
2019-05-30 13:47:12 -07:00
Nina Dinka Ranns
046af809f3 LWG2788 basic_string spurious use of a default constructible allocator
This only change the cxx11 basic_string, because COW strings don't
correctly propagate allocators anyway.

2019-05-30  Nina Dinka Ranns  <dinka.ranns@gmail.com>

	LWG2788 basic_string spurious use of a default constructible allocator
	* include/bits/basic_string.tcc [_GLIBCXX_USE_CXX11_ABI]
	(basic_string::_M_replace_dispatch): Construct temporary string with
	the current allocator.
	* testsuite/21_strings/basic_string/allocator/char/lwg2788.cc: New.
	* testsuite/21_strings/basic_string/allocator/wchar_t/lwg2788.cc: New.

From-SVN: r271789
2019-05-30 20:48:48 +01:00
Marek Polacek
608f8e107d * cp-tree.h (TYPE_HAS_NONTRIVIAL_DESTRUCTOR): Fix a typo.
From-SVN: r271788
2019-05-30 18:40:17 +00:00
Bill Schmidt
ed383d79ee constraints.md (eI): New constraint.
2019-05-30  Bill Schmidt  <wschmidt@linux.ibm.com>
	    Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/constraints.md (eI): New constraint.
	* config/rs6000/predicates.md (cint34_operand): New predicate.
	* config/rs6000/rs6000.h (SIGNED_16BIT_OFFSET_P): New #define.
	(SIGNED_34BIT_OFFSET_P): Likewise.
	* doc/md.texi (eI): Document constraint.


Co-Authored-By: Michael Meissner <meissner@linux.ibm.com>

From-SVN: r271787
2019-05-30 18:13:06 +00:00
Thomas Koenig
93f096795b gfc-internals.texi (Translating to GENERIC): New chapter.
2019-05-30  Thomas Koenig  <tkoenig@gcc.gnu.org>

    * gfc-internals.texi (Translating to GENERIC): New chapter.

From-SVN: r271786
2019-05-30 17:49:31 +00:00
Sylvia Taylor
3db85990db [aarch64]: add support for fabd in sve
This patch adds support in SVE to combine:
- fsub and fabs into fabd

fsub    z0.s, z0.s, z1.s
fabs    z0.s, p1/m, z0.s
---
fabd    z0.s, p1/m, z0.s, z1.s

2019-05-30  Sylvia Taylor  <sylvia.taylor@arm.com>

gcc/
	* config/aarch64/aarch64-sve.md (*fabd<mode>3): New.

gcc/testsuite/
	* gcc.target/aarch64/sve/fabd_1.c: New.

From-SVN: r271785
2019-05-30 17:36:52 +00:00
Ian Lance Taylor
c9c41a6b1b compiler: intrinsify sync/atomic functions
Let the Go frontend recognize sync/atomic functions and turn them
    into intrinsics.
    
    Also make sure not to intrinsify calls in go or defer statements.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/178937

From-SVN: r271784
2019-05-30 17:26:46 +00:00
Jakub Jelinek
d05b516e53 re PR c++/90598 (Return type of explicit destructor call wrong)
PR c++/90598
	* tree.c (lvalue_kind): Return clk_none for expressions with
	with VOID_TYPE_P.

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

From-SVN: r271783
2019-05-30 19:23:32 +02:00
Jonathan Wakely
01b3b9e39f Update libstdc++ documentation for Support and Diagnostics clauses
* doc/xml/manual/diagnostics.xml: Update list of headers that define
	exception classes.
	* doc/xml/manual/support.xml: Rewrite advice around NULL. Rewrite
	section about new/delete overloads. Improve section on verbose
	terminate handler.
	* doc/html/*: Regenerate.

From-SVN: r271782
2019-05-30 16:47:32 +01:00
Bill Schmidt
30f78ec756 rs6000-cpus.def (OTHER_FUSION_MASKS): New #define.
2019-05-30  Bill Schmidt  <wschmidt@linux.ibm.com>
	    Michael Meissner  <meissner@linux.ibm.com>

	* rs6000-cpus.def (OTHER_FUSION_MASKS): New #define.
	(ISA_3_0_MASKS_SERVER): Mask off OTHER_FUSION_MASKS.
	(ISA_3_0_MASKS_IEEE): Remove OPTION_MASK_DIRECT_MOVE.
	(ISA_FUTURE_MASKS_SERVER): Add OPTION_MASK_PREFIXED_ADDR.
	(OTHER_FUTURE_MASKS): Likewise.
	(POWERPC_MASKS): Likewise.
	* rs6000.c (rs6000_option_override_internal): Error if -mpcrel is
	specified without -mprefixed-addr or -mcpu=future.  Error if
	-mprefixed-addr is specified without -mcpu=future.
	(rs6000_opt_masks): Add entry for prefixed-addr.
	* rs6000.opt (mprefixed-addr): New option.


Co-Authored-By: Michael Meissner <meissner@linux.ibm.com>

From-SVN: r271781
2019-05-30 15:17:40 +00:00
Sam Tebbs
0e2e15abd0 [PATCH][GCC][AARCH64] Fix libstdc++ build failure after r271735
gcc/ChangeLog
	* aarch64/aarch64.c (aarch64_post_cfi_startproc): Add
	cfun->is_thunk check.

From-SVN: r271780
2019-05-30 12:26:14 +00:00
Marek Polacek
d4ecfa565c * lang.opt (ftail-call-workaround): Fix a typo.
From-SVN: r271777
2019-05-30 11:44:40 +00:00
Jonathan Wakely
62971f4644 Update C++20 status table
The status of P1353R0 was "Partial" because we don't define the
__cpp_lib_three_way_comparison macro, but that's because we don't
support the feature. So the paper can be marked as done.

	* doc/xml/manual/status_cxx2020.xml: Add feature-test macro for
	P0811R3. Change status of P1353R0.
	* doc/html/*: Regenerate.

From-SVN: r271774
2019-05-30 11:31:54 +01:00
Jonathan Wakely
37ad0fc942 Update documentation of implementation-defined library features
* doc/xml/manual/status_cxx2011.xml: Use <variablelist> for
	documentation of implementation-defined types for [thread.req.native].
	* doc/xml/manual/status_cxx2017.xml: Update documentation of
	implementation-defined strings for [variant.bad.access]. Fix typo in
	documentation of implementation-defined support for [fs.conform.9945].
	* doc/html/*: Regenerate.

From-SVN: r271773
2019-05-30 11:14:06 +01:00
Jakub Jelinek
02fac2442e tree-predcom.c (is_inv_store_elimination_chain): Fix a typo - lenght to length.
* tree-predcom.c (is_inv_store_elimination_chain): Fix a typo - lenght
	to length.

	* lang.opt (ftail-call-workaround=): Fix a typo - lenghts to lengths.

From-SVN: r271770
2019-05-30 11:33:20 +02:00
Rainer Orth
a7155c2e0b Generalize getconf _NPROCESSORS_ONLN
libgomp:
	* configure.ac: Call AX_COUNT_CPUS.
	Substitute CPU_COUNT.
	* testsuite/Makefile.am (check-am): Use CPU_COUNT as processor
	count fallback.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* Makefile.in, testsuite/Makefile.in: Regenerate.

	config:
	* ax_count_cpus.m4: New file.

From-SVN: r271769
2019-05-30 09:06:48 +00:00
Iain Sandoe
b8148c42da testsuite,x86 - require native TLS for two tests that use it.
gcc/testsuite/

2019-05-30  Iain Sandoe  <iain@sandoe.co.uk>

	* gcc.target/i386/pr86257.c: Require native TLS support.
	* gcc.target/i386/stack-prot-sym.c: Likewise.

From-SVN: r271768
2019-05-30 08:43:19 +00:00
Martin Liska
7c83619cd6 gdbinit: add a new command and fix one
2019-05-30  Martin Liska  <mliska@suse.cz>

	* gdbinit.in: Fix 'ptc' command.  Add trt
	that prints TREE_TYPE($).

From-SVN: r271763
2019-05-30 07:50:39 +00:00
Paolo Carlini
7797a62244 decl.c (grokdeclarator): Use declarator->id_loc in five error_at calls.
/cp
2019-05-31  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl.c (grokdeclarator): Use declarator->id_loc in five
	error_at calls.

/testsuite
2019-05-31  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.dg/cpp0x/alias-decl-18.C: Test location too.
	* g++.dg/cpp0x/udlit-nofunc-neg.C: Likewise.
	* g++.dg/parse/crash59.C: Likewise.
	* g++.dg/parse/error38.C: Likewise.
	* g++.dg/parse/error39.C: Likewise.
	* g++.dg/template/crash31.C: Likewise.
	* g++.dg/template/operator8.C: Likewise.
	* g++.dg/template/operator9.C: Likewise.

From-SVN: r271762
2019-05-30 07:09:41 +00:00
Ian Lance Taylor
979ca9cc9e re PR go/90669 (go/gofrontend/types.cc:2805 contains range-based ‘for’ loops which are not C++98)
PR go/90669
    compiler: remove range-based 'for' loop
    
    Fix for GCC PR/90669: remove range-based 'for' loop to preserve
    buildability with g++ version 4.X.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/179397

From-SVN: r271761
2019-05-30 00:57:11 +00:00
GCC Administrator
e6f2328f3e Daily bump.
From-SVN: r271760
2019-05-30 00:16:17 +00:00
Jonathan Wakely
ea16f6acb0 PR libstdc++/85494 fix failing test
This test now fails on mingw-w64 because it's no longer always true that
the mt19937 engine is used when _GLIBCXX_USE_DEV_RANDOM is not defined.

Add tests for all the known tokens to ensure that at least one is
accepted.

	* testsuite/26_numerics/random/random_device/cons/token.cc: Fix test
	that fails on mingw-w64.

From-SVN: r271756
2019-05-29 23:00:57 +01:00
Jonathan Wakely
3cb929a32a PR libstdc++/88881 fix filesystem::symlink_status for Windows
The fix for PR 88881 only added a workaround to filesystem::status, but
filesystem::symlink_status is also affected by the _wstat bug and needs
the same workaround.

The recent change to optimize path::parent_path() means that the
workaround can be simplified to just use parent_path().

	PR libstdc++/88881
	* src/c++17/fs_ops.cc [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
	(status(const path&, error_code&)): Use parent_path() to remove
	trailing slash.
	(symlink_status(const path&, error_code&)): Duplicate workaround for
	bug in _wstat for paths with trailing slash.
	* testsuite/27_io/filesystem/operations/remove_all.cc: Check path
	with trailing slash.
	* testsuite/27_io/filesystem/operations/status.cc: Likewise.
	* testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.

From-SVN: r271755
2019-05-29 23:00:53 +01:00
Jonathan Wakely
e5ccb10ad0 Optimize filesystem::path::parent_path()
Parsing a complete string is more efficient than appending each
component one-by-one.

	* src/c++17/fs_path.cc (path::parent_path()): Create whole path at
	once instead of building it iteratively.

From-SVN: r271754
2019-05-29 23:00:45 +01:00
Bill Schmidt
e800d6dc2c rs6000.c (rs6000_call_template_1): Handle pcrel calls here...
[gcc]

2019-05-29  Bill Schmidt  <wschmidt@linux.ibm.com>
	    Alan Modra  <amodra@gmail.com>

	* config/rs6000/rs6000.c (rs6000_call_template_1): Handle pcrel
	calls here...
	(rs6000_indirect_call_template_1): ...and here.
	(rs6000_pltseq_template): Handle plt_pcrel34.  Rework tocsave,
	plt16_ha, plt16_lo, mtctr indirect calls.  Use
	rs6000_pltseq_enum.
	(rs6000_decl_ok_for_sibcall): New function.
	(rs6000_function_ok_for_sibcall): Refactor.
	(rs6000_longcall_ref): Use UNSPEC_PLT_PCREL when pcrel.
	(rs6000_call_aix): Don't emit toc restore rtl for indirect calls
	when pcrel.  Reorganize.
	(rs6000_sibcall_aix): Don't add r2 to function usage when pcrel.
	* rs6000.h (rs6000_pltseq_enum): New enum.
	* rs6000.md (UNSPEC_PLT_PCREL): New unspec.
	(*pltseq_tocsave): Use rs6000_pltseq_enum.
	(*pltseq_plt16_ha): Likewise.
	(*pltseq_plt16_lo): Likewise.
	(*pltseq_mtctr): Likewise.
	(*pltseq_plt_pcrel): New insn.
	(*call_local_aix): Handle @notoc calls.
	(*call_value_local_aix): Likewise.
	(*call_nonlocal_aix): Adjust lengths for pcrel calls.
	(*call_value_nonlocal_aix): Likewise.
	(*call_indirect_pcrel): New insn.
	(*call_value_indirect_pcrel): Likewise.


[gcc/testsuite]

2019-05-29  Bill Schmidt  <wschmidt@linux.ibm.com>

	* gcc.target/powerpc/notoc-direct-1.c: New.
	* gcc.target/powerpc/pcrel-sibcall-1.c: New.


Co-Authored-By: Alan Modra <amodra@gmail.com>

From-SVN: r271753
2019-05-29 21:50:09 +00:00
Jakub Jelinek
874f88c43b re PR c++/90598 (Return type of explicit destructor call wrong)
PR c++/90598
	* tree.c (lvalue_kind): Return clk_none for expressions with
	with VOID_TYPE_P.

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

From-SVN: r271752
2019-05-29 23:33:18 +02:00
Thomas Koenig
1585b48323 re PR fortran/90539 (481.wrf slowdown by 25% on Intel Kaby with -Ofast -march=native starting with r271377)
2019-05-29  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/90539
	* gfortran.h (gfc_has_dimen_vector_ref): Add prototype.
	* trans.h (gfc_conv_subref_array_arg): Add argument check_contiguous.
	(gfc_conv_is_contiguous_expr): Add prototype.
	* frontend-passes.c (has_dimen_vector_ref): Remove prototype,
	rename to
	(gfc_has_dimen_vector_ref): New function name.
	(matmul_temp_args): Use gfc_has_dimen_vector_ref.
	(inline_matmul_assign): Likewise.
	* trans-array.c (gfc_conv_array_parameter): Also check for absence
	of a vector subscript before calling gfc_conv_subref_array_arg.
	Pass additional argument to gfc_conv_subref_array_arg.
	* trans-expr.c (gfc_conv_subref_array_arg): Add argument
	check_contiguous. If that is true, check if the argument
	is contiguous and do not repack in that case.
	* trans-intrinsic.c (gfc_conv_intrinsic_is_contiguous): Split
	away most of the work into, and call
	(gfc_conv_intrinsic_is_coniguous_expr): New function.

2019-05-29  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/90539
	* gfortran.dg/internal_pack_21.f90: Adjust scan patterns.
	* gfortran.dg/internal_pack_22.f90: New test.
	* gfortran.dg/internal_pack_23.f90: New test.

From-SVN: r271751
2019-05-29 20:30:45 +00:00
Jan Hubicka
987c9fc581 * tree-ssa/alias-access-spath-1.c: new testcase.
From-SVN: r271750
2019-05-29 19:51:24 +00:00
Uros Bizjak
5a158e54ab sse.md (*save_multiple<mode>): Rename from save_multiple<mode>.
* config/i386/sse.md (*save_multiple<mode>): Rename from
	save_multiple<mode>.
	(*restore_multiple<mode>): Rename from restore_multiple<mode>.
	(*restore_multiple_and_return<mode>): Rename from
	restore_multiple_and_return<mode>.
	(*restore_multiple_leave_return<mode>): Rename from
	restore_multiple_leave_return<mode>.

From-SVN: r271749
2019-05-29 20:51:41 +02:00
Yoshinori Sato
76aaa9cdb1 config.gcc (rx-*-linux*): New target.
* config.gcc (rx-*-linux*): New target.
	* config/rx/elf.opt: New file.
	* config/rx/linux.h: Likewise.
	* config/rx/t-linux: Likewise.
	* config/rx/rx.c (TARGET_SAVE_ACC_REGISTER): If not defined,
	make it zero.
	* config/rx/rx.h (ASM_APP_ON): Allow to be overridden.
	(ASM_APP_OFF): Likewise.
	* config/rx/rx.opt: Drop -msim and -mas100-syntax, they were
	moved elsewhere.

	* config.host (rx-*-linux*): Add new case.
	* config/rx/t-rx (HOST_LIBGCC2_CFLAGS): Force DFmode to SFmode.

From-SVN: r271748
2019-05-29 12:36:06 -06:00
Jan Hubicka
01a58e3698 tree-ssa-alias.c (same_type_for_tbaa): Return ture if main variants are pointer equivalent.
* tree-ssa-alias.c (same_type_for_tbaa): Return ture if main
	variants are pointer equivalent.

From-SVN: r271747
2019-05-29 18:13:51 +00:00
Paolo Carlini
824e57cbf4 re PR c++/89875 (invalid typeof reference to a member of an incomplete struct accepted at function scope)
/cp
2019-05-29  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/89875
	* parser.c (cp_parser_sizeof_operand): When the type-id production
	did not work out commit to the tentative parse.

/testsuite
2019-05-29  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/89875
	* g++.dg/cpp0x/decltype-pr66548.C: Remove xfail.
	* g++.dg/template/sizeof-template-argument.C: Adjust expected error.

From-SVN: r271746
2019-05-29 17:30:36 +00:00
Jonathan Wakely
65539b1ef3 Avoid -Wunused-parameter warnings from testsuite utility
* testsuite/util/testsuite_api.h: Remove names of unused parameters.

From-SVN: r271741
2019-05-29 15:45:50 +01:00
Jonathan Wakely
b0c0d878a8 PR libstdc++/85494 use rdseed and rand_s in std::random_device
Add support for additional sources of randomness to std::random_device,
to allow using RDSEED for Intel CPUs and rand_s for Windows. When
supported these can be selected using the tokens "rdseed" and "rand_s".
For *-w64-mingw32 targets the "default" token will now use rand_s, and
for other i?86-*-* and x86_64-*-* targets it will try to use "rdseed"
first, then "rdrand", and finally "/dev/urandom".

To simplify the declaration of std::random_device in <bits/random.h> the
constructors now unconditionally call _M_init instead of _M_init_pretr1,
and the function call operator now unconditionally calls _M_getval. The
library code now decides whether _M_init and _M_getval should use a real
source of randomness or the mt19937 engine.

Existing code compiled against old libstdc++ headers will still call
_M_init_pretr1 and _M_getval_pretr1, but those functions now forward to
_M_init and _M_getval if a real source of randomness is available. This
means existing code compiled for mingw-w64 will start to use rand_s just
by linking to a new libstdc++.dll.

	* acinclude.m4 (GLIBCXX_CHECK_X86_RDSEED): Define macro to check if
	the assembler supports rdseed.
	* config.h.in: Regenerate.
	* configure: Regenerate.
	* configure.ac: Use GLIBCXX_CHECK_X86_RDSEED.
	* config/os/mingw32-w64/os_defines.h (_GLIBCXX_USE_CRT_RAND_S): Define.
	* doc/html/*: Regenerate.
	* doc/xml/manual/status_cxx2011.xml: Document new tokens.
	* include/bits/random.h (random_device::random_device()): Always call
	_M_init rather than _M_init_pretr1.
	(random_device::random_device(const string&)): Likewise.
	(random_device::operator()()): Always call _M_getval().
	(random_device::_M_file): Replace first member of union with an
	anonymous struct, with _M_file as its first member.
	* src/c++11/random.cc [_GLIBCXX_X86_RDRAND] (USE_RDRAND): Define.
	[_GLIBCXX_X86_RDSEED] (USE_RDSEED): Define.
	(USE_MT19937): Define if none of the above are defined.
	(USE_POSIX_FILE_IO): Define.
	(_M_strtoul): Remove.
	[USE_RDSEED] (__x86_rdseed): Define new function.
	[_GLIBCXX_USE_CRT_RAND_S] (__winxp_rand_s): Define new function.
	(random_device::_M_init(const string&)): Initialize new union members.
	Add support for "rdseed" and "rand_s" tokens. Decide what the
	"default" token does according to which USE_* macros are defined.
	[USE_POSIX_FILE_IO]: Store a file descriptor.
	[USE_MT19937]: Forward to _M_init_pretr1 instead.
	(random_device::_M_init_pretr1(const string&)) [USE_MT19937]: Inline
	code from _M_strtoul.
	[!USE_MT19937]: Call _M_init, transforming the old default token or
	numeric tokens to "default".
	(random_device::_M_fini()) [USE_POSIX_FILE_IO]: Use close not fclose.
	(random_device::_M_getval()): Use new union members to obtain a
	random number from the stored function pointer or file descriptor.
	[USE_MT19937]: Obtain a value from the mt19937 engine.
	(random_device::_M_getval_pretr1()): Call _M_getval().
	(random_device::_M_getentropy()) [USE_POSIX_FILE_IO]: Use _M_fd
	instead of fileno.
	[!USE_MT19937] (mersenne_twister): Do not instantiate when not needed.
	* testsuite/26_numerics/random/random_device/85494.cc: New test.

From-SVN: r271740
2019-05-29 15:45:35 +01:00
Alejandro Martinez
0617e23c95 This patch implements the [u]avgM3_floor and [u]avgM3_ceil optabs for SVE2.
From-SVN: r271739
2019-05-29 14:12:02 +00:00
Jakub Jelinek
ffeebc4ff1 re PR fortran/90329 (Incompatibility between gfortran and C lapack calls)
PR fortran/90329
	* lang.opt (fbroken-callers): Remove.
	(ftail-call-workaround, ftail-call-workaround=): New options.
	* gfortran.h (struct gfc_namespace): Add implicit_interface_calls.
	* interface.c (gfc_procedure_use): Set implicit_interface_calls
	for calls to implicit interface procedures.
	* trans-decl.c (create_function_arglist): Use flag_tail_call_workaround
	instead of flag_broken_callers.  If it is not 2, also require
	sym->ns->implicit_interface_calls.
	* invoke.texi (fbroken-callers): Remove documentation.
	(ftail-call-workaround, ftail-call-workaround=): Document.

From-SVN: r271738
2019-05-29 16:08:57 +02:00
Jakub Jelinek
b54ecc769f re PR bootstrap/90543 (Build failure on MINGW for gcc-9.1.0)
PR bootstrap/90543
	* optc-save-gen.awk: In cl_optimization_print, use correct condition
	for var_opt_string printing.  In cl_optimization_print_diff, print
	(null) instead of invoking undefined behavior if one of the
	var_opt_string pointers is NULL and use && instead of first || in the
	guarding condition.  For var_target_other options, handle const char *
	target variables similarly to const char * optimize node variables.

From-SVN: r271736
2019-05-29 11:33:02 +02:00
Sam Tebbs
8fc16d7252 [PATCH 3/3][GCC][AARCH64] Add support for pointer authentication B key
gcc/
2019-05-29  Sam Tebbs  <sam.tebbs@arm.com>

	* config/aarch64/aarch64-builtins.c (aarch64_builtins): Add
	AARCH64_PAUTH_BUILTIN_AUTIB1716 and AARCH64_PAUTH_BUILTIN_PACIB1716.
	* config/aarch64/aarch64-builtins.c (aarch64_init_pauth_hint_builtins):
	Add autib1716 and pacib1716 initialisation.
	* config/aarch64/aarch64-builtins.c (aarch64_expand_builtin): Add checks
	for autib1716 and pacib1716.
	* config/aarch64/aarch64-protos.h (aarch64_key_type,
	aarch64_post_cfi_startproc): Define.
	* config/aarch64/aarch64-protos.h (aarch64_ra_sign_key): Define extern.
	* config/aarch64/aarch64.c (aarch64_handle_standard_branch_protection,
	aarch64_handle_pac_ret_protection): Set default sign key to A.
	* config/aarch64/aarch64.c (aarch64_expand_epilogue,
	aarch64_expand_prologue): Add check for b-key.
	* config/aarch64/aarch64.c (aarch64_ra_sign_key,
	aarch64_post_cfi_startproc, aarch64_handle_pac_ret_b_key): Define.
	* config/aarch64/aarch64.h (TARGET_ASM_POST_CFI_STARTPROC): Define.
	* config/aarch64/aarch64.c (aarch64_pac_ret_subtypes): Add "b-key".
	* config/aarch64/aarch64.md (unspec): Add UNSPEC_AUTIA1716,
	UNSPEC_AUTIB1716, UNSPEC_AUTIASP, UNSPEC_AUTIBSP, UNSPEC_PACIA1716,
	UNSPEC_PACIB1716, UNSPEC_PACIASP, UNSPEC_PACIBSP.
	* config/aarch64/aarch64.md (do_return): Add check for b-key.
	* config/aarch64/aarch64.md (<pauth_mnem_prefix>sp): Replace
	pauth_hint_num_a with pauth_hint_num.
	* config/aarch64/aarch64.md (<pauth_mnem_prefix>1716): Replace
	pauth_hint_num_a with pauth_hint_num.
	* config/aarch64/aarch64.opt (msign-return-address=): Deprecate.
	* config/aarch64/iterators.md (PAUTH_LR_SP): Add UNSPEC_AUTIASP,
	UNSPEC_AUTIBSP, UNSPEC_PACIASP, UNSPEC_PACIBSP.
	* config/aarch64/iterators.md (PAUTH_17_16): Add UNSPEC_AUTIA1716,
	UNSPEC_AUTIB1716, UNSPEC_PACIA1716, UNSPEC_PACIB1716.
	* config/aarch64/iterators.md (pauth_mnem_prefix): Add UNSPEC_AUTIA1716,
	UNSPEC_AUTIB1716, UNSPEC_PACIA1716, UNSPEC_PACIB1716, UNSPEC_AUTIASP,
	UNSPEC_AUTIBSP, UNSPEC_PACIASP, UNSPEC_PACIBSP.
	* config/aarch64/iterators.md (pauth_hint_num_a): Replace
	UNSPEC_PACI1716 and UNSPEC_AUTI1716 with UNSPEC_PACIA1716 and
	UNSPEC_AUTIA1716 respectively.
	* config/aarch64/iterators.md (pauth_hint_num_a): Rename to pauth_hint_num
	and add UNSPEC_PACIBSP, UNSPEC_AUTIBSP, UNSPEC_PACIB1716, UNSPEC_AUTIB1716.
	* doc/invoke.texi (-mbranch-protection): Add b-key type.
	* config/aarch64/aarch64-bti-insert.c (aarch64_pac_insn_p): Rename
	UNSPEC_PACISP to UNSPEC_PACIASP and UNSPEC_PACIBSP.

gcc/testsuite
2019-05-29  Sam Tebbs  <sam.tebbs@arm.com>

	* gcc.target/aarch64/return_address_sign_b_1.c: New file.
	* gcc.target/aarch64/return_address_sign_b_2.c: New file.
	* gcc.target/aarch64/return_address_sign_b_3.c: New file.
	* gcc.target/aarch64/return_address_sign_b_exception.c: New file.
	* gcc.target/aarch64/return_address_sign_ab_exception.c: New file.
	* gcc.target/aarch64/return_address_sign_builtin.c: New file

libgcc/
2019-05-29  Sam Tebbs  <sam.tebbs@arm.com>

	* config/aarch64/aarch64-unwind.h (aarch64_cie_signed_with_b_key): New
	function.
	* config/aarch64/aarch64-unwind.h (aarch64_post_extract_frame_addr,
	aarch64_post_frob_eh_handler_addr): Add	check for b-key.
	* config/aarch64/aarch64-unwind-h (aarch64_post_extract_frame_addr,
	aarch64_post_frob_eh_handler_addr, aarch64_post_frob_update_context):
	Rename RA_A_SIGNED_BIT to RA_SIGNED_BIT.
	* unwind-dw2-fde.c (get_cie_encoding): Add check for 'B' in augmentation
	string.
	* unwind-dw2.c (extract_cie_info): Add check for 'B' in augmentation
	string.
	(RA_A_SIGNED_BIT): Rename to RA_SIGNED_BIT.

From-SVN: r271735
2019-05-29 09:22:17 +00:00
Jakub Jelinek
7e47198b80 gimplify.c (struct gimplify_omp_ctx): Add clauses member.
* gimplify.c (struct gimplify_omp_ctx): Add clauses member.
	(gimplify_scan_omp_clauses): Initialize ctx->clauses.
	(gimplify_adjust_omp_clauses_1): Transform lastprivate conditional
	explicit clause on combined parallel into implicit shared clause.
	(gimplify_adjust_omp_clauses): Move lastprivate conditional clause
	and firstprivate if the decl has one too from combined parallel to
	the worksharing construct.
gcc/testsuite/
	* c-c++-common/gomp/lastprivate-conditional-2.c (foo): Don't expect
	sorry on lastprivate conditional on parallel for.
	* c-c++-common/gomp/lastprivate-conditional-3.c (foo): Add tests for
	lastprivate conditional warnings on parallel for constructs.
	* c-c++-common/gomp/lastprivate-conditional-4.c: New test.
libgomp/
	* testsuite/libgomp.c-c++-common/lastprivate_conditional_4.c: Rename
	to ...
	* testsuite/libgomp.c-c++-common/lastprivate-conditional-4.c: ... this.
	* testsuite/libgomp.c-c++-common/lastprivate-conditional-5.c: New test.
	* testsuite/libgomp.c-c++-common/lastprivate-conditional-6.c: New test.

From-SVN: r271733
2019-05-29 09:51:43 +02:00
Jakub Jelinek
357a352fe3 re PR c/90628 (__builtin_mul_overflow writes to const qualified integer)
PR c/90628
	* c-common.c (check_builtin_function_arguments)
	<case BUILTIN_*_OVERFLOW>: Diagnose pointer to const qualified integer
	as last argument.

	* c-c++-common/builtin-arith-overflow-3.c: New test.

From-SVN: r271732
2019-05-29 09:48:37 +02:00
Jakub Jelinek
b0df5ff8be P1091R3 - Extending structured bindings to be more like var decls P1381R1 - Reference capture of structured bindings
P1091R3 - Extending structured bindings to be more like var decls
	P1381R1 - Reference capture of structured bindings
	* decl.c (cp_maybe_mangle_decomp): Handle TREE_STATIC decls even at
	function scope.
	(cp_finish_decomp): Copy over various decl properties from decl to
	v[i] in the tuple case.
	(grokdeclarator): Allow static, thread_local and __thread for C++2a
	and use pedwarn instead of error for older standard revisions.
	Make other structured binding diagnostic messages more i18n friendly.

	* g++.dg/cpp1z/decomp3.C (test): For static, expect only warning
	instead of error and only for c++17_down.  Add a thread_local test.
	(z2): Add a __thread test.
	* g++.dg/cpp2a/decomp1.C: New test.
	* g++.dg/cpp2a/decomp1-aux.cc: New file.
	* g++.dg/cpp2a/decomp2.C: New test.
	* g++.dg/cpp2a/decomp3.C: New test.

From-SVN: r271731
2019-05-29 09:45:49 +02:00
Jakub Jelinek
b7f0df71a9 P1091R3 - Extending structured bindings to be more like var decls P1381R1 - Reference capture of structured bindings
P1091R3 - Extending structured bindings to be more like var decls
	P1381R1 - Reference capture of structured bindings
	* decl.c (cp_maybe_mangle_decomp): Handle TREE_STATIC decls even at
	function scope.
	(cp_finish_decomp): Copy over various decl properties from decl to
	v[i] in the tuple case.
	(grokdeclarator): Allow static, thread_local and __thread for C++2a
	and use pedwarn instead of error for older standard revisions.
	Make other structured binding diagnostic messages more i18n friendly.

	* g++.dg/cpp1z/decomp3.C (test): For static, expect only warning
	instead of error and only for c++17_down.  Add a thread_local test.
	(z2): Add a __thread test.
	* g++.dg/cpp2a/decomp1.C: New test.
	* g++.dg/cpp2a/decomp1-aux.cc: New file.
	* g++.dg/cpp2a/decomp2.C: New test.
	* g++.dg/cpp2a/decomp3.C: New test.

From-SVN: r271730
2019-05-29 09:44:50 +02:00