aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2019-05-31[C++PATCH] Lambda names are anonymousNathan Sidwell7-52/+51
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
2019-05-31cpu-future.c: Require powerpc_future_ok.Bill Schmidt7-0/+53
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
2019-05-31PR libstdc++/90682 allow set_terminate(0) and set_unexpected(0)Jonathan Wakely6-15/+171
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
2019-05-31Remove using-declarations that add std names to __gnu_cxxJonathan Wakely15-405/+413
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
2019-05-31PR libstdc++/71579 assert that type traits are not misused with incomplete typesAntony Polukhin17-81/+614
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
2019-05-31Fix random_device to work with COW strings againJonathan Wakely7-58/+86
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
2019-05-31Add pretty print for const_tree.Martin Liska2-1/+5
2019-05-31 Martin Liska <mliska@suse.cz> * gdbhooks.py: Add const_tree to TreePrinter. From-SVN: r271804
2019-05-31re PR debug/86964 (Too many debug symbols included, especially for extern ↵Thomas De Schampheleire16-16/+42
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
2019-05-31re PR tree-optimization/90671 (ICE on valid code at -Os and above with -g ↵Jakub Jelinek4-3/+45
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-31c++, testsuite - require alias support for a test.Iain Sandoe2-0/+5
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-31Darwin, x86, testsuite - adjust tests for Darwin's align syntax.Iain Sandoe3-6/+14
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-31Darwin, x86 - We have .p2align, so declare its use.Iain Sandoe2-0/+16
.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-31predicates.md (pcrel_address): New define_predicate.Bill Schmidt5-0/+151
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* fi.po, sv.po: Update.Joseph Myers3-796/+682
From-SVN: r271796
2019-05-31Daily bump.GCC Administrator1-1/+1
From-SVN: r271795
2019-05-30gimplify.c (enum gimplify_omp_var_data): Add GOVD_CONDTEMP.Jakub Jelinek7-49/+190
* 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-30Fix RISC-V build failure for go language.Jim Wilson2-0/+9
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-30LWG2788 basic_string spurious use of a default constructible allocatorNina Dinka Ranns4-1/+182
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* cp-tree.h (TYPE_HAS_NONTRIVIAL_DESTRUCTOR): Fix a typo.Marek Polacek2-1/+5
From-SVN: r271788
2019-05-30constraints.md (eI): New constraint.Bill Schmidt5-0/+41
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-30gfc-internals.texi (Translating to GENERIC): New chapter.Thomas Koenig2-0/+147
2019-05-30 Thomas Koenig <tkoenig@gcc.gnu.org> * gfc-internals.texi (Translating to GENERIC): New chapter. From-SVN: r271786
2019-05-30[aarch64]: add support for fabd in sveSylvia Taylor4-0/+56
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-30compiler: intrinsify sync/atomic functionsIan Lance Taylor3-12/+112
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-30re PR c++/90598 (Return type of explicit destructor call wrong)Jakub Jelinek1-8/+0
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-30Update libstdc++ documentation for Support and Diagnostics clausesJonathan Wakely10-178/+440
* 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-30rs6000-cpus.def (OTHER_FUSION_MASKS): New #define.Bill Schmidt4-13/+49
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[PATCH][GCC][AARCH64] Fix libstdc++ build failure after r271735Sam Tebbs2-1/+6
gcc/ChangeLog * aarch64/aarch64.c (aarch64_post_cfi_startproc): Add cfun->is_thunk check. From-SVN: r271780
2019-05-30* lang.opt (ftail-call-workaround): Fix a typo.Marek Polacek2-1/+5
From-SVN: r271777
2019-05-30Update C++20 status tableJonathan Wakely3-5/+8
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-30Update documentation of implementation-defined library featuresJonathan Wakely4-31/+60
* 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-30tree-predcom.c (is_inv_store_elimination_chain): Fix a typo - lenght to length.Jakub Jelinek4-2/+11
* 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-30Generalize getconf _NPROCESSORS_ONLNRainer Orth9-10/+229
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-30testsuite,x86 - require native TLS for two tests that use it.Iain Sandoe3-2/+8
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-30gdbinit: add a new command and fix oneMartin Liska2-1/+14
2019-05-30 Martin Liska <mliska@suse.cz> * gdbinit.in: Fix 'ptc' command. Add trt that prints TREE_TYPE($). From-SVN: r271763
2019-05-30decl.c (grokdeclarator): Use declarator->id_loc in five error_at calls.Paolo Carlini11-15/+41
/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-30re PR go/90669 (go/gofrontend/types.cc:2805 contains range-based ‘for’ ↵Ian Lance Taylor2-3/+8
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-30Daily bump.GCC Administrator1-1/+1
From-SVN: r271760
2019-05-29PR libstdc++/85494 fix failing testJonathan Wakely2-8/+64
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-29PR libstdc++/88881 fix filesystem::symlink_status for WindowsJonathan Wakely5-14/+97
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-29Optimize filesystem::path::parent_path()Jonathan Wakely2-5/+6
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-29rs6000.c (rs6000_call_template_1): Handle pcrel calls here...Bill Schmidt7-98/+368
[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-29re PR c++/90598 (Return type of explicit destructor call wrong)Jakub Jelinek4-0/+31
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-29re PR fortran/90539 (481.wrf slowdown by 25% on Intel Kaby with -Ofast ↵Thomas Koenig11-48/+237
-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* tree-ssa/alias-access-spath-1.c: new testcase.Jan Hubicka2-0/+25
From-SVN: r271750
2019-05-29sse.md (*save_multiple<mode>): Rename from save_multiple<mode>.Uros Bizjak2-4/+14
* 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-29config.gcc (rx-*-linux*): New target.Yoshinori Sato11-12/+342
* 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-29tree-ssa-alias.c (same_type_for_tbaa): Return ture if main variants are ↵Jan Hubicka2-0/+9
pointer equivalent. * tree-ssa-alias.c (same_type_for_tbaa): Return ture if main variants are pointer equivalent. From-SVN: r271747
2019-05-29re PR c++/89875 (invalid typeof reference to a member of an incomplete ↵Paolo Carlini5-9/+27
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-29Avoid -Wunused-parameter warnings from testsuite utilityJonathan Wakely2-6/+5
* testsuite/util/testsuite_api.h: Remove names of unused parameters. From-SVN: r271741
2019-05-29PR libstdc++/85494 use rdseed and rand_s in std::random_deviceJonathan Wakely12-95/+490
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