gcc.git
5 years agoFix uses of static_assert not guarded by C++11 check
Jonathan Wakely [Mon, 3 Jun 2019 22:18:31 +0000 (23:18 +0100)]
Fix uses of static_assert not guarded by C++11 check

* include/bits/stl_map.h (map): Disable static assert for C++98 mode.
* include/bits/stl_multimap.h (multimap): Likewise.

From-SVN: r271884

5 years agoruntime: fix assembly syntax
Ian Lance Taylor [Mon, 3 Jun 2019 20:06:50 +0000 (20:06 +0000)]
runtime: fix assembly syntax

    Some assembler doesn't accept ULL suffix. In fact the suffix
    is not really necessary. Drop it.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/180217

From-SVN: r271883

5 years agobb-reorder.c (copy_bb_p): Don't overflow size calculation.
Alan Modra [Mon, 3 Jun 2019 17:35:47 +0000 (03:05 +0930)]
bb-reorder.c (copy_bb_p): Don't overflow size calculation.

* bb-reorder.c (copy_bb_p): Don't overflow size calculation.
(get_uncond_jump_length): Assert length less than INT_MAX and
non-negative.

From-SVN: r271877

5 years agoRename variables and cleanup comments.
François Dumont [Mon, 3 Jun 2019 17:08:34 +0000 (17:08 +0000)]
Rename variables and cleanup comments.

2019-06-03  François Dumont  <fdumont@gcc.gnu.org>

Rename variables and cleanup comments.
* include/bits/hashtable_policy.h
* include/bits/hashtable.h

From-SVN: r271876

5 years agoenum-1.c: Add -fno-eliminate-unused-debug-symbols on AIX.
David Edelsohn [Mon, 3 Jun 2019 14:10:47 +0000 (14:10 +0000)]
enum-1.c: Add -fno-eliminate-unused-debug-symbols on AIX.

        * gcc.dg/debug/enum-1.c: Add -fno-eliminate-unused-debug-symbols
        on AIX.
        * g++.dg/debug/enum-1.C: Same.

From-SVN: r271873

5 years agoFix PR64242 - Longjmp expansion incorrect
Wilco Dijkstra [Mon, 3 Jun 2019 13:55:15 +0000 (13:55 +0000)]
Fix PR64242 - Longjmp expansion incorrect

Improve the fix for PR64242.  Various optimizations can change a memory
reference into a frame access.  Given there are multiple virtual frame pointers
which may be replaced by multiple hard frame pointers, there are no checks for
writes to the various frame pointers.  So updates to a frame pointer tends to
generate incorrect code.  Improve the previous fix to also add clobbers of
several frame pointers and add a scheduling barrier.  This should work in most
cases until GCC supports a generic "don't optimize across this instruction"
feature.

Bootstrap OK. Testcase passes on AArch64 and x86-64.  Inspected x86, Arm,
Thumb-1 and Thumb-2 assembler which looks correct.

    gcc/
PR middle-end/64242
* builtins.c (expand_builtin_longjmp): Add frame clobbers and schedule
block.
(expand_builtin_nonlocal_goto): Likewise.

    testsuite/
PR middle-end/64242
* gcc.c-torture/execute/pr64242.c: Update test.

From-SVN: r271870

5 years agoaarch64: emit .variant_pcs for aarch64_vector_pcs symbol references
Szabolcs Nagy [Mon, 3 Jun 2019 13:50:53 +0000 (13:50 +0000)]
aarch64: emit .variant_pcs for aarch64_vector_pcs symbol references

A dynamic linker with lazy binding support may need to handle vector PCS
function symbols specially, so an ELF symbol table marking was
introduced for such symbols.

Function symbol references and definitions that follow the vector PCS
are marked in the generated assembly with .variant_pcs and then the
STO_AARCH64_VARIANT_PCS st_other flag is set on the symbol in the object
file.  The marking is propagated to the dynamic symbol table by the
static linker so a dynamic linker can handle such symbols specially.

For this to work, the assembler, the static linker and the dynamic
linker has to be updated on a system.  Old assembler does not support
the new .variant_pcs directive, so a toolchain with old binutils won't
be able to compile code that references vector PCS symbols.

gcc/ChangeLog:

* config/aarch64/aarch64-protos.h (aarch64_asm_output_alias): Declare.
(aarch64_asm_output_external): Declare.
* config/aarch64/aarch64.c (aarch64_asm_output_variant_pcs): New.
(aarch64_declare_function_name): Call aarch64_asm_output_variant_pcs.
(aarch64_asm_output_alias): New.
(aarch64_asm_output_external): New.
* config/aarch64/aarch64.h (ASM_OUTPUT_DEF_FROM_DECLS): Define.
(ASM_OUTPUT_EXTERNAL): Define.

gcc/testsuite/ChangeLog:

* gcc.target/aarch64/pcs_attribute-2.c: New test.
* gcc.target/aarch64/torture/simd-abi-4.c: Check .variant_pcs support.
* lib/target-supports.exp (check_effective_target_aarch64_variant_pcs):
New.

From-SVN: r271869

5 years agoCorrections for C++2a library status table
Jonathan Wakely [Mon, 3 Jun 2019 13:32:17 +0000 (14:32 +0100)]
Corrections for C++2a library status table

* doc/xml/manual/status_cxx2020.xml: Add missing row for P0920R2.
Fix bgcolor for P0340R3.
* doc/html/*: Regenerate.

From-SVN: r271868

5 years agoPR libstdc++/90686 update C++2a library status docs
Jonathan Wakely [Mon, 3 Jun 2019 13:23:03 +0000 (14:23 +0100)]
PR libstdc++/90686 update C++2a library status docs

PR libstdc++/90686
* doc/xml/manual/status_cxx2014.xml: Document what's missing from
<experimental/memory_resource>.
* doc/xml/manual/status_cxx2020.xml: Document status of P1285R0,
P0339R6, P0340R3, P1164R1 and P1357R1.
* doc/html/*: Regenerate.

From-SVN: r271867

5 years agoEnforce allocator::value_type consistency for containers in C++2a
Jonathan Wakely [Mon, 3 Jun 2019 13:22:59 +0000 (14:22 +0100)]
Enforce allocator::value_type consistency for containers in C++2a

In previous standards it is undefined for a container and its allocator
to have a different value_type. Libstdc++ has traditionally allowed it
as an extension, automatically rebinding the allocator to the
container's value_type. Since GCC 8.1 that extension has been disabled
for C++11 and later when __STRICT_ANSI__ is defined (i.e. for
-std=c++11, -std=c++14, -std=c++17 and -std=c++2a).

Since the acceptance of P1463R1 into the C++2a draft an incorrect
allocator::value_type now requires a diagnostic. This patch implements
that by enabling the static_assert for -std=gnu++2a as well.

* doc/xml/manual/status_cxx2020.xml: Document P1463R1 status.
* include/bits/forward_list.h [__cplusplus > 201703]: Enable
allocator::value_type assertion for C++2a.
* include/bits/hashtable.h: Likewise.
* include/bits/stl_deque.h: Likewise.
* include/bits/stl_list.h: Likewise.
* include/bits/stl_map.h: Likewise.
* include/bits/stl_multimap.h: Likewise.
* include/bits/stl_multiset.h: Likewise.
* include/bits/stl_set.h: Likewise.
* include/bits/stl_vector.h: Likewise.
* testsuite/23_containers/deque/48101-3_neg.cc: New test.
* testsuite/23_containers/forward_list/48101-3_neg.cc: New test.
* testsuite/23_containers/list/48101-3_neg.cc: New test.
* testsuite/23_containers/map/48101-3_neg.cc: New test.
* testsuite/23_containers/multimap/48101-3_neg.cc: New test.
* testsuite/23_containers/multiset/48101-3_neg.cc: New test.
* testsuite/23_containers/set/48101-3_neg.cc: New test.
* testsuite/23_containers/unordered_map/48101-3_neg.cc: New test.
* testsuite/23_containers/unordered_multimap/48101-3_neg.cc: New test.
* testsuite/23_containers/unordered_multiset/48101-3_neg.cc: New test.
* testsuite/23_containers/unordered_set/48101-3_neg.cc: New test.
* testsuite/23_containers/vector/48101-3_neg.cc: New test.

From-SVN: r271866

5 years agotree-vrp.h (value_range_base::nonzero_p): New.
Aldy Hernandez [Mon, 3 Jun 2019 11:28:28 +0000 (11:28 +0000)]
tree-vrp.h (value_range_base::nonzero_p): New.

* tree-vrp.h (value_range_base::nonzero_p): New.
(value_range_base::set_nonnull): Rename to...
(value_range_base::set_nonzero): ...this.
(value_range_base::set_null): Rename to...
(value_range_base::set_zero): ...this.
(value_range::set_nonnull): Remove.
(value_range::set_null): Remove.
* tree-vrp.c (range_is_null): Remove.
(range_is_nonnull): Remove.
(extract_range_from_binary_expr): Use value_range_base::*zero_p
instead of range_is_*null.
(extract_range_from_unary_expr): Same.
(value_range_base::set_nonnull): Rename to...
(value_range_base::set_nonzero): ...this.
(value_range::set_nonnull): Remove.
(value_range_base::set_null): Rename to...
(value_range_base::set_zero): ...this.
(value_range::set_null): Remove.
(extract_range_from_binary_expr): Rename set_*null uses to
set_*zero.
(extract_range_from_unary_expr): Same.
(union_helper): Same.
* vr-values.c (get_value_range): Use set_*zero instead of
set_*null.
(vr_values::extract_range_from_binary_expr): Same.
(vr_values::extract_range_basic): Same.

From-SVN: r271865

5 years agoFix alignment option parser (PR90684)
Wilco Dijkstra [Mon, 3 Jun 2019 11:27:50 +0000 (11:27 +0000)]
Fix alignment option parser (PR90684)

Fix the alignment option parser to always allow up to 4 alignments.
Now -falign-functions=16:8:8:8 no longer reports an error.

    gcc/
PR driver/90684
* opts.c (parse_and_check_align_values): Allow 4 alignment values.
M    gcc/ChangeLog
M    gcc/opts.c

From-SVN: r271864

5 years ago[AArch64] Emit TARGET_DOTPROD-specific sequence for <us>sadv16qi
Kyrylo Tkachov [Mon, 3 Jun 2019 11:20:58 +0000 (11:20 +0000)]
[AArch64] Emit TARGET_DOTPROD-specific sequence for <us>sadv16qi

Wilco pointed out that when the Dot Product instructions are available we can use them
to generate an even more efficient expansion for the [us]sadv16qi optab.
Instead of the current:
        uabdl2  v0.8h, v1.16b, v2.16b
        uabal   v0.8h, v1.8b, v2.8b
        uadalp  v3.4s, v0.8h

we can generate:
      (1)  mov    v4.16b, 1
      (2)  uabd    v0.16b, v1.16b, v2.16b
      (3)  udot    v3.4s, v0.16b, v4.16b

Instruction (1) can be CSEd across multiple such expansions and even hoisted outside of loops,
so when this sequence appears frequently back-to-back (like in x264_r) we essentially only have 2 instructions
per sum. Also, the UDOT instruction does the byte-to-word accumulation in one step, which allows us to use
the much simpler UABD instruction before it.

This makes it a shorter and lower-latency sequence overall for targets that support it.

* config/aarch64/iterators.md (MAX_OPP): New code attr.
* config/aarch64/aarch64-simd.md (*aarch64_<su>abd<mode>_3): Rename to...
(aarch64_<su>abd<mode>_3): ... This.
(<sur>sadv16qi): Add TARGET_DOTPROD expansion.

* gcc.target/aarch64/ssadv16qi.c: Add +nodotprod to pragma.
* gcc.target/aarch64/usadv16qi.c: Likewise.
* gcc.target/aarch64/ssadv16qi-dotprod.c: New test.
* gcc.target/aarch64/usadv16qi-dotprod.c: Likewise.

From-SVN: r271863

5 years agotarget-supports.exp (add_options_for_aarch64_sve): New procedure.
Prathamesh Kulkarni [Mon, 3 Jun 2019 11:09:41 +0000 (11:09 +0000)]
target-supports.exp (add_options_for_aarch64_sve): New procedure.

2019-06-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

* lib/target-supports.exp (add_options_for_aarch64_sve): New procedure.
(aarch64_sve_hw_bits): Call add_options_for_aarch64_sve.
(check_effective_target_aarch64_sve_hw): Likewise.

From-SVN: r271862

5 years agoRemove Java Trees from GENERIC manual.
Martin Liska [Mon, 3 Jun 2019 11:09:05 +0000 (13:09 +0200)]
Remove Java Trees from GENERIC manual.

2019-06-03  Martin Liska  <mliska@suse.cz>

* doc/generic.texi: Remove Java Trees.

From-SVN: r271861

5 years agotree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Get original full reference tree...
Richard Biener [Mon, 3 Jun 2019 10:45:38 +0000 (10:45 +0000)]
tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Get original full reference tree and record in ref->ref.

2019-06-03  Richard Biener  <rguenther@suse.de>

* tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Get original
full reference tree and record in ref->ref.
(vn_reference_lookup_3): Pass in original ref to
ao_ref_init_from_vn_reference.
(vn_reference_lookup): Likewise.
* tree-ssa-sccvn.h (ao_ref_init_from_vn_reference): Adjust prototype.
* tree-ssa-alias.c (nonoverlapping_component_refs_of_decl_p):
Handle non-decl bases in the original reference.

* gcc.dg/tree-ssa/alias-access-path-1.c: Scan fre1.

From-SVN: r271860

5 years agoFix typo in index comparison of CONSTRUCTOR.
Martin Liska [Mon, 3 Jun 2019 10:42:14 +0000 (12:42 +0200)]
Fix typo in index comparison of CONSTRUCTOR.

2019-06-03  Martin Liska  <mliska@suse.cz>

* fold-const.c (operand_equal_p): Fix typo as compare_tree_int
returns 0 when operands are equal.

From-SVN: r271859

5 years agore PR tree-optimization/90716 (gcc generates wrong debug information at -O2)
Richard Biener [Mon, 3 Jun 2019 10:17:16 +0000 (10:17 +0000)]
re PR tree-optimization/90716 (gcc generates wrong debug information at -O2)

2019-06-03  Richard Biener  <rguenther@suse.de>

PR tree-optimization/90716
* tree-loop-distribution.c (destroy_loop): Process blocks in
correct order.

* gcc.dg/guality/pr90716.c: New testcase.

From-SVN: r271858

5 years agore PR target/88837 ([SVE] Poor vector construction code in VL-specific mode)
Prathamesh Kulkarni [Mon, 3 Jun 2019 09:35:37 +0000 (09:35 +0000)]
re PR target/88837 ([SVE] Poor vector construction code in VL-specific mode)

2019-06-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

PR target/88837
* vector-builder.h (vector_builder::count_dups): New method.
* config/aarch64/aarch64-protos.h (aarch64_expand_sve_vector_init):
Declare prototype.
* config/aarch64/aarch64/sve.md (aarch64_sve_rev64<mode>): Use @.
(vec_init<mode><Vel>): New pattern.
* config/aarch64/aarch64.c (emit_insr): New function.
(aarch64_sve_expand_vector_init_handle_trailing_constants): Likewise.
(aarch64_sve_expand_vector_init_insert_elems): Likewise.
(aarch64_sve_expand_vector_init_handle_trailing_same_elem): Likewise.
(aarch64_sve_expand_vector_init): Define two overloaded functions.

testsuite/
* gcc.target/aarch64/sve/init_1.c: New test.
* gcc.target/aarch64/sve/init_1_run.c: Likewise.
* gcc.target/aarch64/sve/init_2.c: Likewise.
* gcc.target/aarch64/sve/init_2_run.c: Likewise.
* gcc.target/aarch64/sve/init_3.c: Likewise.
* gcc.target/aarch64/sve/init_3_run.c: Likewise.
* gcc.target/aarch64/sve/init_4.c: Likewise.
* gcc.target/aarch64/sve/init_4_run.c: Likewise.
* gcc.target/aarch64/sve/init_5.c: Likewise.
* gcc.target/aarch64/sve/init_5_run.c: Likewise.
* gcc.target/aarch64/sve/init_6.c: Likewise.
* gcc.target/aarch64/sve/init_6_run.c: Likewise.
* gcc.target/aarch64/sve/init_7.c: Likewise.
* gcc.target/aarch64/sve/init_7_run.c: Likewise.
* gcc.target/aarch64/sve/init_8.c: Likewise.
* gcc.target/aarch64/sve/init_8_run.c: Likewise.
* gcc.target/aarch64/sve/init_9.c: Likewise.
* gcc.target/aarch64/sve/init_9_run.c: Likewise.
* gcc.target/aarch64/sve/init_10.c: Likewise.
* gcc.target/aarch64/sve/init_10_run.c: Likewise.
* gcc.target/aarch64/sve/init_11.c: Likewise.
* gcc.target/aarch64/sve/init_11_run.c: Likewise.
* gcc.target/aarch64/sve/init_12.c: Likewise.
* gcc.target/aarch64/sve/init_12_run.c: Likewise.

From-SVN: r271857

5 years agoFix ICE in vect_slp_analyze_node_operations_1
Alejandro Martinez [Mon, 3 Jun 2019 09:13:32 +0000 (09:13 +0000)]
Fix ICE in vect_slp_analyze_node_operations_1

This patch fixes bug 90681.  It was caused by trying to SLP vectorize a non
groupped load.  We've fixed it by tweaking a bit the implementation: mark
masked loads as not vectorizable, but support them as an special case.  Then
the detect them in the test for normal non-groupped loads that was already
there.

From-SVN: r271856

5 years agore PR testsuite/90713 (FAIL: gcc.dg/gimplefe-40.c (internal compiler error))
Richard Biener [Mon, 3 Jun 2019 09:03:48 +0000 (09:03 +0000)]
re PR testsuite/90713 (FAIL: gcc.dg/gimplefe-40.c (internal compiler error))

2019-06-03  Richard Biener  <rguenther@suse.de>

PR testsuite/90713
* gcc.dg/gimplefe-40.c: Add -maltivec for powerpc.

From-SVN: r271855

5 years agoMake debug(edge) more verbose.
Martin Liska [Mon, 3 Jun 2019 07:00:33 +0000 (09:00 +0200)]
Make debug(edge) more verbose.

2019-06-03  Martin Liska  <mliska@suse.cz>

* cfg.c (debug): Use TDF_DETAILS for debug and
print edge info only once.

From-SVN: r271854

5 years agore PR target/89750 (Wrong code for _mm_comi_round_ss)
H.J. Lu [Mon, 3 Jun 2019 02:20:33 +0000 (02:20 +0000)]
re PR target/89750 (Wrong code for _mm_comi_round_ss)

2019-05-06  H.J. Lu  <hongjiu.lu@intel.com>
    Hongtao Liu  <hongtao.liu@intel.com>

PR target/89750
PR target/86444
* config/i386/i386-expand.c (ix86_expand_sse_comi_round):
Modified, original implementation isn't correct.

2019-05-06  H.J. Lu  <hongjiu.lu@intel.com>
    Hongtao Liu  <hongtao.liu@intel.com>

PR target/89750
PR target/86444
* gcc.target/i386/avx512f-vcomisd-2.c: New.
* gcc.target/i386/avx512f-vcomisd-2.c: Likewise.

Co-Authored-By: Hongtao Liu <hongtao.liu@intel.com>
From-SVN: r271853

5 years agoDaily bump.
GCC Administrator [Mon, 3 Jun 2019 00:16:18 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r271852

5 years agore PR fortran/90539 (481.wrf slowdown by 25% on Intel Kaby with -Ofast -march=native...
Thomas Koenig [Sun, 2 Jun 2019 15:18:22 +0000 (15:18 +0000)]
re PR fortran/90539 (481.wrf slowdown by 25% on Intel Kaby with -Ofast -march=native starting with r271377)

2019-06-02  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/90539
* trans-expr.c (gfc_conv_subref_array_arg): If the size of the
expression can be determined to be one, treat it as contiguous.
Set likelyhood of presence of an actual argument according to
PRED_FORTRAN_ABSENT_DUMMY and likelyhood of being contiguous
according to PRED_FORTRAN_CONTIGUOUS.

2019-06-02  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/90539
* predict.def (PRED_FORTRAN_CONTIGUOUS): New predictor.

2019-06-02  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/90539
* gfortran.dg/internal_pack_24.f90: New test.

From-SVN: r271844

5 years agoDaily bump.
GCC Administrator [Sun, 2 Jun 2019 00:16:22 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r271843

5 years agoDarwin, x86, testsuite - adjust tests for Darwin PR90698.
Iain Sandoe [Sat, 1 Jun 2019 19:59:30 +0000 (19:59 +0000)]
Darwin, x86, testsuite - adjust tests for Darwin PR90698.

We don't have support for -mcmodel={medium, large, kernel} so don't
expect tests for those things to work.

For now mark them as xfail where possible and skip where that isn't.
These changes will be logged onto the PR and therefore can be backed
out when the facility is implemented.

gcc/testsuite/ChangeLog:

2019-06-01  Iain Sandoe  <iain@sandoe.co.uk>

PR target/90698
* gcc.target/i386/pr49866.c: XFAIL for Darwin.
* gcc.target/i386/pr63538.c: Likewise.
* gcc.target/i386/pr61599-1.c: Skip for Darwin.

From-SVN: r271839

5 years agoPR middle-end/90694 - incorrect representation of ADDR_EXPR involving a pointer to...
Martin Sebor [Sat, 1 Jun 2019 17:27:20 +0000 (17:27 +0000)]
PR middle-end/90694 - incorrect representation of ADDR_EXPR involving a pointer to array

gcc/ChangeLog:

PR middle-end/90694
* tree-pretty-print.c (dump_generic_node): Add parentheses.

gcc/testsuite/ChangeLog:

PR middle-end/90694
* gcc.dg/tree-ssa/dump-5.c: New test.

From-SVN: r271838

5 years agoalias.c: Include ipa-utils.h.
Jan Hubicka [Sat, 1 Jun 2019 16:36:49 +0000 (18:36 +0200)]
alias.c: Include ipa-utils.h.

* alias.c: Include ipa-utils.h.
(get_alias_set): Try to complete ODR type via ODR type hash lookup.
* ipa-devirt.c (prevailing_odr_type): New.
* ipa-utils.h (previaling_odr_type): Declare.

* g++.dg/lto/alias-1_0.C: New testcase.
* g++.dg/lto/alias-1_1.C: New testcase.

From-SVN: r271837

5 years agoFix changelog
Ville Voutilainen [Sat, 1 Jun 2019 11:52:33 +0000 (14:52 +0300)]
Fix changelog

From-SVN: r271836

5 years agore PR c++/85254 (boost::is_final does not work for template types)
Ville Voutilainen [Sat, 1 Jun 2019 10:57:12 +0000 (13:57 +0300)]
re PR c++/85254 (boost::is_final does not work for template types)

PR c++/85254

gcc/cp

PR c++/85254
* class.c (fixup_type_variants): Handle CLASSTYPE_FINAL.

testsuite/

PR c++/85254
* g++.dg/ext/is_final.C: Amend.

From-SVN: r271835

5 years agoDaily bump.
GCC Administrator [Sat, 1 Jun 2019 00:16:17 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r271832

5 years agoi386: Don't insert ENDBR after NOTE_INSN_DELETED_LABEL
H.J. Lu [Fri, 31 May 2019 23:59:16 +0000 (23:59 +0000)]
i386: Don't insert ENDBR after NOTE_INSN_DELETED_LABEL

NOTE_INSN_DELETED_LABEL is used to mark what used to be a 'code_label',
but was not used for other purposes than taking its address which cannot
be used as target for indirect jumps.

Tested on Linux/x86-64 with -fcf-protection.

For x86-64 libc.so on glibc master branch (commit f43b8dd55588c3),

Before: 2961 endbr64
After:  2943 endbr64

gcc/

PR target/89355
* config/i386/i386-features.c (rest_of_insert_endbranch): Remove
NOTE_INSN_DELETED_LABEL check.

gcc/testsuite/

PR target/89355
* gcc.target/i386/cet-label-3.c: New test.
* gcc.target/i386/cet-label-4.c: Likewise.
* gcc.target/i386/cet-label-5.c: Likewise.

Co-Authored-By: Hongtao Liu <hongtao.liu@intel.com>
From-SVN: r271828

5 years ago* doc/xml/manual/allocator.xml: Move hoard.org back to http.
Gerald Pfeifer [Fri, 31 May 2019 22:26:55 +0000 (22:26 +0000)]
* doc/xml/manual/allocator.xml: Move hoard.org back to http.

From-SVN: r271827

5 years agomips.c (mips_expand_builtin_insn): Swap the 1st and 3rd operands of the fmadd/fmsub...
Jeff Law [Fri, 31 May 2019 21:40:25 +0000 (15:40 -0600)]
mips.c (mips_expand_builtin_insn): Swap the 1st and 3rd operands of the fmadd/fmsub/maddv builtin.

* config/mips/mips.c (mips_expand_builtin_insn): Swap the 1st
and 3rd operands of the fmadd/fmsub/maddv builtin.

* gcc.target/mips/msa-fmadd.c: New.

From-SVN: r271826

5 years agotree.h (OMP_CLAUSE__CONDTEMP__ITER): Define.
Jakub Jelinek [Fri, 31 May 2019 21:38:35 +0000 (23:38 +0200)]
tree.h (OMP_CLAUSE__CONDTEMP__ITER): Define.

* tree.h (OMP_CLAUSE__CONDTEMP__ITER): Define.
* gimplify.c (gimplify_scan_omp_clauses): Allow lastprivate conditional
on OMP_SIMD if not nested inside of worksharing loop that also has
lastprivate conditional clause for the same decl.
(gimplify_omp_for): Add _condtemp_ clauses to OMP_SIMD if needed.
* omp-low.c (scan_sharing_clauses): Handle OMP_CLAUSE__CONDTEMP_ also
on simd.
(lower_rec_input_clauses): Likewise.  Handle lastprivate conditional
on simd construct.
(lower_lastprivate_conditional_clauses): Handle lastprivate conditional
on simd construct.
(lower_lastprivate_clauses): Likewise.
(lower_omp_sections): Call lower_lastprivate_conditional_clauses before
calling lower_rec_input_clauses.
(lower_omp_for): Likewise.
(lower_omp_1): Use first rather than second OMP_CLAUSE__CONDTEMP_
clause on simd construct.
* omp-expand.c (expand_omp_simd): Initialize cond_var if
OMP_CLAUSE__CONDTEMP_ clause is present.

* c-c++-common/gomp/lastprivate-conditional-2.c (foo): Don't expect
a sorry on lastprivate conditional on simd construct.
* gcc.dg/vect/vect-simd-6.c: New test.
* gcc.dg/vect/vect-simd-7.c: New test.

From-SVN: r271825

5 years agoomp-low.c (lower_rec_simd_input_clauses): Set TREE_THIS_NOTRAP on ivar and lvar.
Jakub Jelinek [Fri, 31 May 2019 21:37:10 +0000 (23:37 +0200)]
omp-low.c (lower_rec_simd_input_clauses): Set TREE_THIS_NOTRAP on ivar and lvar.

* omp-low.c (lower_rec_simd_input_clauses): Set TREE_THIS_NOTRAP on
ivar and lvar.

* gcc.dg/vect/vect-simd-5.c: New test.

From-SVN: r271824

5 years agoruntime: drop unused C type reflection code
Ian Lance Taylor [Fri, 31 May 2019 21:32:47 +0000 (21:32 +0000)]
runtime: drop unused C type reflection code

    In particular, drop __go_type_descriptors_equal, which is no longer
    used, and will be made obsolete by CL 179598.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/179858

From-SVN: r271823

5 years agocompiler: optimize append of make
Ian Lance Taylor [Fri, 31 May 2019 21:18:39 +0000 (21:18 +0000)]
compiler: optimize append of make

    The gc compiler recognizes append(s, make([]T, n)...), and
    generates code to directly zero the tail instead of allocating a
    new slice and copying. This CL lets the Go frontend do basically
    the same.

    The difficulty is that at the point we handle append, there may
    already be temporaries introduced (e.g. in order_evaluations),
    which makes it hard to find the append-of-make pattern. The
    compiler could "see through" the value of a temporary, but it is
    only safe to do if the temporary is not assigned multiple times.
    For this, we add tracking of assignments and uses for temporaries.

    This also helps in optimizing non-escape slice make. We already
    optimize non-escape slice make with constant len/cap to stack
    allocation. But it failed to handle things like f(make([]T, n))
    (where the slice doesn't escape and n is constant), because of
    the temporary. With tracking of temporary assignments and uses,
    it can handle this now as well.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/179597

From-SVN: r271822

5 years agocompiler: handle int-to-string conversion with large integer constant
Ian Lance Taylor [Fri, 31 May 2019 19:45:37 +0000 (19:45 +0000)]
compiler: handle int-to-string conversion with large integer constant

    Currently, Type_conversion_expression::do_is_constant thinks the
    int-to-string conversion is constant if the integer operand is
    constant, but Type_conversion_expression::do_get_backend actually
    generates a call to runtime.intstring if the integer does not fit
    in a "ushort", which makes it not suitable in constant context,
    such as static initializer.

    This CL makes it handle all constant integer input as constant,
    generating constant string.

    Fixes golang/go#32347.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/179777

From-SVN: r271821

5 years agore PR c/43673 (Incorrect warning: use of 'D' length modifier with 'a' type character)
Xiong Hu Luo [Fri, 31 May 2019 18:46:02 +0000 (18:46 +0000)]
re PR c/43673 (Incorrect warning: use of 'D' length modifier with 'a' type character)

PR c/43673
* c-format.c (print_char_table, scanf_char_table): Replace BADLEN with
TEX_D32, TEX_D64 or TEX_D128.

PR c/43673
* gcc.dg/format-dfp-printf-1.c: New test.
* gcc.dg/format-dfp-scanf-1.c: Likewise.

From-SVN: r271820

5 years agocp-demangle.c: Don't define CP_DYNAMIC_ARRAYS if __STDC_NO_VLA__ is non-zero.
Michael Forney [Fri, 31 May 2019 18:25:48 +0000 (18:25 +0000)]
cp-demangle.c: Don't define CP_DYNAMIC_ARRAYS if __STDC_NO_VLA__ is non-zero.

* cp-demangle.c: Don't define CP_DYNAMIC_ARRAYS if __STDC_NO_VLA__
is non-zero.

From-SVN: r271819

5 years agoruntime: implement cheaper context switch on Linux/AMD64
Ian Lance Taylor [Fri, 31 May 2019 17:56:36 +0000 (17:56 +0000)]
runtime: implement cheaper context switch on Linux/AMD64

    Currently, goroutine switches are implemented with libc
    getcontext/setcontext functions, which saves/restores the machine
    register states and also the signal context. This does more than
    what we need, and performs an expensive syscall.

    This CL implements a simplified version of getcontext/setcontext,
    in assembly, that only saves/restores the necessary part, i.e.
    the callee-save registers, and the PC, SP. A simplified version
    of makecontext, written in C, is also added. Currently this is
    only implemented on Linux/AMD64.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/178298

From-SVN: r271818

5 years agoapply unary op to both sides of (vec_cond x cst1 cst2)
Marc Glisse [Fri, 31 May 2019 17:04:20 +0000 (19:04 +0200)]
apply unary op to both sides of (vec_cond x cst1 cst2)

2019-05-31  Marc Glisse  <marc.glisse@inria.fr>

gcc/
* match.pd (~(vec?cst1:cst2)): New transformation.

gcc/testsuite/
* g++.dg/tree-ssa/cprop-vcond.C: New file.

From-SVN: r271817

5 years agoSimplify more EXACT_DIV_EXPR comparisons
Marc Glisse [Fri, 31 May 2019 16:54:30 +0000 (18:54 +0200)]
Simplify more EXACT_DIV_EXPR comparisons

2019-05-31  Marc Glisse  <marc.glisse@inria.fr>

gcc/
* match.pd (X/[ex]D<Y/[ex]D): Handle negative denominator.
((size_t)(A /[ex] B) CMP C): New transformation.

gcc/testsuite/
* gcc.dg/tree-ssa/cmpexactdiv-3.c: New file.
* gcc.dg/tree-ssa/cmpexactdiv-4.c: New file.
* gcc.dg/Walloca-13.c: Xfail.

From-SVN: r271816

5 years agoNew .md construct: define_insn_and_rewrite
Richard Sandiford [Fri, 31 May 2019 16:27:49 +0000 (16:27 +0000)]
New .md construct: define_insn_and_rewrite

Several SVE patterns need define_insn_and_splits that generate the
same insn_code, but with different operands.  That's probably a
niche requirement, but it's cropping up often enough on the ACLE
branch that I think it would be good to have a syntactic sugar for it.

This patch therefore adds a new construct called define_insn_and_rewrite.
It's basically a define_insn_and_split with an implicit split pattern,
obtained by copying the insn pattern and replacing match_operands with
match_dups and match_operators with match_op_dups.

2019-05-31  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* doc/md.texi: Document define_insn_and_rewrite.
* rtl.def (DEFINE_INSN_AND_REWRITE): New rtx code.
* gensupport.c (queue_elem): Update comment.
(replace_operands_with_dups): New function.
(gen_rewrite_sequence): Likewise.
(process_rtx): Handle DEFINE_INSN_AND_REWRITE.
* read-rtl.c (apply_subst_iterator): Likewise.
(add_condition_to_rtx, named_rtx_p): Likewise.
(rtx_reader::read_rtx_operand): Likewise.
* config/aarch64/aarch64-sve.md
(while_ult<GPI:mode><PRED_ALL:mode>_cc): Rename to...
(*while_ult<GPI:mode><PRED_ALL:mode>_cc): ...this and use
define_insn_and_rewrite.
(*cond_<optab><mode>_any): Turn into define_insn_and_rewrites.
Remove separate define_split.

From-SVN: r271815

5 years agoAdd noexcept to tuple<> and simplify tuple<T1,T2> noexcept-specifiers
Jonathan Wakely [Fri, 31 May 2019 14:58:05 +0000 (15:58 +0100)]
Add noexcept to tuple<> and simplify tuple<T1,T2> noexcept-specifiers

* include/std/tuple (tuple<>): Add noexcept to allocator-extended
constructors.
(tuple<T1, T2>::__nothrow_default_constructible()): New helper
function.
(tuple<T1, T2>::tuple(), explicit tuple<T1, T2>::tuple()): Use helper.

From-SVN: r271814

5 years agotree-ssa-alias.c (type_has_components_p): New function.
Jan Hubicka [Fri, 31 May 2019 14:16:27 +0000 (16:16 +0200)]
tree-ssa-alias.c (type_has_components_p): New function.

* tree-ssa-alias.c (type_has_components_p): New function.
(aliasing_component_refs_p): Use it.

From-SVN: r271813

5 years agoFix breakage due to removing __gnu_cxx::size_t declaration
Jonathan Wakely [Fri, 31 May 2019 13:59:19 +0000 (14:59 +0100)]
Fix breakage due to removing __gnu_cxx::size_t declaration

Restore the using-declaration but locally in the source file, not in the
header.

* src/c++98/bitmap_allocator.cc: Add using-declaration for size_t.

From-SVN: r271812

5 years ago[C++PATCH] Lambda names are anonymous
Nathan Sidwell [Fri, 31 May 2019 13:25:46 +0000 (13:25 +0000)]
[C++PATCH] Lambda names are anonymous

https://gcc.gnu.org/ml/gcc-patches/2019-05/msg02126.html
* cp-tree.h (IDENTIFIER_LAMBDA_P): New.
(TYPE_ANON_P): New.
(LAMBDA_TYPE_P, TYPE_UNNAMED_P):  Likewise.
(LAMBDANAME_PREFIX, LAMBDANAME_FORMAT): Delete.
(make_lambda_name): Don't declare.
* error.c (dump_aggr_type): Check for lambdas before other
anonymous names.
* lambda.c (begin_lambda_type): Use make_anon_name.
* cp-lang.c (cxx_dwarf_name): Lambda names smell anonymous.
* mangle.c (write_local_name): Likewise.
* name-lookup.c (lambda_cnt, make_lambda_name): Delete.

From-SVN: r271811

5 years agocpu-future.c: Require powerpc_future_ok.
Bill Schmidt [Fri, 31 May 2019 12:22:52 +0000 (12:22 +0000)]
cpu-future.c: Require powerpc_future_ok.

2019-05-31  Bill Schmidt  <wschmidt@linux.ibm.com>
    Michael Meissner  <meissner@linux.ibm.com>

* gcc.target/powerpc/cpu-future.c: Require powerpc_future_ok.
* gcc.target/powerpc/localentry-1.c: Likewise.
* gcc.target/powerpc/localentry-direct-1.c: Likewise.
* gcc.target/powerpc/notoc-direct-1.c: Likewise.
* gcc.target/powerpc/pcrel-sibcall-1.c: Likewise.
* lib/target-supports.exp (check_powerpc_future_hw_available): New.
(check_effective_target_powerpc_future_ok): New.

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

5 years agoPR libstdc++/90682 allow set_terminate(0) and set_unexpected(0)
Jonathan Wakely [Fri, 31 May 2019 10:35:11 +0000 (11:35 +0100)]
PR libstdc++/90682 allow set_terminate(0) and set_unexpected(0)

Make these functions restore the default handlers when passed a null
pointer. This is consistent with std::pmr::set_default_resource(0), and
also matches the current behaviour of libc++.

In order to avoid duplicating the preprocessor condition from
eh_term_handler.cc more that into a new eh_term_handler.h header and
define a macro that can be used in both eh_term_handler.cc and
eh_terminate.cc.

PR libstdc++/90682
* libsupc++/eh_term_handler.cc: Include eh_term_handler.h to get
definition of _GLIBCXX_DEFAULT_TERM_HANDLER.
* libsupc++/eh_term_handler.h: New header defining
_GLIBCXX_DEFAULT_TERM_HANDLER.
* libsupc++/eh_terminate.cc: Include eh_term_handler.h.
(set_terminate): Restore default handler when argument is null.
(set_unexpected): Likewise.
* testsuite/18_support/set_terminate.cc: New test.
* testsuite/18_support/set_unexpected.cc: New test.

From-SVN: r271808

5 years agoRemove using-declarations that add std names to __gnu_cxx
Jonathan Wakely [Fri, 31 May 2019 10:35:07 +0000 (11:35 +0100)]
Remove using-declarations that add std names to __gnu_cxx

These using-declarations appear to have been added for simplicity when
moving the non-standard extensions from namespace std to namespace
__gnu_cxx. Dumping all these names into namespace __gnu_cxx allows
unportable uses like __gnu_cxx::size_t and __gnu_cxx::pair, which serve
no useful purpose.

This patch removes most of the using-declarations from namespace scope,
then either qualifies names as needed or adds using-declarations at
block scope or typedefs at class scope.

* include/backward/hashtable.h (size_t, ptrdiff_t)
(forward_iterator_tag, input_iterator_tag, _Construct, _Destroy)
(distance, vector, pair, __iterator_category): Remove
using-declarations that add these names to namespace __gnu_cxx.
* include/ext/bitmap_allocator.h (size_t, ptrdiff_t): Likewise.
* include/ext/debug_allocator.h (size_t): Likewise.
* include/ext/functional (size_t, unary_function, binary_function)
(mem_fun1_t, const_mem_fun1_t, mem_fun1_ref_t, const_mem_fun1_ref_t):
Likewise.
* include/ext/malloc_allocator.h (size_t, ptrdiff_t): Likewise.
* include/ext/memory (ptrdiff_t, pair, __iterator_category): Likewise.
* include/ext/mt_allocator.h (size_t, ptrdiff_t): Likewise.
* include/ext/new_allocator.h (size_t, ptrdiff_t): Likewise.
* include/ext/numeric (iota): Fix outdated comment.
* include/ext/pool_allocator.h (size_t, ptrdiff_t): Likewise.
* include/ext/rb_tree (_Rb_tree, allocator): Likewise.
* include/ext/rope (size_t, ptrdiff_t, allocator, _Destroy): Likewise.
* include/ext/ropeimpl.h (size_t, printf, basic_ostream)
(__throw_length_error, _Destroy, std::__uninitialized_fill_n_a):
Likewise.
* include/ext/slist (size_t, ptrdiff_t, _Construct, _Destroy)
(allocator, __true_type, __false_type): Likewise.

From-SVN: r271807

5 years agoPR libstdc++/71579 assert that type traits are not misused with incomplete types
Antony Polukhin [Fri, 31 May 2019 10:35:03 +0000 (10:35 +0000)]
PR libstdc++/71579 assert that type traits are not misused with incomplete types

This patch adds static asserts for type traits misuse with incomplete
classes and unions. This gives a nice readable error message instead
of an UB and odr-violations.

Some features of the patch:
* each type trait has it's own static_assert inside. This gives better
diagnostics than the approach with putting the assert into a helper
structure and using it in each trait.
* the result of completeness check is not memorized by the compiler.
This gives no false positive after the first failed check.
* some of the compiler builtins already implement the check. But not
all of them! So the asserts are in all the type_traits that may
benefit from the check. This also makes the behavior of libstdc++ more
consistent across different (non GCC) compilers.
* std::is_base_of does not have the assert as it works well in many
cases with incomplete types

2019-05-31  Antony Polukhin  <antoshkka@gmail.com>

PR libstdc++/71579
* include/std/type_traits __type_identity, __is_complete_or_unbounded):
New helpers for checking preconditions in traits.
(is_trivial, is_trivially_copyable, is_standard_layout, is_pod)
(is_literal_type, is_empty, is_polymorphic, is_final, is_abstract)
(is_destructible, is_nothrow_destructible, is_constructible)
(is_default_constructible, is_copy_constructible)
(is_move_constructible, is_nothrow_default_constructible)
(is_nothrow_constructible, is_nothrow_copy_constructible)
(is_nothrow_move_constructible, is_copy_assignable, is_move_assignable)
(is_nothrow_assignable, is_nothrow_copy_assignable)
(is_nothrow_move_assignable, is_trivially_constructible)
(is_trivially_copy_constructible, is_trivially_move_constructible)
is_trivially_assignable, is_trivially_copy_assignable)
(is_trivially_move_assignable, is_trivially_destructible)
(alignment_of, is_swappable, is_nothrow_swappable, is_invocable)
(is_invocable_r, is_nothrow_invocable)
(has_unique_object_representations, is_aggregate): Add static_asserts
to make sure that type traits are not misused with incomplete types.
(__is_constructible_impl, __is_nothrow_default_constructible_impl)
(__is_nothrow_constructible_impl, __is_nothrow_assignable_impl): New
base characteristics without assertions that can be reused in other
traits.
* testsuite/20_util/is_complete_or_unbounded/memoization.cc: New test.
* testsuite/20_util/is_complete_or_unbounded/memoization_neg.cc: New
test.
* testsuite/20_util/is_complete_or_unbounded/value.cc: New test.
* testsuite/20_util/is_abstract/incomplete_neg.cc: New test.
* testsuite/20_util/is_aggregate/incomplete_neg.cc: New test.
* testsuite/20_util/is_class/value.cc: Check incomplete type.
* testsuite/20_util/is_function/value.cc: Likewise.
* testsuite/20_util/is_move_constructible/incomplete_neg.cc: New test.
* testsuite/20_util/is_nothrow_move_assignable/incomplete_neg.cc: New
test.
* testsuite/20_util/is_polymorphic/incomplete_neg.cc: New test.
* testsuite/20_util/is_reference/value.cc: Check incomplete types.
* testsuite/20_util/is_unbounded_array/value.cc: Likewise.
* testsuite/20_util/is_union/value.cc: Likewise.
* testsuite/20_util/is_void/value.cc: Likewise.
* testsuite/util/testsuite_tr1.h: Add incomplete union type.

From-SVN: r271806

5 years agoFix random_device to work with COW strings again
Jonathan Wakely [Fri, 31 May 2019 10:34:53 +0000 (11:34 +0100)]
Fix random_device to work with COW strings again

Instead of duplicating the initialization functions that take string,
add a new member taking a raw pointer that can be used to convert the
constructor token from the old string to the new.

Also fix "mt19337" typos in a testcase.

* include/bits/random.h (random_device::_M_init(const char*, size_t)):
Add new private member function.
* src/c++11/cow-string-inst.cc (random_device::_M_init(const string&))
(random_device::_M_init_pretr1(const string&)): Call new private
member with string data.
* src/c++11/random.cc (random_device::_M_init(const char*, size_t)):
Define.
* testsuite/26_numerics/random/random_device/cons/default-cow.cc: New
test using COW strings.
* testsuite/26_numerics/random/random_device/cons/default.cc: Generate
a value from the device.
* testsuite/26_numerics/random/random_device/cons/token.cc: Likewise.
Fix typo in token string.

From-SVN: r271805

5 years agoAdd pretty print for const_tree.
Martin Liska [Fri, 31 May 2019 10:33:14 +0000 (12:33 +0200)]
Add pretty print for const_tree.

2019-05-31  Martin Liska  <mliska@suse.cz>

* gdbhooks.py: Add const_tree to TreePrinter.

From-SVN: r271804

5 years agore PR debug/86964 (Too many debug symbols included, especially for extern globals)
Thomas De Schampheleire [Fri, 31 May 2019 08:22:14 +0000 (08:22 +0000)]
re PR debug/86964 (Too many debug symbols included, especially for extern globals)

2019-05-31  Thomas De Schampheleire  <thomas.de_schampheleire@nokia.com>

PR debug/86964
* common.opt (feliminate-unused-debug-symbols): Enable by default.
* doc/invoke.texi (Debugging Options): Document new default of
-feliminate-unused-debug-symbols and remove restriction to 'stabs'.

* g++.dg/debug/dwarf2/fesd-any.C: Use
-fno-eliminate-unused-debug-symbols.
* g++.dg/debug/dwarf2/fesd-baseonly.C: Likewise.
* g++.dg/debug/dwarf2/fesd-none.C: Likewise.
* g++.dg/debug/dwarf2/fesd-reduced.C: Likewise.
* g++.dg/debug/dwarf2/fesd-sys.C: Likewise.
* g++.dg/debug/dwarf2/inline-var-1.C: Likewise.
* g++.dg/debug/enum-2.C: Likewise.
* gcc.dg/debug/dwarf2/fesd-any.c: Likewise.
* gcc.dg/debug/dwarf2/fesd-baseonly.c: Likewise.
* gcc.dg/debug/dwarf2/fesd-none.c: Likewise.
* gcc.dg/debug/dwarf2/fesd-reduced.c: Likewise.
* gcc.dg/debug/dwarf2/fesd-sys.c: Likewise.

From-SVN: r271803

5 years agore PR tree-optimization/90671 (ICE on valid code at -Os and above with -g enabled...
Jakub Jelinek [Fri, 31 May 2019 07:53:48 +0000 (09:53 +0200)]
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

5 years agoc++, testsuite - require alias support for a test.
Iain Sandoe [Fri, 31 May 2019 07:23:14 +0000 (07:23 +0000)]
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

5 years agoDarwin, x86, testsuite - adjust tests for Darwin's align syntax.
Iain Sandoe [Fri, 31 May 2019 07:17:11 +0000 (07:17 +0000)]
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

5 years agoDarwin, x86 - We have .p2align, so declare its use.
Iain Sandoe [Fri, 31 May 2019 07:13:46 +0000 (07:13 +0000)]
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

5 years agopredicates.md (pcrel_address): New define_predicate.
Bill Schmidt [Fri, 31 May 2019 00:38:35 +0000 (00:38 +0000)]
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

5 years ago* fi.po, sv.po: Update.
Joseph Myers [Fri, 31 May 2019 00:28:14 +0000 (01:28 +0100)]
* fi.po, sv.po: Update.

From-SVN: r271796

5 years agoDaily bump.
GCC Administrator [Fri, 31 May 2019 00:16:16 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r271795

5 years agogimplify.c (enum gimplify_omp_var_data): Add GOVD_CONDTEMP.
Jakub Jelinek [Thu, 30 May 2019 21:19:39 +0000 (23:19 +0200)]
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

5 years agoFix RISC-V build failure for go language.
Jim Wilson [Thu, 30 May 2019 20:47:12 +0000 (20:47 +0000)]
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

5 years agoLWG2788 basic_string spurious use of a default constructible allocator
Nina Dinka Ranns [Thu, 30 May 2019 19:48:48 +0000 (19:48 +0000)]
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

5 years ago* cp-tree.h (TYPE_HAS_NONTRIVIAL_DESTRUCTOR): Fix a typo.
Marek Polacek [Thu, 30 May 2019 18:40:17 +0000 (18:40 +0000)]
* cp-tree.h (TYPE_HAS_NONTRIVIAL_DESTRUCTOR): Fix a typo.

From-SVN: r271788

5 years agoconstraints.md (eI): New constraint.
Bill Schmidt [Thu, 30 May 2019 18:13:06 +0000 (18:13 +0000)]
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

5 years agogfc-internals.texi (Translating to GENERIC): New chapter.
Thomas Koenig [Thu, 30 May 2019 17:49:31 +0000 (17:49 +0000)]
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

5 years ago[aarch64]: add support for fabd in sve
Sylvia Taylor [Thu, 30 May 2019 17:36:52 +0000 (17:36 +0000)]
[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

5 years agocompiler: intrinsify sync/atomic functions
Ian Lance Taylor [Thu, 30 May 2019 17:26:46 +0000 (17:26 +0000)]
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

5 years agore PR c++/90598 (Return type of explicit destructor call wrong)
Jakub Jelinek [Thu, 30 May 2019 17:23:32 +0000 (19:23 +0200)]
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

5 years agoUpdate libstdc++ documentation for Support and Diagnostics clauses
Jonathan Wakely [Thu, 30 May 2019 15:47:32 +0000 (16:47 +0100)]
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

5 years agors6000-cpus.def (OTHER_FUSION_MASKS): New #define.
Bill Schmidt [Thu, 30 May 2019 15:17:40 +0000 (15:17 +0000)]
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

5 years ago[PATCH][GCC][AARCH64] Fix libstdc++ build failure after r271735
Sam Tebbs [Thu, 30 May 2019 12:26:14 +0000 (12:26 +0000)]
[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

5 years ago* lang.opt (ftail-call-workaround): Fix a typo.
Marek Polacek [Thu, 30 May 2019 11:44:40 +0000 (11:44 +0000)]
* lang.opt (ftail-call-workaround): Fix a typo.

From-SVN: r271777

5 years agoUpdate C++20 status table
Jonathan Wakely [Thu, 30 May 2019 10:31:54 +0000 (11:31 +0100)]
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

5 years agoUpdate documentation of implementation-defined library features
Jonathan Wakely [Thu, 30 May 2019 10:14:06 +0000 (11:14 +0100)]
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

5 years agotree-predcom.c (is_inv_store_elimination_chain): Fix a typo - lenght to length.
Jakub Jelinek [Thu, 30 May 2019 09:33:20 +0000 (11:33 +0200)]
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

5 years agoGeneralize getconf _NPROCESSORS_ONLN
Rainer Orth [Thu, 30 May 2019 09:06:48 +0000 (09:06 +0000)]
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

5 years agotestsuite,x86 - require native TLS for two tests that use it.
Iain Sandoe [Thu, 30 May 2019 08:43:19 +0000 (08:43 +0000)]
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

5 years agogdbinit: add a new command and fix one
Martin Liska [Thu, 30 May 2019 07:50:39 +0000 (09:50 +0200)]
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

5 years agodecl.c (grokdeclarator): Use declarator->id_loc in five error_at calls.
Paolo Carlini [Thu, 30 May 2019 07:09:41 +0000 (07:09 +0000)]
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

5 years agore PR go/90669 (go/gofrontend/types.cc:2805 contains range-based ‘for’ loops which...
Ian Lance Taylor [Thu, 30 May 2019 00:57:11 +0000 (00:57 +0000)]
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

5 years agoDaily bump.
GCC Administrator [Thu, 30 May 2019 00:16:17 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r271760

5 years agoPR libstdc++/85494 fix failing test
Jonathan Wakely [Wed, 29 May 2019 22:00:57 +0000 (23:00 +0100)]
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

5 years agoPR libstdc++/88881 fix filesystem::symlink_status for Windows
Jonathan Wakely [Wed, 29 May 2019 22:00:53 +0000 (23:00 +0100)]
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

5 years agoOptimize filesystem::path::parent_path()
Jonathan Wakely [Wed, 29 May 2019 22:00:45 +0000 (23:00 +0100)]
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

5 years agors6000.c (rs6000_call_template_1): Handle pcrel calls here...
Bill Schmidt [Wed, 29 May 2019 21:50:09 +0000 (21:50 +0000)]
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

5 years agore PR c++/90598 (Return type of explicit destructor call wrong)
Jakub Jelinek [Wed, 29 May 2019 21:33:18 +0000 (23:33 +0200)]
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

5 years agore PR fortran/90539 (481.wrf slowdown by 25% on Intel Kaby with -Ofast -march=native...
Thomas Koenig [Wed, 29 May 2019 20:30:45 +0000 (20:30 +0000)]
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

5 years ago* tree-ssa/alias-access-spath-1.c: new testcase.
Jan Hubicka [Wed, 29 May 2019 19:51:24 +0000 (21:51 +0200)]
* tree-ssa/alias-access-spath-1.c: new testcase.

From-SVN: r271750

5 years agosse.md (*save_multiple<mode>): Rename from save_multiple<mode>.
Uros Bizjak [Wed, 29 May 2019 18:51:41 +0000 (20:51 +0200)]
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

5 years agoconfig.gcc (rx-*-linux*): New target.
Yoshinori Sato [Wed, 29 May 2019 18:36:06 +0000 (03:36 +0900)]
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

5 years agotree-ssa-alias.c (same_type_for_tbaa): Return ture if main variants are pointer equiv...
Jan Hubicka [Wed, 29 May 2019 18:13:51 +0000 (20:13 +0200)]
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

5 years agore PR c++/89875 (invalid typeof reference to a member of an incomplete struct accepte...
Paolo Carlini [Wed, 29 May 2019 17:30:36 +0000 (17:30 +0000)]
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

5 years agoAvoid -Wunused-parameter warnings from testsuite utility
Jonathan Wakely [Wed, 29 May 2019 14:45:50 +0000 (15:45 +0100)]
Avoid -Wunused-parameter warnings from testsuite utility

* testsuite/util/testsuite_api.h: Remove names of unused parameters.

From-SVN: r271741

5 years agoPR libstdc++/85494 use rdseed and rand_s in std::random_device
Jonathan Wakely [Wed, 29 May 2019 14:45:35 +0000 (15:45 +0100)]
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

5 years agoThis patch implements the [u]avgM3_floor and [u]avgM3_ceil optabs for SVE2.
Alejandro Martinez [Wed, 29 May 2019 14:12:02 +0000 (14:12 +0000)]
This patch implements the [u]avgM3_floor and [u]avgM3_ceil optabs for SVE2.

From-SVN: r271739