- 06 Jan, 2019 8 commits
-
-
Move the C++17 std::filesystem::path definitions from the libstdc++fs.a archive to the main libstdc++ library. The path classes do not depend on any OS functions, so can be defined unconditionally on all targets (rather than depending on --enable-libstdcxx-filesystem-ts). The tests should pass on all targets too. PR libstdc++/86756 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Make various patterns for typeinfo and vtables less greedy. (GLIBCXX_3.4.26): Export symbols for std::filesystem::path. * src/c++17/Makefile.am: Add fs_path.cc and cow-fs_path.cc. * src/c++17/Makefile.in: Regenerate. * src/c++17/cow-fs_path.cc: Move src/filesystem/cow-std-path.cc to here, and change name of included file. * src/c++17/fs_path.cc: Move src/filesystem/std-path.cc to here. * src/filesystem/Makefile.am: Remove std-path.cc and cow-std-path.cc from sources. * src/filesystem/Makefile.in: Regenerate. * src/filesystem/cow-std-path.cc: Move to src/c++17/cow-fs_path.cc. * src/filesystem/std-path.cc: Move to src/c++17/fs_path.cc. * testsuite/27_io/filesystem/path/append/path.cc: Remove -lstdc++fs from dg-options and remove dg-require-filesystem-ts. * testsuite/27_io/filesystem/path/append/source.cc: Likewise. * testsuite/27_io/filesystem/path/assign/assign.cc: Likewise. * testsuite/27_io/filesystem/path/assign/copy.cc: Likewise. * testsuite/27_io/filesystem/path/compare/compare.cc: Likewise. * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise. * testsuite/27_io/filesystem/path/compare/path.cc: Likewise. * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise. * testsuite/27_io/filesystem/path/concat/path.cc: Likewise. * testsuite/27_io/filesystem/path/concat/strings.cc: Likewise. * testsuite/27_io/filesystem/path/construct/80762.cc: Likewise. * testsuite/27_io/filesystem/path/construct/copy.cc: Likewise. * testsuite/27_io/filesystem/path/construct/default.cc: Likewise. * testsuite/27_io/filesystem/path/construct/format.cc: Likewise. * testsuite/27_io/filesystem/path/construct/locale.cc: Likewise. * testsuite/27_io/filesystem/path/construct/range.cc: Likewise. * testsuite/27_io/filesystem/path/construct/string_view.cc: Likewise. * testsuite/27_io/filesystem/path/decompose/extension.cc: Likewise. * testsuite/27_io/filesystem/path/decompose/filename.cc: Likewise. * testsuite/27_io/filesystem/path/decompose/parent_path.cc: Likewise. * testsuite/27_io/filesystem/path/decompose/relative_path.cc: Likewise. * testsuite/27_io/filesystem/path/decompose/root_directory.cc: Likewise. * testsuite/27_io/filesystem/path/decompose/root_name.cc: Likewise. * testsuite/27_io/filesystem/path/decompose/root_path.cc: Likewise. * testsuite/27_io/filesystem/path/decompose/stem.cc: Likewise. * testsuite/27_io/filesystem/path/generation/normal.cc: Likewise. * testsuite/27_io/filesystem/path/generation/normal2.cc: Likewise. * testsuite/27_io/filesystem/path/generation/proximate.cc: Likewise. * testsuite/27_io/filesystem/path/generation/relative.cc: Likewise. * testsuite/27_io/filesystem/path/generic/generic_string.cc: Likewise. * testsuite/27_io/filesystem/path/itr/components.cc: Likewise. * testsuite/27_io/filesystem/path/itr/traversal.cc: Likewise. * testsuite/27_io/filesystem/path/modifiers/clear.cc: Likewise. * testsuite/27_io/filesystem/path/modifiers/make_preferred.cc: Likewise. * testsuite/27_io/filesystem/path/modifiers/remove_filename.cc: Likewise. * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc: Likewise. * testsuite/27_io/filesystem/path/modifiers/replace_filename.cc: Likewise. * testsuite/27_io/filesystem/path/modifiers/swap.cc: Likewise. * testsuite/27_io/filesystem/path/native/string.cc: Likewise. * testsuite/27_io/filesystem/path/nonmember/append.cc: Likewise. * testsuite/27_io/filesystem/path/nonmember/hash_value.cc: Likewise. * testsuite/27_io/filesystem/path/query/empty.cc: Likewise. * testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise. * testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise. * testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise. * testsuite/27_io/filesystem/path/query/has_relative_path.cc: Likewise. * testsuite/27_io/filesystem/path/query/has_root_directory.cc: Likewise. * testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise. * testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise. * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise. * testsuite/27_io/filesystem/path/query/is_absolute.cc: Likewise. * testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise. From-SVN: r267615
Jonathan Wakely committed -
The previous patch for PR 87431 assumed that initialing a scalar type could not throw, but it can obtain its value via a conversion operator, which could throw. This meant the variant could get into a valueless state, but the valueless_by_exception() member function would always return false. This patch fixes it by changing the emplace members to have strong exception safety when initializing a contained value of trivially copyable type. The _M_valid() member gets a corresponding change to always return true for trivially copyable types, not just scalar types. Strong exception safety (i.e. never becoming valueless) is achieved by only replacing the current contained value once any potentially throwing operations have completed. If constructing the new contained value can throw then a new std::variant object is constructed to hold it, and then move-assigned to *this (which won't throw). PR libstdc++/87431 * include/std/variant (_Variant_storage<true, _Types...>::_M_valid): Check is_trivially_copyable instead of is_scalar. (variant::emplace<N, Args>(Args&&...)): If construction of the new contained value can throw and its type is trivially copyable then construct into a temporary variant and move from it, to provide the strong exception safety guarantee. (variant::emplace<N, U, Args>(initializer_list<U>, Args&&...)): Likewise. * testsuite/20_util/variant/87431.cc: New test. * testsuite/20_util/variant/run.cc: Adjust test so that throwing conversion causes valueless state. From-SVN: r267614
Jonathan Wakely committed -
re PR tree-optimization/86020 (Performance regression in Eigen geometry.cpp test starting with r248334) PR tree-opt/86020 Revert: 2017-05-22 Jan Hubicka <hubicka@ucw.cz> * ipa-inline.c (edge_badness): Use inlined_time instead of inline_summaries->get. From-SVN: r267612
Jan Hubicka committed -
* opts.c (enable_fdo_optimizations): Enable version-loops-for-strides, loop-interchange, unrol-and-jam and tree-loop-distribution. * invoke.texi: Document newly enabled options. From-SVN: r267611
Jan Hubicka committed -
2019-01-06 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/88658 * gfortran.h: Add macro gfc_real_4_kind * simplify.c (simplify_min_max): Special case for the types of AMAX0, AMIN0, MAX1 and MIN1, which actually change the types of their arguments. 2019-01-06 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/88658 * gfortran.dg/min_max_type_2.f90: New test. From-SVN: r267609
Thomas Koenig committed -
PR c/88363 * c-c++-common/attributes-4.c (falloc_align_int128, falloc_size_int128): Guard with #ifdef __SIZEOF_INT128__. From-SVN: r267608
Jakub Jelinek committed -
This verifies that the <bits/extc++.h> header can be compiled with ASCII as the input character set. PR libstdc++/88607 * testsuite/17_intro/headers/c++1998/charset.cc: New test. * testsuite/17_intro/headers/c++2011/charset.cc: New test. * testsuite/17_intro/headers/c++2014/charset.cc: New test. * testsuite/17_intro/headers/c++2017/charset.cc: New test. * testsuite/17_intro/headers/c++2020/charset.cc: New test. From-SVN: r267607
Jonathan Wakely committed -
From-SVN: r267606
GCC Administrator committed
-
- 05 Jan, 2019 14 commits
-
-
* doc/invoke.texi (max-inline-insns-small): New parameters. * ipa-inline.c (want_early_inline_function_p): simplify. (want_inline_small_function_p): Fix pasto from previous patch; use max-inline-insns-small bound. * params.def (max-inline-insns-small): New param. * ipa-fnsummary.c (analyze_function_body): Initialize time/size variables correctly. From-SVN: r267603
Jan Hubicka committed -
In C++17 the clock used for filesystem::file_time_type is unspecified, allowing it to be chrono::system_clock. The C++2a draft requires it to be a distinct type, with additional member functions to convert to/from other clocks (either the system clock or UTC). In order to avoid an ABI change later, this patch defines a new distinct type now, which will be used for std::chrono::file_clock later. * include/bits/fs_fwd.h (__file_clock): Define new clock. (file_time_type): Redefine in terms of __file_clock. * src/filesystem/ops-common.h (file_time): Add FIXME comment about overflow. * src/filesystem/std-ops.cc (is_set(perm_options, perm_options)): Give internal linkage. (internal_file_lock): New helper type for accessing __file_clock. (do_copy_file): Use internal_file_lock to convert system time to file_time_type. (last_write_time(const path&, error_code&)): Likewise. (last_write_time(const path&, file_time_type, error_code&)): Likewise. From-SVN: r267602
Jonathan Wakely committed -
* doc/invoke.texi: Document max-inline-insns-size, uninlined-function-insns, uninlined-function-time, uninlined-thunk-insns and uninlined-thunk-time. * params.def: Add max-inline-insns-size, uninlined-function-insns, uninlined-function-time, uninlined-thunk-insns and uninlined-thunk-time. * ipa-fnsummary.c (compute_fn_summary, analyze_function_body): Use new parameters. * ipa-inline.c (can_inline_edge_by_limits_p, want_inline_small_function_p): Use new parameters. From-SVN: r267601
Jan Hubicka committed -
From-SVN: r267600
Jan Hubicka committed -
2019-01-05 Dominique d'Humieres <dominiq@gcc.gnu.org> * gcc.dg/plugin/plugindir1.c: Adjust dg-prune-output for Darwin. * gcc.dg/plugin/plugindir2.c: Likewise. * gcc.dg/plugin/plugindir3.c: Likewise. * gcc.dg/plugin/plugindir4.c: Likewise. From-SVN: r267599
Dominique d'Humieres committed -
2019-01-05 Janus Weil <janus@gcc.gnu.org> PR fortran/88009 * class.c (gfc_find_derived_vtab): Mark the _final component as artificial. (find_intrinsic_vtab): Ditto. Also add an extra check to avoid dereferencing a null pointer and adjust indentation. * resolve.c (resolve_fl_variable): Add extra check to avoid dereferencing a null pointer. Move variable declarations to local scope. (resolve_fl_procedure): Add extra check to avoid dereferencing a null pointer. * symbol.c (check_conflict): Suppress errors for artificial symbols. 2019-01-05 Janus Weil <janus@gcc.gnu.org> PR fortran/88009 * gfortran.dg/blockdata_10.f90: New test case. From-SVN: r267598
Janus Weil committed -
PR middle-end/82564 PR target/88620 * expr.c (expand_assignment): For calls returning VLA structures if to_rtx is not a MEM, force it into a stack temporary. * gcc.dg/nested-func-12.c: New test. * gcc.c-torture/compile/pr82564.c: New test. From-SVN: r267595
Jakub Jelinek committed -
PR debug/88635 * dwarf2out.c (const_ok_for_output_1): Reject MINUS that contains SYMBOL_REF, CODE_LABEL or UNSPEC in subexpressions of second argument. Reject PLUS that contains SYMBOL_REF, CODE_LABEL or UNSPEC in subexpressions of both operands. (mem_loc_descriptor): Handle UNSPEC if target hook acks it and all the subrtxes are CONSTANT_P. * config/i386/i386.c (ix86_const_not_ok_for_debug_p): Revert 2018-11-09 changes. * gcc.dg/debug/dwarf2/pr88635.c: New test. From-SVN: r267594
Jakub Jelinek committed -
2019-01-05 Dominique d'Humieres <dominiq@gcc.gnu.org> PR target/60563 Missing PR entry in the previous commit. From-SVN: r267593
Dominique d'Humieres committed -
2019-01-05 Dominique d'Humieres <dominiq@gcc.gnu.org> * g++.dg/ext/sync-4.C: Add dg-xfail-run-if for darwin. From-SVN: r267592
Dominique d'Humieres committed -
gcc/c-family/ChangeLog: PR c/88546 * c-attribs.c (handle_copy_attribute): Avoid copying attribute leaf. Handle C++ empty throw specification and C11 _Noreturn. (has_attribute): Also handle C11 _Noreturn. gcc/ChangeLog: PR c/88546 * attribs.c (decls_mismatched_attributes): Avoid warning for attribute leaf. gcc/testsuite/ChangeLog: PR c/88546 * g++.dg/ext/attr-copy.C: New test. * gcc.dg/attr-copy-4.c: Disable macro expansion tracking. * gcc.dg/attr-copy-6.c: New test. * gcc.dg/attr-copy-7.c: New test. From-SVN: r267591
Martin Sebor committed -
Traceback routines, e.g. callers and funcentry, may call __go_get_backtrace_state. If a profiling signal arrives while we are in the critical section of __go_get_backtrace_state, it tries to do a traceback, which also calls __go_get_backtrace_state, which tries to enter the same critical section and will deadlock. Prevent this deadlock by setting up runtime_in_callers before calling __go_get_backtrace_state. Found while investigating golang/go#29448. Will add a test in the next CL. Updates golang/go#29448. Reviewed-on: https://go-review.googlesource.com/c/156037 From-SVN: r267590
Ian Lance Taylor committed -
From-SVN: r267589
Jan Hubicka committed -
From-SVN: r267588
GCC Administrator committed
-
- 04 Jan, 2019 17 commits
-
-
The C++17 standard added some new members to std::basic_string, which were not previously instantiated in the library. This meant that the extern template declarations had to be disabled for C++17 mode. With this patch the new members are instantiated in the library and so the explicit instantiation declarations can be used for C++17. The new members added by C++2a are still not exported, and so the explicit instantiation declarations are still disabled for C++2a. * config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Make patterns less greedy for const member functions of std::basic_string. (GLIBCXX_3.4.26): Export member functions of std::basic_string added in C++17. * include/bits/basic_string.h (basic_string(__sv_wrapper, const A&)): Make non-standard constructor private. [!_GLIBCXX_USE_CXX11_ABI] (basic_string(__sv_wrapper, const A&)): Likewise. * include/bits/basic_string.tcc (std::string, std::wstring): Declare explicit instantiations for C++17 as well as earlier dialects. * src/c++17/Makefile.am: Add new source files. * src/c++17/Makefile.in: Regenerate. * src/c++17/cow-string-inst.cc: New file defining explicit instantiations for basic_string member functions added in C++17. * src/c++17/string-inst.cc: Likewise. From-SVN: r267585
Jonathan Wakely committed -
Add these constructors from C++11 which were missing from the COW basic_string. Additionally simplify the definitions of the basic_string::reference and basic_string::const_reference types as required by C++11. This allows filesystem::path::string<Allocator>() to be simplified, so that the same code is used for both basic_string implementations. * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export allocator-extended copy/move constructors for old std::basic_string. * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI] (basic_string::reference, basic_string::const_reference): Define as plain references for C++11 and later. (basic_string::basic_string()): Put constructor body outside preprocessor conditional groups. (basic_string::basic_string(basic_string&&)): Move _Alloc_hider instead of copying it. (basic_string::basic_string(const basic_string&, const _Alloc&)): Define. (basic_string::basic_string(basic_string&&, const _Alloc&)): Define. * include/bits/fs_path.h [!_GLIBCXX_USE_CXX11_ABI]: Remove special cases for old basic_string. * testsuite/21_strings/basic_string/cons/char/8.cc: Test allocator-extended constructors unconditionally. Add extra members to allocator type when using old string ABI. * testsuite/21_strings/basic_string/allocator/71964.cc: Enable test for old string ABI. * testsuite/21_strings/basic_string/cons/wchar_t/8.cc: Likewise. From-SVN: r267584
Jonathan Wakely committed -
gcc/c-family/ChangeLog: PR c/88363 * c-attribs.c (positional_argument): Also accept enumerated types. gcc/testsuite/ChangeLog: PR c/88363 * c-c++-common/attributes-4.c: New test. gcc/ChangeLog: PR c/88363 * doc/extend.texi (attribute alloc_align, alloc_size): Update. From-SVN: r267583
Martin Sebor committed -
This currently checks _GLIBCXX_USE_DUAL_ABI which is incorrect, as that can be true when _GLIBCXX_USE_CXX11_ABI == 0. The correct check would be _GLIBCXX_USE_CXX11_ABI == 1, but that's made redundant by the cxx11-abi effective target that the test requires. However, the test will fail if -fno-inline is used, so check __NO_INLINE__ instead. * testsuite/23_containers/list/61347.cc: Avoid spurious failure when -fno-inline added to test flags. From-SVN: r267582
Jonathan Wakely committed -
* gdbinit.in: Turn off pagination for the skip commands, restore it to previous state afterwards. From-SVN: r267581
Jakub Jelinek committed -
[PATCH][GCC][Aarch64] Change expected bfxil count in gcc.target/aarch64/combine_bfxil.c to 18 (PR/87763) gcc/testsuite/Changelog: 2019-01-04 Sam Tebbs <sam.tebbs@arm.com> PR gcc/87763 * gcc.target/aarch64/combine_bfxil.c: Change scan-assembler-times bfxil count to 18. From-SVN: r267579
Sam Tebbs committed -
This test started passing with the old ABI with r263808, so doesn't need to be marked XFAIL now. * testsuite/21_strings/basic_string/requirements/ explicit_instantiation/debug.cc: Remove XFAIL for old ABI. From-SVN: r267578
Jonathan Wakely committed -
* testsuite/27_io/filesystem/filesystem_error/copy.cc: Fix static assertion failures with old std::string ABI. From-SVN: r267577
Jonathan Wakely committed -
Using path::_List::erase(const_iterator) to remove a non-final component in path::lexically_normal() is a bug, because it leaves the following component with an incorrect _M_pos value. Instead of providing erase members that allow removing components from the middle, replace them with pop_back() and _M_erase_from(const_iterator) which only allow removing elements at the end. Most uses of erase are unaffected, because they only remove elements from the end anyway. The one use of erasure from the middle in lexically_normal() is replaced by calls to pop_back() and/or clearing the last component to leave it as an empty final filename. Also replace the "???" comment in lexically_normal() to document when that branch is taken. * include/bits/fs_path.h (path::_List::erase): Replace both overloads with ... (path::pop_back(), path::_M_erase_from(const_iterator)): New member functions that will only erase elements at the end. * src/filesystem/std-path.cc (path::_List::_Impl::pop_back()): Define. (path::_List::_Impl::_M_erase_from(const_iterator)): Define. (path::_List::operator=(const _List&)): Use _M_erase_from(p) instead of erase(p, end()). (path::_List::pop_back()): Define. (path::_List::_M_erase_from(const_iterator)): Define. (path::operator/=(const path&)): Use pop_back to remove last component and _M_erase_from to remove multiple components. (path::_M_append(basic_string_view<value_type>)): Likewise. (path::operator+=(const path&)): Likewise. (path::_M_concat(basic_string_view<value_type>)): Likewise. (path::remove_filename()): Likewise. (path::lexically_normal()): Use _List::_Impl iterators instead of path::iterator. Use pop_back to remove components from the end. Clear trailing filename, instead of using erase(const_iterator) to remove a non-final component. * testsuite/27_io/filesystem/path/generation/normal.cc: Test additional cases. * testsuite/27_io/filesystem/path/generation/normal2.cc: New test. From-SVN: r267576
Jonathan Wakely committed -
From-SVN: r267575
Eric Botcazou committed -
When erasing a trailing empty filename component, the output iterator was not decremented, causing the next component to be created at the wrong position. * src/filesystem/std-path.cc (path::operator+=(const path&)): Fix incorrect treatment of empty filename after trailing slash. * testsuite/27_io/filesystem/path/concat/path.cc: Test problem case. From-SVN: r267574
Jonathan Wakely committed -
These tests rely on inlining, so if -fno-inline is added to the compiler flags the tests fail. Use the predefined __NO_INLINE__ macro to detect that situation, and don't bother testing the move assignment. * testsuite/21_strings/basic_string/modifiers/assign/char/ move_assign_optim.cc: Avoid spurious failure when -fno-inline added to test flags. * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/ move_assign_optim.cc: Likewise. From-SVN: r267573
Jonathan Wakely committed -
2019-01-04 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/48543 * gfortran.dg/const_chararacter_merge.f90: Actually remove. * gfortran.dg/merge_char_const.f90: Restore. From-SVN: r267572
Thomas Koenig committed -
PR target/88594 * config/i386/i386.c (ix86_expand_divmod_libfunc): Use mode instead of GET_MODE (opN) as modes of the libcall arguments. * gcc.dg/pr88594.c: New test. From-SVN: r267571
Jakub Jelinek committed -
While their use for masking is indeed restricted to %k1...%k7, use as "normal" insn operands also permits %k0. Remove the unnecessary limitations, requiring quite a few testsuite adjustments. Oddly enough some AVX512{F,DQ} test cases already check for %k[0-7], while others did permit {%k0} - where they get touched here anyway this gets fixed at the same time. From-SVN: r267570
Jan Beulich committed -
gcc/ChangeLog: * calls.c (maybe_warn_nonstring_arg): Avoid assuming maxlen is set. gcc/testsuite/ChangeLog: * gcc.dg/Wstringop-truncation-6.c: New test. From-SVN: r267569
Martin Sebor committed -
From-SVN: r267568
GCC Administrator committed
-
- 03 Jan, 2019 1 commit
-
-
2019-01-03 Jonathan Wakely <jwakely@redhat.com> Jakub Jelinek <jakub@redhat.com> PR libstdc++/88607 * include/experimental/memory: Replace UTF-8 quote characters. * include/std/future: Replace UTF-8 "em dash" characters. Co-Authored-By: Jakub Jelinek <jakub@redhat.com> From-SVN: r267565
Jonathan Wakely committed
-