1. 05 Sep, 2018 8 commits
    • re PR bootstrap/87225 (tree-vect-stmts.c:3748 error: converting to 'bool' from… · 888157af
      re PR bootstrap/87225 (tree-vect-stmts.c:3748 error: converting to 'bool' from 'std::nullptr_t' requires direct-initialization [-fpermissive])
      
      2018-09-05  Richard Biener  <rguenther@suse.de>
      
      	PR bootstrap/87225
      	* tree-vect-stmts.c (vectorizable_simd_clone_call): Fix bogus
      	return.
      
      From-SVN: r264116
      Richard Biener committed
    • [aarch64] Avoid tag collisions for loads falkor · a98824ac
      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  <siddhesh@sourceware.org>
                  Kugan Vivekanandarajah  <kugan.vivekanandarajah@linaro.org>
      
      	* 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.													
      
      
      Co-Authored-By: Kugan Vivekanandarajah <kuganv@linaro.org>
      
      From-SVN: r264115
      Siddhesh Poyarekar committed
    • Fix typo in ChangeLog. · 41fbb3ec
      From-SVN: r264114
      Martin Liska committed
    • Fix a scan in test for Darwin target (PR testsuite/87216). · ac2f3b7f
      2018-09-05  Martin Liska  <mliska@suse.cz>
      
      	PR testsuite/87216
      	* gcc.dg/tree-prof/pr59521-3.c: Update scanned pattern
      	to support Dawring names.
      
      From-SVN: r264113
      Martin Liska committed
    • GCOV: Print one decimal place in human readable mode. · d1c772b9
      2018-09-05  Martin Liska  <mliska@suse.cz>
      
      	* 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  <mliska@suse.cz>
      
      	* g++.dg/gcov/loop.C: Update test to support new format.
      
      From-SVN: r264112
      Martin Liska committed
    • Ignore properly -mdirect-move (PR target/87164). · 3d043c51
      2018-09-05  Martin Liska  <mliska@suse.cz>
      
      	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.
      
      From-SVN: r264111
      Martin Liska committed
    • cp-tree.h (treat_lvalue_as_rvalue_p): Declare. · 74be6f51
      	* cp-tree.h (treat_lvalue_as_rvalue_p): Declare.
      	* 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.
      
      From-SVN: r264101
      Marek Polacek committed
    • Daily bump. · fd64b293
      From-SVN: r264100
      GCC Administrator committed
  2. 04 Sep, 2018 14 commits
  3. 03 Sep, 2018 18 commits
    • simplify.c (gfc_simplify_modulo): Re-arrange code to test whether 'P' is zero… · 53dede15
      simplify.c (gfc_simplify_modulo): Re-arrange code to test whether 'P' is zero and issue an error if it is.
      
      2018-09-03  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	* simplify.c (gfc_simplify_modulo): Re-arrange code to test whether
      	'P' is zero and issue an error if it is.
      	* gfortran.dg/modulo_check: New test.
      
      From-SVN: r264070
      Jerry DeLisle committed
    • re PR tree-optimization/87177 (wrong code at -O2 and -O3 on x86-64-linux-gnu) · a5e8b060
      2018-09-03  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/87177
      	* tree-ssa-sccvn.c (vuse_ssa_val): Revert previous change, keep
      	cleanup.
      
      	* gcc.dg/torture/pr87177.c: New testcase.
      	* gcc.dg/torture/pr87177-2.c: Likewise.
      
      From-SVN: r264069
      Richard Biener committed
    • bb-reorder: convert to gcc_stablesort · 64979e04
      	* bb-reorder.c (edge_order): Convert to C-qsort-style
      	tri-state comparator.
      	(reorder_basic_blocks_simple): Change std::stable_sort to gcc_stablesort.
      
      From-SVN: r264068
      Alexander Monakov committed
    • tree-loop-distribution: convert to gcc_stablesort · d2391983
      	* tree-loop-distribution.c (offset_cmp): Convert to C-qsort-style
      	tri-state comparator.
      	(fuse_memset_builtins): Change std::stable_sort to gcc_stablesort.
      
      From-SVN: r264067
      Alexander Monakov committed
    • introduce gcc_stablesort · a6405b11
      	* sort.cc (struct sort_ctx): New field 'nlim'.  Use it...
      	(mergesort): ... here as maximum count for using netsort.
      	(gcc_qsort): Set nlim to 3 if stable sort is requested.
      	(gcc_stablesort): New.
      	* system.h (gcc_stablesort): Declare.
      
      From-SVN: r264066
      Alexander Monakov committed
    • qsort_chk: call from gcc_qsort instead of wrapping it · 71acd8b9
      	* sort.cc (gcc_qsort) [CHECKING_P]: Call qsort_chk.
      	* system.h (qsort): Always redirect to gcc_qsort.  Update comment.
      	* vec.c (qsort_chk): Do not call gcc_qsort.  Update comment.
      
      From-SVN: r264065
      Alexander Monakov committed
    • rs6000: lxsdux / stxsdux do not exist · 158985b1
      Our md files refer to {l,st}xsd%U<n>x, but no {l,st}xsdux insns exist.
      This patch removes the update forms.  All these use  constraint "Z"
      which does not allow update form, so there is no practical difference.
      
      
      	* config/rs6000/rs6000.md (*mov<mode>_hardfloat32): Remove %U from the
      	lxsdx and stxsdx alternatives.
      	(*mov<mode>_hardfloat64): Ditto.
      	* config/rs6000/vsx.md (*vsx_extract_<mode>_store): Ditto.
      
      From-SVN: r264064
      Segher Boessenkool committed
    • PR libstdc++/78179 run long double tests separately · d4baef5b
      Split the long double testing into a separate file, so that we can XFAIL
      targets where the long double precision doesn't meet the expected
      tolerances. The float and double tests are still expefted to PASS for
      all targets.
      
      	PR libstdc++/78179
      	* testsuite/26_numerics/headers/cmath/hypot-long-double.cc: New test
      	that runs the long double part of hypot.cc.
      	* testsuite/26_numerics/headers/cmath/hypot.cc: Disable long double
      	tests unless TEST_HYPOT_LONG_DOUBLE is defined.
      
      From-SVN: r264063
      Jonathan Wakely committed
    • re PR tree-optimization/87200 (ICE in set_ssa_val_to, at tree-ssa-sccvn.c:3629) · 339e6723
      2018-09-03  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/87200
      	* tree-ssa-sccvn.c (vn_nary_build_or_lookup_1): Valueize a
      	simplify result.
      
      	* gcc.dg/torture/pr87200.c: New testcase.
      
      From-SVN: r264062
      Richard Biener committed
    • Fix vector::_Temporary_value::_M_ptr · 7efe0dd0
      The pointer argument to allocator_traits::construct and
      allocator_traits::destroy should be a raw pointer, not the allocator's
      pointer type. _Temporary_value::_M_ptr was returning the wrong type.
      
      	* include/bits/stl_vector.h (vector::_Temporary_value::_M_ptr):
      	Return raw pointer not allocator's pointer type.
      	(vector::_Temporary_value::_M_val): Use _M_ptr.
      
      From-SVN: r264061
      Jonathan Wakely committed
    • PR libstdc++/87194 fix range insertion into maps and sets · 83a840a9
      Since C++11 range insertion and construction of maps and sets from a
      pair of iterators only requires that the iterator's value_type is
      convertible to the container's value_type (previously it had to be the
      same).
      
      This fixes the implementation to meet that relaxed requirement, by
      defining a pair of overloads that either insert or emplace, depending on
      the iterator's value_type. Instead of adding yet another overload of
      _M_insert_unique and _M_insert_equal, the overloads taking iterators are
      renamed to _M_insert_range_unique and _M_insert_range_equal.
      
      	PR libstdc++/87194
      	* include/bits/stl_map.h
      	(map::map(initializer_list<value_type>, const Compare&, const Alloc&))
      	(map::map(initializer_list<value_type>, const Alloc&))
      	(map::map(InputIterator, InputIterator, const Alloc&))
      	(map::map(InputIterator, InputIterator))
      	(map::map(InputIterator, InputIterator, const Compare&, const Alloc&))
      	(map::insert(InputIterator, InputIterator)):
      	Call _M_insert_range_unique instead of _M_insert_unique.
      	* include/bits/stl_multimap.h
      	(multimap::multimap(initializer_list<value_type>, const C&, const A&))
      	(multimap::multimap(initializer_list<value_type>, const A&))
      	(multimap::multimap(InputIterator, InputIterator, const A&))
      	(multimap::multimap(InputIterator, InputIterator))
      	(multimap::multimap(InputIterator, InputIterator, const C&, const A&))
      	(multimap::insert(InputIterator, InputIterator)): Call
      	_M_insert_range_equal instead of _M_insert_equal.
      	* include/bits/stl_multiset.h
      	(multiset::multiset(InputIterator, InputIterator))
      	(multiset::multiset(InputIterator, InputIterator, const C&, const A&))
      	(multiset::multiset(initializer_list<value_type>, const C&, const A&))
      	(multiset::multiset(initializer_list<value_type>, const A&))
      	(multiset::multiset(InputIterator, InputIterator, const A&))
      	(multiset::insert(InputIterator, InputIterator)): Call
      	_M_insert_range_equal instead of _M_insert_equal.
      	* include/bits/stl_set.h
      	(set::set(InputIterator, InputIterator))
      	(set::set(InputIterator, InputIterator, const Compare&, const Alloc&))
      	(set::set(initializer_list<value_type>, const Compare&, const Alloc&))
      	(set::set(initializer_list<value_type>, const Alloc&))
      	(set::set(InputIterator, InputIterator, const Alloc&))
      	(set::insert(InputIterator, InputIterator)):
      	Call _M_insert_range_unique instead of _M_insert_unique.
      	* include/bits/stl_tree.h
      	[__cplusplus >= 201103L] (_Rb_tree::__same_value_type): New alias
      	template for SFINAE constraints.
      	[__cplusplus >= 201103L] (_Rb_tree::_M_insert_range_unique): Pair of
      	constrained overloads that either insert or emplace, depending on
      	iterator's value_type.
      	[__cplusplus >= 201103L] (_Rb_tree::_M_insert_range_equal): Likewise.
      	[__cplusplus < 201103L] (_Rb_tree::_M_insert_range_unique)
      	(_Rb_tree::_M_insert_range_equal): New functions replacing range
      	versions of _M_insert_unique and _M_insert_equal.
      	(_Rb_tree::_M_insert_unique(_InputIterator, _InputIterator))
      	(_Rb_tree::_M_insert_equal(_InputIterator, _InputIterator)): Remove.
      	* testsuite/23_containers/map/modifiers/insert/87194.cc: New test.
      	* testsuite/23_containers/multimap/modifiers/insert/87194.cc: New test.
      	* testsuite/23_containers/multiset/modifiers/insert/87194.cc: New test.
      	* testsuite/23_containers/set/modifiers/insert/87194.cc: New test.
      
      From-SVN: r264060
      Jonathan Wakely committed
    • PR libstdc++/78595 implement insertion into maps in terms of emplace · bc62e155
      C++14 simplified the specification of the generic insert function
      templates to be equivalent to calling emplace (or emplace_hint).
      Defining them in terms of emplace takes care of the problems described
      in PR 78595, ensuring a single conversion to value_type is done at the
      right time.
      
      	PR libstdc++/78595
      	* include/bits/stl_map.h (map::insert(_Pair&&))
      	(map::insert(const_iterator, _Pair&&)): Do emplace instead of insert.
      	* include/bits/stl_multimap.h (multimap::insert(_Pair&&))
      	(multimap::insert(const_iterator, _Pair&&)): Likewise.
      	* include/bits/unordered_map.h (unordered_map::insert(_Pair&&))
      	(unordered_map::insert(const_iterator, _Pair&&))
      	(unordered_multimap::insert(_Pair&&))
      	(unordered_multimap::insert(const_iterator, _Pair&&)): Likewise.
      	* testsuite/23_containers/map/modifiers/insert/78595.cc: New test.
      	* testsuite/23_containers/multimap/modifiers/insert/78595.cc: New test.
      	* testsuite/23_containers/unordered_map/modifiers/78595.cc: New test.
      	* testsuite/23_containers/unordered_multimap/modifiers/78595.cc: New
      	test.
      
      From-SVN: r264059
      Jonathan Wakely committed
    • Fix thinko (PR tree-optimization/87201). · a6b75a69
      2018-09-03  Martin Liska  <mliska@suse.cz>
      
      	PR tree-optimization/87201
      	* tree-switch-conversion.c (switch_decision_tree::balance_case_nodes):
      	Fix parenthesis in an expression.
      
      From-SVN: r264058
      Martin Liska committed
    • re PR tree-optimization/87197 (ICE in is_gimple_reg_type at gimple-expr.h:75 since r264021) · 70fc129d
      2018-09-03  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/87197
      	* tree-ssa-sccvn.c (vn_nary_build_or_lookup_1): Mark the new def
      	visited.  CSE the VN_INFO hashtable lookup.
      
      	* gcc.dg/torture/pr87197.c: New testcase.
      
      	PR tree-optimization/87169
      	* tree-ssa-sccvn.c (do_rpo_vn): When marking loops for not
      	iterating make sure there's no extra backedges from irreducible
      	regions feeding the header.  Mark the destination block
      	executable.
      
      	* gcc.dg/torture/pr87169.c: New testcase.
      
      From-SVN: r264057
      Richard Biener committed
    • fixincludes: vxworks: remove unnecessary parentheses in ioctl wrapper macro · c7a8f93d
      The rationale for the fixinclude ioctl macro wrapper is, as far as I can
      tell (https://gcc.gnu.org/ml/gcc-patches/2012-09/msg01619.html)
      
        Fix 2: Add hack for ioctl() on VxWorks.
      
        ioctl() is supposed to be variadic, but VxWorks only has a three
        argument version with the third argument of type int.  This messes up
        when the third argument is not implicitly convertible to int.  This
        adds a macro which wraps around ioctl() and explicitly casts the third
        argument to an int.  This way, the most common use case of ioctl (with
        a const char * for the third argument) will compile in C++, where
        pointers must be explicitly casted to int.
      
      However, we have existing C++ code that calls the ioctl function via
      
        ::ioctl(foo, bar, baz)
      
      and obviously this breaks when it gets expanded to
      
        ::(ioctl)(foo, bar, (int)(baz))
      
      Since the GNU C preprocessor already prevents recursive expansion of
      function-like macros, the parentheses around ioctl are unnecessary.
      
      Incidentally, there is also a macro sioIoctl() in the vxworks sioLib.h
      header that expands to
      
        ((pSioChan)->pDrvFuncs->ioctl (pSioChan, cmd, arg))
      
      which also breaks when that gets further expanded to
      
        ((pSioChan)->pDrvFuncs->(ioctl) (pSioChan, cmd, (int)(arg)))
      
      This patch partly fixes that issue as well, but the third argument to
      the pDrvFuncs->ioctl method should be void*, so the cast to (int) is
      slightly annoying. Internally, we've simply patched the sioIoctl macro:
      
        (((pSioChan)->pDrvFuncs->ioctl) (pSioChan, cmd, arg))
      
      From-SVN: r264056
      Rasmus Villemoes committed
    • Come up with TARGET_GET_VALID_OPTION_VALUES option hook (PR driver/83193). · c98c2430
      2018-09-03  Martin Liska  <mliska@suse.cz>
      
              PR driver/83193
      	* common/common-target.def: Add TARGET_GET_VALID_OPTION_VALUES.
      	* common/common-targhooks.c (default_get_valid_option_values):
              New function.
      	* common/common-targhooks.h (default_get_valid_option_values):
              Likewise.
      	* common/config/i386/i386-common.c: Move processor_target_table
              from i386.c.
      	(ix86_get_valid_option_values): New function.
      	(TARGET_GET_VALID_OPTION_VALUES): New macro.
      	* config/i386/i386.c (struct ptt): Move to i386-common.c.
      	(PTA_*): Move all defined masks into i386-common.c.
      	(ix86_function_specific_restore): Use new processor_cost_table.
      	* config/i386/i386.h (struct ptt): Moved from i386.c.
      	(struct pta): Likewise.
      	* doc/tm.texi: Document new TARGET_GET_VALID_OPTION_VALUES.
      	* doc/tm.texi.in: Likewise.
      	* opt-suggestions.c (option_proposer::suggest_option):
              Pass prefix to build_option_suggestions.
      	(option_proposer::get_completions): Likewise.
      	(option_proposer::build_option_suggestions): Use the new target
              hook.
      	* opts.c (struct option_help_tuple): New struct.
      	(print_filtered_help): Use the new target hook.
      2018-09-03  Martin Liska  <mliska@suse.cz>
      
              PR driver/83193
      	* gcc.dg/completion-4.c: New test.
      
      From-SVN: r264052
      Martin Liska committed
    • re PR c++/84980 ([concepts] ICE with missing typename in concept) · d1dfeff0
      /cp
      2018-09-03  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/84980
      	* constraint.cc (finish_shorthand_constraint): Early return if the
      	constraint is erroneous.
      
      /testsuite
      2018-09-03  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/84980
      	* g++.dg/concepts/pr84980.C: New.
      
      From-SVN: r264051
      Paolo Carlini committed
    • Make __builtin_expect effective in switch statements (PR middle-end/PR59521). · add4cbca
      2018-09-03  Martin Liska  <mliska@suse.cz>
      
        PR middle-end/59521
      	* predict.c (set_even_probabilities): Add likely_edges
              argument and handle cases where we have precisely one
              likely edge.
      	(combine_predictions_for_bb): Catch also likely_edges.
      	(tree_predict_by_opcode): Handle gswitch statements.
      	* tree-cfg.h (find_case_label_for_value): New declaration.
      	(find_taken_edge_switch_expr): Likewise.
      	* tree-switch-conversion.c (switch_decision_tree::balance_case_nodes):
              Find pivot in decision tree based on probabily, not by number of
              nodes.
      2018-09-03  Martin Liska  <mliska@suse.cz>
      
        PR middle-end/59521
      	* c-c++-common/pr59521-1.c: New test.
      	* c-c++-common/pr59521-2.c: New test.
      	* gcc.dg/tree-prof/pr59521-3.c: New test.
      
      From-SVN: r264050
      Martin Liska committed