-
Notifications
You must be signed in to change notification settings - Fork 4.6k
gcc 7 #23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: gcc-7-branch
Are you sure you want to change the base?
gcc 7 #23
Conversation
WTF is this??? We already have GCC 7.x. Wth are you doing?? |
GCC does NOT accept pull requests through Github. You're only wasting your time. |
The more changes you make to the diff, the more chance you have inserted a compiler backdoor/other malicious things. Please... |
For floating point types, the question is what MAX(a, NaN) or MIN(a, NaN) should return (where "a" is a normal number). There are valid usecases for returning either one, but the Fortran standard doesn't specify which one should be chosen. Also, there is no consensus among other tested compilers. In short, it's a mess. So lets just do whatever is fastest, which is using MAX_EXPR/MIN_EXPR which are not defined to do anything in particular if one of the operands is a NaN. gcc/fortran/ChangeLog: 2018-08-21 Janne Blomqvist <[email protected]> * trans-intrinsic.c (gfc_conv_intrinsic_minmax): Use MAX_EXPR/MIN_EXPR unconditionally for real arguments. * gfortran.texi (Compiler Characteristics): Document MAX/MIN behavior wrt NaN. gcc/testsuite/ChangeLog: 2018-08-21 Janne Blomqvist <[email protected]> * gfortran.dg/nan_1.f90: Remove tests that test MAX/MIN with NaNs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263751 138bc75d-0d04-0410-961f-82ee72b054a4
P0646R1 Improving the Return Value of Erase-Like Algorithms I * include/debug/forward_list (forward_list::__remove_return_type): Define typedef as size_type or void, according to __cplusplus value. (_GLIBCXX_FWDLIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or empty, according to __cplusplus value. (_GLIBCXX20_ONLY): Define macro. (forward_list::remove, forward_list::unique): Use typedef and macro to change return type and add abi-tag for C++2a. Return number of removed elements for C++2a. (forward_list::remove_if<Pred>, forward_list::unique<BinPred>): Use typedef to change return type for C++2a. Return number of removed elements for C++2a. * include/debug/list (list::__remove_return_type): Define typedef as size_type or void, according to __cplusplus value. (_GLIBCXX_LIST_REMOVE_RETURN_TYPE_TAG): Define macro as abi-tag or empty, according to __cplusplus value. (_GLIBCXX20_ONLY): Define macro. (list::remove, list::unique): Use typedef and macro to change return type and add abi-tag for C++2a. Return number of removed elements for C++2a. (list::remove_if<Predicate>, list::unique<BinaryPredicate>): Use typedef to change return type for C++2a. Return number of removed elements for C++2a. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263752 138bc75d-0d04-0410-961f-82ee72b054a4
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263758 138bc75d-0d04-0410-961f-82ee72b054a4
for gcc/ChangeLog * tree-ssa-reassoc.c (is_reassociable_op): Fix cut&pasto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263759 138bc75d-0d04-0410-961f-82ee72b054a4
for gcc/ChangeLog * config/rs6000/rs6000.c (SMALL_DATA_RELOC, SMALL_DATA_REG): Add a comment about how uses of r2 for .sdata2 come about. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263760 138bc75d-0d04-0410-961f-82ee72b054a4
PR tree-optimization/86945 * tree-cfg.c (generate_range_test): Use unsigned arithmetic. * gcc.dg/torture/pr86945.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263761 138bc75d-0d04-0410-961f-82ee72b054a4
PR tree-optimization/86988 * tree-vrp.c (vrp_prop::check_mem_ref): Bail out on VLAs. * g++.dg/pr86988.C: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263762 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ PR bootstrap/81033 PR target/81733 PR target/52795 * gcc/dwarf2out.c (FUNC_SECOND_SECT_LABEL): New. (dwarf2out_switch_text_section): Generate a local label for the second function sub-section and apply it as the second FDE start label. * gcc/final.c (final_scan_insn_1): Emit second FDE label after the second sub-section start. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263763 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ * config/i386/i386.c (ix86_output_addr_diff_elt): Move the MACH-O specific test before the one for HAVE_AS_GOTOFF_IN_DATA. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263764 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ * config/darwin10.h (LINK_GCC_C_SEQUENCE_SPEC): Adjust to use the Darwin10-specific unwinder-shim. * config/darwin12.h (LINK_GCC_C_SEQUENCE_SPEC): Remove. * config/rs6000/darwin.h (DARWIN_CRT1_SPEC, DARWIN_DYLIB1_SPEC): New to cater for Darwin10 Rosetta. libgcc/ * config/unwind-dw2-fde-darwin.c (_darwin10_Unwind_FindEnclosingFunction): move from here ... * config/darwin10-unwind-find-enc-func.c: … to here. * config/t-darwin: Build Darwin10 unwinder shim crt. * libgcc/config.host: Add the Darwin10 unwinder shim. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263765 138bc75d-0d04-0410-961f-82ee72b054a4
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263766 138bc75d-0d04-0410-961f-82ee72b054a4
PR libstdc++/77854 * doc/xml/manual/status_cxx1998.xml: Document size_type and difference_type for containers. * doc/html/*: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263767 138bc75d-0d04-0410-961f-82ee72b054a4
…sion when there's no plugin built. gcc/ PR other/704 * gcc-ar.c (main): Don’t try to invoke the plug-in if we’re not building it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263768 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/testsuite * gcc.dg/lto/pr85248_0.c (test_alias): Stringify __USER_LABEL_PREFIX__. (test_noreturn): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263769 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ * config/darwin.h (LINK_COMMAND_SPEC_A): Sync LTO options with the sequence used in gcc/gcc.c. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263770 138bc75d-0d04-0410-961f-82ee72b054a4
get_load_store_type & co were testing STMT_VINFO_STRIDED_P on individual statements in a group instead of the first. This has no effect on its own, but is needed by a later patch. 2018-08-22 Richard Sandiford <[email protected]> gcc/ * tree-vect-stmts.c (get_group_load_store_type) (get_load_store_type): Only test STMT_VINFO_STRIDED_P for the first statement in a group. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263771 138bc75d-0d04-0410-961f-82ee72b054a4
We could vectorise: for (...) { a[0] = ...; a[1] = ...; a[2] = ...; a[3] = ...; a += stride; } (including the case when stride == 8) but not: for (...) { a[0] = ...; a[1] = ...; a[2] = ...; a[3] = ...; a += 8; } (where the stride is always 8). The former was treated as a "grouped and strided" store, while the latter was treated as a grouped store with gaps, which we don't support. This patch makes us treat groups of stores with gaps at the end as strided groups too. I tried to go through all uses of STMT_VINFO_STRIDED_P and all vector uses of DR_STEP to see whether there were any hard-baked assumptions, but couldn't see any. I wondered whether we should relax: /* We do not have to consider dependences between accesses that belong to the same group, unless the stride could be smaller than the group size. */ if (DR_GROUP_FIRST_ELEMENT (stmtinfo_a) && (DR_GROUP_FIRST_ELEMENT (stmtinfo_a) == DR_GROUP_FIRST_ELEMENT (stmtinfo_b)) && !STMT_VINFO_STRIDED_P (stmtinfo_a)) return false; for cases in which the step is constant and the absolute step is known to be greater than the group size, but data dependence analysis should already return chrec_known for those cases. The new test is a version of vect-avg-15.c with the variable step replaced by a constant one. A natural follow-on would be to do the same for groups with gaps in the middle: /* Check that the distance between two accesses is equal to the type size. Otherwise, we have gaps. */ diff = (TREE_INT_CST_LOW (DR_INIT (data_ref)) - TREE_INT_CST_LOW (prev_init)) / type_size; if (diff != 1) { [...] if (DR_IS_WRITE (data_ref)) { if (dump_enabled_p ()) dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, "interleaved store with gaps\n"); return false; } But I think we should do that separately and see what the fallout from this change is first. 2018-08-22 Richard Sandiford <[email protected]> gcc/ * tree-vect-data-refs.c (vect_analyze_group_access_1): Convert grouped stores with gaps to a strided group. gcc/testsuite/ * gcc.dg/vect/vect-avg-16.c: New test. * gcc.dg/vect/slp-37.c: Expect the loop to be vectorized. * gcc.dg/vect/vect-strided-u8-i8-gap4.c, * gcc.dg/vect/vect-strided-u8-i8-gap4-big-array.c: Likewise for the second loop in main1. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263772 138bc75d-0d04-0410-961f-82ee72b054a4
This patch is the first part of the fix for PR 86725. We would treat x_1 in: outer1: x_1 = PHI <x_4(outer2), ...>; ... inner: x_2 = ...x_1...; ... x_3 = ...; ... outer2: x_4 = PHI <x_3(inner)>; ... as a double reduction without checking what kind of statement x_2 is. In practice it has to be a phi, since for other x_2, x_1 would simply be a loop invariant that gets used for every inner loop iteration. The idea with doing this patch first is that, by checking x_2 really is a phi, we can hand off the validation of the rest of the reduction to the phi analysis in the inner loop. The test case is a variant of the one in the PR. 2018-08-22 Richard Sandiford <[email protected]> gcc/ PR tree-optimization/86725 * tree-vect-loop.c (vect_is_simple_reduction): When treating an outer loop phi as a double reduction, make sure that the single user of the phi result is an inner loop phi. gcc/testsuite/ PR tree-optimization/86725 * gcc.dg/vect/no-scevccp-pr86725-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263773 138bc75d-0d04-0410-961f-82ee72b054a4
This patch is the second part of the fix for PR 86725. The problem in the original test is that for: outer1: x_1 = PHI <x_4(outer2), ...>; ... inner: x_2 = PHI <x_1(outer1), x_3(...)>; ... x_3 = ...; ... outer2: x_4 = PHI <x_3(inner)>; ... there are corner cases in which it is possible to classify the inner phi as an induction but not the outer phi. The -4.c test is a more direct example. After failing to classify x_1 as an induction, we go on to classify it as a double reduction (which is basically true). But we still classified the inner phi as an induction rather than as part of a reduction, leading to an ICE when trying to vectorise the outer phi. We analyse the phis for outer loops first, so the simplest fix is not to classify the phi as an induction if outer loop analysis said that it should be a reduction. The -2.c test is from the original PR. The -3.c test is a version in which "wo" really is used a reduction; this was already correctly rejected, but for the wrong reason ("inner-loop induction only used outside of the outer vectorized loop"). The -4.c test is another way of tickling the original problem without relying on the undefinedness of signed overflow. The -5.c test shows an (uninteresting) example in which the patch prevents a spurious failure to vectorise the outer loop. 2018-08-22 Richard Sandiford <[email protected]> gcc/ PR tree-optimization/86725 * tree-vect-loop.c (vect_inner_phi_in_double_reduction_p): New function. (vect_analyze_scalar_cycles_1): Check it. gcc/testsuite/ PR tree-optimization/86725 * gcc.dg/vect/no-scevccp-pr86725-2.c: New test. * gcc.dg/vect/no-scevccp-pr86725-3.c: Likewise. * gcc.dg/vect/no-scevccp-pr86725-4.c: Likewise. * gcc.dg/vect/no-scevccp-pr86725-5.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263774 138bc75d-0d04-0410-961f-82ee72b054a4
When combine splits a resulting parallel into its two SETs, it has to place one at i2, and the other stays at i3. This does not work if the destination of the SET that will be placed at i2 is modified between i2 and i3. This patch fixes it. * combine.c (try_combine): Do not allow splitting a resulting PARALLEL of two SETs into those two SETs, one to be placed at i2, if that SETs destination is modified between i2 and i3. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263776 138bc75d-0d04-0410-961f-82ee72b054a4
…R tests gfortran now always uses MAX_EXPR/MIN_EXPR for MAX/MIN intrinsics, so the AArch64 specific FMAX/FMIN tests are no longer valid. 2018-08-22 Szabolcs Nagy <[email protected]> * gfortran.dg/max_fmax_aarch64.f90: Rename to... * gfortran.dg/max_expr.f90: ...this. * gfortran.dg/min_fmin_aarch64.f90: Rename to... * gfortran.dg/min_expr.f90: ...this. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263778 138bc75d-0d04-0410-961f-82ee72b054a4
2018-08-22 Segher Boessenkool <[email protected]> PR rtl-optimization/86771 * combine.c (try_combine): Do not allow splitting a resulting PARALLEL of two SETs into those two SETs, one to be placed at i2, if that SETs destination is modified between i2 and i3. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263780 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/testsuite/ChangeLog: PR middle-end/87052 * gcc.dg/pr87052.c: New test. * gcc.dg/tree-ssa/dump-3.c: Adjust. gcc/ChangeLog: PR middle-end/87052 * tree-pretty-print.c (pretty_print_string): Add argument. (dump_generic_node): Call to pretty_print_string with string size. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263781 138bc75d-0d04-0410-961f-82ee72b054a4
2018-08-22 Janus Weil <[email protected]> PR fortran/86888 * decl.c (gfc_match_data_decl): Allow allocatable components of indirectly recursive type. * resolve.c (resolve_component): Remove two errors messages ... (resolve_fl_derived): ... and replace them by a new one. 2018-08-22 Janus Weil <[email protected]> PR fortran/86888 * gfortran.dg/alloc_comp_basics_6.f90: Update an error message and add an additional case. * gfortran.dg/alloc_comp_basics_7.f90: New test case. * gfortran.dg/class_17.f03: Update error message. * gfortran.dg/class_55.f90: Ditto. * gfortran.dg/dtio_11.f90: Update error messages. * gfortran.dg/implicit_actual.f90: Add an error message. * gfortran.dg/typebound_proc_12.f90: Update error message. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263782 138bc75d-0d04-0410-961f-82ee72b054a4
2018-08-22 Andrew Benson <[email protected]> * MAINTAINERS: Add self to write after approval list. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263783 138bc75d-0d04-0410-961f-82ee72b054a4
* module.c (load_generic_interfaces): Move call to find_symbol() so that only occurs if actually needed. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263784 138bc75d-0d04-0410-961f-82ee72b054a4
PR libstdc++/68222 * include/debug/safe_iterator.h (_Safe_iterator<_It, _Sq, _Cat>): Add category template parameter. (_Safe_iterator<>::_Const_iterator): Remove. (_Safe_iterator<>::_IsConstant): New. (_Safe_iterator<>::_OtherIterator): New. (_Safe_iterator<_It, _Sq, _Cat>::_Safe_iterator<_MutIte>( const _Safe_iterator<_MutIte, _Sq, _Cat>&)): Add _IsConstant::__value in __gnu_cxx::__enable_if condition. (_Safe_iterator<_It, _Sq, _Cat>::_M_get_distance_to): New. (_Safe_iterator<_It, _Sq, _Cat>::_M_get_distance_from_begin): New. (_Safe_iterator<_It, _Sq, _Cat>::_M_get_distance_to_end): New. (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag>): New. (_Safe_iterator<_It, _Sq, _Cat>::operator--()): Move... (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag> ::operator--()): ...here. (_Safe_iterator<_It, _Sq, _Cat>::operator--(int)): Move... (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag> ::operator--(int)): ...here. (_Safe_iterator<_It, _Sq, _Cat>::_M_decrementable()): Move... (_Safe_iterator<_It, _Sq, std::bidirectional_iterator_tag> ::_M_decrementable()): ...here. (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag>): New. (_Safe_iterator<_It, _Sq, _Cat>::operator[](const difference_type&)): Move... (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag> ::operator[](const difference_type&)): ...here. (_Safe_iterator<_It, _Sq, _Cat>::operator+=(const difference_type&)): Move... (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag> ::operator+=(const difference_type&)): ...here. (_Safe_iterator<_It, _Sq, _Cat>::operator+(const difference_type&)): Move... (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag> ::operator+(const difference_type&)): ...here. (_Safe_iterator<_It, _Sq, _Cat>::operator-=(const difference_type&)): Move... (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag> ::operator-=(const difference_type&)): ...here. (_Safe_iterator<_It, _Sq, _Cat>::operator-(const difference_type&)): Move... (_Safe_iterator<_It, _Sq, std::random_access_iterator_tag> ::operator-(const difference_type&)): ...here. (operator<(const _Safe_iterator<>&, const _Safe_iterator<>&)): Constraint to random access iterators. (operator<=(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise. (operator>(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise. (operator>=(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise. (operator-(const _Safe_iterator<>&, const _Safe_iterator<>&)): Likewise. (operator+(const difference_type&, const _Safe_iterator<>&)): Likewise. (__check_dereferenceable(const _Safe_iterator<>&)): Remove. (__get_distance): Remove. (__get_distance_from_begin): Remove. (__get_distance_to_end): Remove. (struct __is_safe_random_iterator<_Safe_iterator<>>): Remove partial specialization. (__base(const _Safe_iterator<>&, std::input_iterator_tag)): Remove. (__base(const _Safe_iterator<>&, std::random_access_iterator_tag)): Remove. (__base(const _Safe_iterator<>&)): Constraint to random access iterator. * include/debug/safe_iterator.tcc (_Safe_iterator<>::_M_get_distance_from_begin()): New. (_Safe_iterator<>::_M_get_distance_to_end()): New. (_Safe_iterator<>::_M_get_distance_to(const _Safe_iterator<>&)): New. (_Safe_iterator<_It, _Seq, std::random_access_iterator_tag> ::_M_valid_range): New. * include/debug/safe_local_iterator.h (_Safe_local_iterator<>::_Const_local_iterator): Remove. (_Safe_local_iterator<>::_IsConstant): New. (_Safe_local_iterator<>::_OtherIterator): New. (_Safe_local_iterator<_It, _Cont>::_Safe_local_iterator<_MutIte, _Cont>( const _Safe_local_iterator<_MutIte, _Seq>&)): Add _IsConstant::__value in __gnu_cxx::__enable_if condition. If singular compare base iterator with _MutIte rather than _It. (_Safe_local_iterator<>::_S_constant): Make constexpr. (_Safe_local_iterator<>::_M_get_distance_to): New. (__check_dereferenceable(const _Safe_local_iterator<>&)): Remove. (__get_distance(const _Safe_local_iterator<>&, const _Safe_local_iterator<>&, std::input_iterator_tag)): Remove. (__valid_range(const _Safe_local_iterator<>&, const _Safe_local_iterator<>&)): New. * include/debug/safe_local_iterator.tcc (_Safe_local_iterator<>::_M_get_distance_to): New. * include/debug/deque (std::__debug::deque<>): Add ::__gnu_debug::_Safe_iterator<> friend declaration. * include/debug/forward_list (std::__debug::forward_list<>): Likewise. * include/debug/list (std::__debug::list<>): Likewise. * include/debug/map.h (std::__debug::map<>): Likewise. * include/debug/multimap.h (std::__debug::multimap<>): Likewise. * include/debug/set.h (std::__debug::set<>): Likewise. * include/debug/multiset.h (std::__debug::multiset<>): Likewise. * include/debug/string (std::__debug::basic_string<>): Likewise. * include/debug/unordered_map (std::__debug::unordered_map<>): Likewise and add ::__gnu_debug::_Safe_local_iterator<> friend declaration. (std::__debug::unordered_multimap<>): Likewise. * include/debug/unordered_set (std::__debug::unordered_set<>): Likewise. (std::__debug::unordered_multiset<>): Likewise. * include/debug/formatter.h: Adapt. * include/debug/helper_functions.h (__gnu_debug::_Safe_local_iterator<>): Add declaration. (__get_distance<_Ite>(_Ite, _Ite, std::random_access_iterator_tag): Pass parameter by copy. (__get_distance<_Ite>(_Ite, _Ite, std::input_iterator_tag): Likewise. (__get_distance<_Ite>(_Ite, _Ite): Likewise. (__valid_range_aux<_Integral>): Pass _Integral by copy. (__valid_range<_InputIterator>): Pass _InputIterator by copy. (__valid_range<>(const _Safe_iterator<>&, const _Safe_iterator<>&, typename _Distance_traits<>::__type&)): Declare. (__valid_range(const _Safe_local_iterator<>&, const _Safe_local_iterator<>&, typename _Distance_traits<>::__type&)): Declare. (__valid_range<>(const _Safe_iterator<>&, const _Safe_iterator<>&)): Declare. (__valid_range(const _Safe_local_iterator<>&, const _Safe_local_iterator<>&)): Declare. (__can_advance): Adapt. (struct __is_safe_random_iterator<>): Remove. (struct _SIter_base<>): Remove. * include/debug/functions.h: Include <bits/stl_iterator.h>. (__check_dereferenceable): Remove. (__foreign_iterator_aux4, __foreign_iterator_aux3): Adapt. (__foreign_iterator_aux2, __foreign_iterator_aux): Adapt. (__foreign_iterator): Adapt. * include/debug/stl_iterator.h (__is_safe_random_iterator<std::reverse_iterator<>>): Remove. (__base(const std::reverse_iterator<_Safe_iterator<_It, _Sq>)): Constraint for random access iterators. (__niter_base): Adapt. * testsuite/util/testsuite_containers.h: Include <bits/boost_concept_check.h>. (iterator_concept_checks<_It, _Mutable, _Category>): New. (citerator<_Cont>::forward_members::forward_members()): Instantiate latter for container iterator and const_iterator. * testsuite/23_containers/list/68222_neg.cc: New. * testsuite/23_containers/vector/cons/destructible_debug_neg.cc: Adapt line number. * testsuite/23_containers/unordered_set/debug/debug_functions.cc: (test01): Remove. * testsuite/23_containers/vector/debug/debug_functions.cc (test01): Remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263786 138bc75d-0d04-0410-961f-82ee72b054a4
2018-09-04 Martin Liska <[email protected]> * genmatch.c (output_line_directive): Add new argument fnargs. (dt_simplify::gen_1): Encapsulate dump within __builtin_expect. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264084 138bc75d-0d04-0410-961f-82ee72b054a4
* wide-int-range.h (wide_int_range_convert): New. * tree-vrp.c (extract_range_from_unary_expr): Abstract wide int code into wide_int_range_convert. (extract_range_into_wide_ints): Do not munge anti range constants into the entire domain. Just return the range back. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264085 138bc75d-0d04-0410-961f-82ee72b054a4
PR target/86744 * gcc.target/i386/addr-sel-1.c: Don't xfail "b\\+1" scan. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264086 138bc75d-0d04-0410-961f-82ee72b054a4
NAND is ~(a1 & a2), but xtensa_expand_atomic does ~a1 & a2. That fixes libatomic tests atomic-op-{1,2}. gcc/ 2018-09-04 Max Filippov <[email protected]> * config/xtensa/xtensa.c (xtensa_expand_atomic): Reorder AND and XOR operations in NAND case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264087 138bc75d-0d04-0410-961f-82ee72b054a4
* common/config/i386/i386-common.c (OPTION_MASK_ISA_XSAVEOPT_SET, OPTION_MASK_ISA_XSAVES_SET, OPTION_MASK_ISA_XSAVEC_SET): Use OPTION_MASK_ISA_XSAVE_SET instead of OPTION_MASK_ISA_XSAVE. (OPTION_MASK_ISA_XSAVE_UNSET): Add OPTION_MASK_ISA_XSAVES_UNSET and OPTION_MASK_ISA_XSAVEC_UNSET. * gcc.target/i386/pr87198.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264088 138bc75d-0d04-0410-961f-82ee72b054a4
r251028 commit cd557ff Author: hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu Aug 10 15:29:05 2017 +0000 i386: Don't use frame pointer without stack access When there is no stack access, there is no need to use frame pointer even if -fno-omit-frame-pointer is used and caller's frame pointer is unchanged. frame pointer may not be available even if -fno-omit-frame-pointer is used. When this happened, arg pointer may be eliminated by hard frame pointer. Since hard frame pointer is encoded with DW_OP_fbreg which uses the DW_AT_frame_base attribute, not hard frame pointer directly, we should allow hard frame pointer when generating DWARF info even if frame pointer isn't used. gcc/ PR debug/86593 * dwarf2out.c (based_loc_descr): Allow hard frame pointer even if frame pointer isn't used. (compute_frame_pointer_to_fb_displacement): Likewise. gcc/testsuite/ PR debug/86593 * g++.dg/pr86593.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264096 138bc75d-0d04-0410-961f-82ee72b054a4
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264100 138bc75d-0d04-0410-961f-82ee72b054a4
* except.c (build_throw): Use it. Use CP_TYPE_VOLATILE_P. * typeck.c (treat_lvalue_as_rvalue_p): No longer static. Add PARM_OK parameter. (maybe_warn_pessimizing_move): Adjust treat_lvalue_as_rvalue_p call. (check_return_expr): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264101 138bc75d-0d04-0410-961f-82ee72b054a4
2018-09-05 Martin Liska <[email protected]> PR target/87164 * config/rs6000/rs6000.opt: Mark the option as Deprecated. * optc-gen.awk: Allow 'Var' for Deprecated options in order to generate a MASK value. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264111 138bc75d-0d04-0410-961f-82ee72b054a4
2018-09-05 Martin Liska <[email protected]> * doc/gcov.texi: Update documentation of humar readable mode. * gcov.c (format_count): Print one decimal place, it provides more fine number of situations like '1G' vs. '1.4G'. 2018-09-05 Martin Liska <[email protected]> * g++.dg/gcov/loop.C: Update test to support new format. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264112 138bc75d-0d04-0410-961f-82ee72b054a4
2018-09-05 Martin Liska <[email protected]> PR testsuite/87216 * gcc.dg/tree-prof/pr59521-3.c: Update scanned pattern to support Dawring names. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264113 138bc75d-0d04-0410-961f-82ee72b054a4
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264114 138bc75d-0d04-0410-961f-82ee72b054a4
This is a rewrite of the tag collision avoidance patch that Kugan had written as a machine reorg pass back in February. The falkor hardware prefetching system uses a combination of the source, destination and offset to decide which prefetcher unit to train with the load. This is great when loads in a loop are sequential but sub-optimal if there are unrelated loads in a loop that tag to the same prefetcher unit. This pass attempts to rename the desination register of such colliding loads using routines available in regrename.c so that their tags do not collide. This shows some performance gains with mcf and xalancbmk (~5% each) and will be tweaked further. The pass is placed near the fag end of the pass list so that subsequent passes don't inadvertantly end up undoing the renames. 2018-07-02 Siddhesh Poyarekar <[email protected]> Kugan Vivekanandarajah <[email protected]> * config/aarch64/falkor-tag-collision-avoidance.c: New file. * config.gcc (extra_objs): Build it. * config/aarch64/t-aarch64 (falkor-tag-collision-avoidance.o): Likewise. * config/aarch64/aarch64-passes.def (pass_tag_collision_avoidance): New pass. * config/aarch64/aarch64.c (qdf24xx_tunings): Add AARCH64_EXTRA_TUNE_RENAME_LOAD_REGS to tuning_flags. (aarch64_classify_address): Remove static qualifier. (aarch64_address_info, aarch64_address_type): Move to... * config/aarch64/aarch64-protos.h: ... here. (make_pass_tag_collision_avoidance): New function. * config/aarch64/aarch64-tuning-flags.def (rename_load_regs): New tuning flag. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264115 138bc75d-0d04-0410-961f-82ee72b054a4
PR bootstrap/87225 * tree-vect-stmts.c (vectorizable_simd_clone_call): Fix bogus return. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264116 138bc75d-0d04-0410-961f-82ee72b054a4
https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00249.html cp/ PR c++/87185 * lambda.c (prune_lambda_captures): Protect against const_vars.get returning NULL. testsuite/ PR c++/87185 * g++.dg/pr87185.C: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264118 138bc75d-0d04-0410-961f-82ee72b054a4
https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01966.html PR c++/87137 * stor-layout.c (place_field): Scan forwards to check last bitfield when ms_bitfield_placement is in effect. gcc/testsuite/ * g++.dg/abi/pr87137.C: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264119 138bc75d-0d04-0410-961f-82ee72b054a4
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264120 138bc75d-0d04-0410-961f-82ee72b054a4
PR tree-optimization/87217 * tree-ssa-sccvn.c (vuse_valueize): New. (vn_reference_lookup_pieces): Use it. (vn_reference_lookup): Likewise. * gfortran.dg/pr87217.f: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264121 138bc75d-0d04-0410-961f-82ee72b054a4
2018-09-05 Martin Liska <[email protected]> PR tree-optimization/87205 * tree-switch-conversion.c (pass_lower_switch::execute): Group cases for switch statements. 2018-09-05 Martin Liska <[email protected]> PR tree-optimization/87205 * gcc.dg/tree-ssa/pr87205-2.c: New test. * gcc.dg/tree-ssa/pr87205.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264124 138bc75d-0d04-0410-961f-82ee72b054a4
PR bootstrap/87134 * tree-ssa-sccvn.c (rpo_elim::eliminate_push_avail): Make sure to zero-init the emplaced vec. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264125 138bc75d-0d04-0410-961f-82ee72b054a4
This patch aims to optimise sequences involving uses of 1.0 / sqrt (a) under -freciprocal-math and -funsafe-math-optimizations. In particular consider: x = 1.0 / sqrt (a); r1 = x * x; // same as 1.0 / a r2 = a * x; // same as sqrt (a) If x, r1 and r2 are all used further on in the code, this can be transformed into: tmp1 = 1.0 / a tmp2 = sqrt (a) tmp3 = tmp1 * tmp2 x = tmp3 r1 = tmp1 r2 = tmp2 A bit convoluted, but this saves us one multiplication and, more importantly, the sqrt and division are now independent. This also allows optimisation of a subset of these expressions. For example: x = 1.0 / sqrt (a) r1 = x * x can be transformed to r1 = 1.0 / a, eliminating the sqrt if x is not used anywhere else. And similarly: x = 1.0 / sqrt (a) r1 = a * x can be transformed to sqrt (a) eliminating the division. For the testcase: double res, res2, tmp; void foo (double a, double b) { tmp = 1.0 / __builtin_sqrt (a); res = tmp * tmp; res2 = a * tmp; } We now generate for aarch64 with -Ofast: foo: fmov d2, 1.0e+0 adrp x2, res2 fsqrt d1, d0 adrp x1, res fdiv d0, d2, d0 adrp x0, tmp str d1, [x2, #:lo12:res2] fmul d1, d1, d0 str d0, [x1, #:lo12:res] str d1, [x0, #:lo12:tmp] ret where before it generated: foo: fsqrt d2, d0 fmov d1, 1.0e+0 adrp x1, res2 adrp x2, tmp adrp x0, res fdiv d1, d1, d2 fmul d0, d1, d0 fmul d2, d1, d1 str d1, [x2, #:lo12:tmp] str d0, [x1, #:lo12:res2] str d2, [x0, #:lo12:res] ret As you can see, the new sequence has one fewer multiply and the fsqrt and fdiv are independent. * tree-ssa-math-opts.c (is_mult_by): New function. (is_square_of): Use the above. (optimize_recip_sqrt): New function. (pass_cse_reciprocals::execute): Use the above. * gcc.dg/recip_sqrt_mult_1.c: New test. * gcc.dg/recip_sqrt_mult_2.c: Likewise. * gcc.dg/recip_sqrt_mult_3.c: Likewise. * gcc.dg/recip_sqrt_mult_4.c: Likewise. * gcc.dg/recip_sqrt_mult_5.c: Likewise. * g++.dg/recip_sqrt_mult_1.C: Likewise. * g++.dg/recip_sqrt_mult_2.C: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264126 138bc75d-0d04-0410-961f-82ee72b054a4
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264127 138bc75d-0d04-0410-961f-82ee72b054a4
A branch with a name matching scan-assembler pattern triggers inappropriate FAIL. E.g. branch fixups-testsuite and - gcc.target/i386/pr65871-?.c (scan-assembler-not "test") - gcc.target/i386/pr41442.c (scan-assembler-times "test|cmp" 2) etc. This is a recurring problem as can be seen by some -fno-ident additions by commits from e.g. Michael Meissner over the years: builtins-58.c, powerpc/pr46728-?.c The patch below adds -fno-ident if a testcase contains one of scan-assembler, scan-assembler-not or scan-assembler-times. Regression tested on x86_64-unknown-linux on a fixups-testsuite branch where it fixes several false FAILs without regressions. gcc/testsuite/ChangeLog 2016-06-18 Bernhard Reutner-Fischer <[email protected]> PR testsuite/52665 * lib/gcc-dg.exp (gcc-dg-test-1): Iterate over _required_options. * lib/target-supports.exp (scan-assembler_required_options, scan-assembler-not_required_options, scan-assembler-times_required_options): Add -fno-ident. * lib/scanasm.exp (scan-assembler-times): Fix error message. * c-c++-common/ident-0a.c: New test. * c-c++-common/ident-0b.c: New test. * c-c++-common/ident-1a.c: New test. * c-c++-common/ident-1b.c: New test. * c-c++-common/ident-2a.c: New test. * c-c++-common/ident-2b.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264128 138bc75d-0d04-0410-961f-82ee72b054a4
(truncdfsf2_with_temp): Ditto. (truncxf<mode>2): Ditto. (*truncdfsf_fast_mixed): Remove insn pattern. (*truncdfsf_fast_i387): Ditto. (*truncdfsf_mixed): Ditto. (*truncdfsf_i387): Ditto. (*truncdfsf2_i387_1): Ditto. (*truncxfsf2_mixed): Ditto. (*truncxfdf2_mixed): Ditto. (*truncxf<mode>2_i387_noop): Ditto. Update callers to call gen_truncxf<mode>2 instead. (*truncxf<mode>2_i387): Remove. (reg->reg splitters): Remove splitter pattern. (reg->mem splitters): Ditto. (truncdfsf2): New insn pattern. (truncxf<mode>2): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264130 138bc75d-0d04-0410-961f-82ee72b054a4
* call.c (build_user_type_conversion_1): Use NULL instead of 0. Bail out if performing the maybe-rvalue overload resolution and a conversion function is getting called. * g++.dg/cpp0x/ref-qual19.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264132 138bc75d-0d04-0410-961f-82ee72b054a4
Wat? This is ridiculous. Even if this wasn't an unofficial read-only mirror, the response would be "no". |
LGTM 👍 Good job on making version 7!
|
…9-gd9cafa0c4f0a81 Contracts nonattr rebase on r15 3839 gd9cafa0c4f0a81
We can make use of the integrated rotate step of the XAR instruction to implement most vector integer rotates, as long we zero out one of the input registers for it. This allows for a lower-latency sequence than the fallback SHL+USRA, especially when we can hoist the zeroing operation away from loops and hot parts. This should be safe to do for 64-bit vectors as well even though the XAR instructions operate on 128-bit values, as the bottom 64-bit results is later accessed through the right subregs. This strategy is used whenever we have XAR instructions, the logic in aarch64_emit_opt_vec_rotate is adjusted to resort to expand_rotate_as_vec_perm only when it's expected to generate a single REV* instruction or when XAR instructions are not present. With this patch we can gerate for the input: v4si G1 (v4si r) { return (r >> 23) | (r << 9); } v8qi G2 (v8qi r) { return (r << 3) | (r >> 5); } the assembly for +sve2: G1: movi v31.4s, 0 xar z0.s, z0.s, z31.s, #23 ret G2: movi v31.4s, 0 xar z0.b, z0.b, z31.b, #5 ret instead of the current: G1: shl v31.4s, v0.4s, 9 usra v31.4s, v0.4s, 23 mov v0.16b, v31.16b ret G2: shl v31.8b, v0.8b, 3 usra v31.8b, v0.8b, 5 mov v0.8b, v31.8b ret Bootstrapped and tested on aarch64-none-linux-gnu. Signed-off-by: Kyrylo Tkachov <[email protected]> gcc/ * config/aarch64/aarch64.cc (aarch64_emit_opt_vec_rotate): Add generation of XAR sequences when possible. gcc/testsuite/ * gcc.target/aarch64/rotate_xar_1.c: New test.
No description provided.