Richard Biener [Wed, 5 Sep 2018 11:44:13 +0000 (11:44 +0000)]
re PR bootstrap/87134 (SEGV in cc1 caused by r263875)
2018-09-05 Richard Biener <rguenther@suse.de>
PR bootstrap/87134
* tree-ssa-sccvn.c (rpo_elim::eliminate_push_avail): Make sure
to zero-init the emplaced vec.
From-SVN: r264125
Martin Liska [Wed, 5 Sep 2018 11:28:49 +0000 (13:28 +0200)]
Group switch cases in switch lowering (PR tree-optimization/87205).
2018-09-05 Martin Liska <mliska@suse.cz>
PR tree-optimization/87205
* tree-switch-conversion.c (pass_lower_switch::execute):
Group cases for switch statements.
2018-09-05 Martin Liska <mliska@suse.cz>
PR tree-optimization/87205
* gcc.dg/tree-ssa/pr87205-2.c: New test.
* gcc.dg/tree-ssa/pr87205.c: New test.
From-SVN: r264124
Richard Biener [Wed, 5 Sep 2018 10:33:41 +0000 (10:33 +0000)]
re PR tree-optimization/87217 (ICE in in check_loop_closed_ssa_def, at tree-ssa-loop-manip.c:709 when compiling SPEC2000 starting with r264069)
2018-09-05 Richard Biener <rguenther@suse.de>
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.
From-SVN: r264121
Hans-Peter Nilsson [Wed, 5 Sep 2018 10:28:45 +0000 (10:28 +0000)]
* io/async.h: Use __gthread_mutex_t, not pthread_mutex_t.
From-SVN: r264120
Nathan Sidwell [Wed, 5 Sep 2018 10:04:58 +0000 (10:04 +0000)]
PR c++/87137] GCC-8 Fix
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.
From-SVN: r264119
Pádraig Brady [Wed, 5 Sep 2018 09:59:08 +0000 (09:59 +0000)]
[PR c++/87185] ICE in prune-lambdas
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.
From-SVN: r264118
Richard Biener [Wed, 5 Sep 2018 09:39:34 +0000 (09:39 +0000)]
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
Siddhesh Poyarekar [Wed, 5 Sep 2018 09:37:27 +0000 (09:37 +0000)]
[aarch64] Avoid tag collisions for loads falkor
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
Martin Liska [Wed, 5 Sep 2018 09:09:46 +0000 (09:09 +0000)]
Fix typo in ChangeLog.
From-SVN: r264114
Martin Liska [Wed, 5 Sep 2018 09:08:07 +0000 (11:08 +0200)]
Fix a scan in test for Darwin target (PR testsuite/87216).
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 [Wed, 5 Sep 2018 08:08:45 +0000 (10:08 +0200)]
GCOV: Print one decimal place in human readable mode.
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 [Wed, 5 Sep 2018 08:07:48 +0000 (10:07 +0200)]
Ignore properly -mdirect-move (PR target/87164).
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
Marek Polacek [Wed, 5 Sep 2018 02:08:19 +0000 (02:08 +0000)]
cp-tree.h (treat_lvalue_as_rvalue_p): Declare.
* 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
GCC Administrator [Wed, 5 Sep 2018 00:16:36 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r264100
H.J. Lu [Tue, 4 Sep 2018 20:42:06 +0000 (20:42 +0000)]
DWARF: Allow hard frame pointer even if frame pointer isn't used
r251028
commit
cd557ff63f388ad27c376d0a225e74d3594a6f9d
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.
From-SVN: r264096
Jakub Jelinek [Tue, 4 Sep 2018 17:49:57 +0000 (19:49 +0200)]
re PR target/87198 (ICE in extract_insn, at recog.c:2304)
PR target/87198
* 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.
From-SVN: r264088
Max Filippov [Tue, 4 Sep 2018 17:43:20 +0000 (17:43 +0000)]
gcc: xtensa: fix NAND code in xtensa_expand_atomic
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 <jcmvbkbc@gmail.com>
* config/xtensa/xtensa.c (xtensa_expand_atomic): Reorder AND and
XOR operations in NAND case.
From-SVN: r264087
Rainer Orth [Tue, 4 Sep 2018 15:00:41 +0000 (15:00 +0000)]
Don't xfail gcc.target/i386/addr-sel-1.c (PR target/86744)
PR target/86744
* gcc.target/i386/addr-sel-1.c: Don't xfail "b\\+1" scan.
From-SVN: r264086
Aldy Hernandez [Tue, 4 Sep 2018 14:52:41 +0000 (14:52 +0000)]
wide-int-range.cc (wide_int_range_convert): New.
* wide-int-range.cc (wide_int_range_convert): New.
* 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.
From-SVN: r264085
Martin Liska [Tue, 4 Sep 2018 13:59:38 +0000 (15:59 +0200)]
genmatch: put reporting on a cold path
2018-09-04 Martin Liska <mliska@suse.cz>
* genmatch.c (output_line_directive): Add new argument
fnargs.
(dt_simplify::gen_1): Encapsulate dump within __builtin_expect.
From-SVN: r264084
Jonathan Wakely [Tue, 4 Sep 2018 13:34:47 +0000 (14:34 +0100)]
Add whitespace before warning option added in previous commmit
* doc/invoke.texi (Option Summary): Add whitespace.
From-SVN: r264083
Jonathan Wakely [Tue, 4 Sep 2018 13:25:42 +0000 (14:25 +0100)]
Add -Waligned-new to Option Summary
* doc/invoke.texi (Option Summary): Add -Waligned-new.
From-SVN: r264080
Richard Biener [Tue, 4 Sep 2018 12:04:42 +0000 (12:04 +0000)]
re PR tree-optimization/87211 (gcc ICE at O2: in set_ssa_val_to, at tree-ssa-sccvn.c:3628)
2018-09-04 Richard Biener <rguenther@suse.de>
PR tree-optimization/87211
* tree-ssa-sccvn.c (visit_phi): When value-numbering to a
backedge value we're supposed to treat as VARYING also number
the PHI to VARYING in case it got a different value-number already.
* gcc.dg/torture/pr87211.c: New testcase.
From-SVN: r264079
Aldy Hernandez [Tue, 4 Sep 2018 11:58:14 +0000 (11:58 +0000)]
tree-vrp.c (vrp_can_optimize_bit_op): Remove.
* tree-vrp.c (vrp_can_optimize_bit_op): Remove.
(extract_range_from_binary_expr_1): Do not call
vrp_can_optimize_bit_op.
* wide-int-range.cc (wide_int_range_can_optimize_bit_op): Make
static.
(wide_int_range_get_mask_and_bounds): New.
(wide_int_range_optimize_bit_op): New.
(wide_int_range_bit_ior): Call wide_int_range_optimize_bit_op.
(wide_int_range_bit_and): Same.
* wide-int-range.h (wide_int_range_can_optimize_bit_op): Remove.
(wide_int_range_optimize_bit_op): New.
(wide_int_range_get_mask_and_bounds): New.
From-SVN: r264078
Richard Biener [Tue, 4 Sep 2018 10:55:46 +0000 (10:55 +0000)]
re PR tree-optimization/87176 (wrong code at -Os and above on x86-64-linux-gnu)
2018-09-04 Richard Biener <rguenther@suse.de>
PR tree-optimization/87176
* tree-ssa-sccvn.c (visit_phi): Remove redundant allsame
variable. When value-numbering a virtual PHI node make sure
to not value-number to the backedge value.
* gcc.dg/torture/pr87176.c: New testcase.
* gcc.dg/torture/ssa-fre-1.c: Likewise.
From-SVN: r264077
Jonathan Wakely [Tue, 4 Sep 2018 10:27:14 +0000 (11:27 +0100)]
Update C Extensions docs for support in latest C++
* doc/extend.texi (Long Long, Hex Floats): Document support for
long long and hex floats in more recent versions of ISO C++.
From-SVN: r264076
Xuepeng Guo [Tue, 4 Sep 2018 03:57:03 +0000 (03:57 +0000)]
* MAINTAINERS: Update my email address.
From-SVN: r264075
GCC Administrator [Tue, 4 Sep 2018 00:16:57 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r264074
Jerry DeLisle [Mon, 3 Sep 2018 18:38:20 +0000 (18:38 +0000)]
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
Richard Biener [Mon, 3 Sep 2018 17:41:05 +0000 (17:41 +0000)]
re PR tree-optimization/87177 (wrong code at -O2 and -O3 on x86-64-linux-gnu)
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
Alexander Monakov [Mon, 3 Sep 2018 16:55:05 +0000 (19:55 +0300)]
bb-reorder: convert to gcc_stablesort
* 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 [Mon, 3 Sep 2018 16:53:04 +0000 (19:53 +0300)]
tree-loop-distribution: convert to gcc_stablesort
* 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 [Mon, 3 Sep 2018 16:51:24 +0000 (19:51 +0300)]
introduce gcc_stablesort
* 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 [Mon, 3 Sep 2018 16:46:46 +0000 (19:46 +0300)]
qsort_chk: call from gcc_qsort instead of wrapping it
* 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
Segher Boessenkool [Mon, 3 Sep 2018 15:51:37 +0000 (17:51 +0200)]
rs6000: lxsdux / stxsdux do not exist
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
Jonathan Wakely [Mon, 3 Sep 2018 14:54:28 +0000 (15:54 +0100)]
PR libstdc++/78179 run long double tests separately
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
Richard Biener [Mon, 3 Sep 2018 14:29:00 +0000 (14:29 +0000)]
re PR tree-optimization/87200 (ICE in set_ssa_val_to, at tree-ssa-sccvn.c:3629)
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
Jonathan Wakely [Mon, 3 Sep 2018 14:25:29 +0000 (15:25 +0100)]
Fix vector::_Temporary_value::_M_ptr
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 [Mon, 3 Sep 2018 14:25:25 +0000 (15:25 +0100)]
PR libstdc++/87194 fix range insertion into maps and sets
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 [Mon, 3 Sep 2018 14:25:12 +0000 (15:25 +0100)]
PR libstdc++/78595 implement insertion into maps in terms of emplace
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
Martin Liska [Mon, 3 Sep 2018 13:35:35 +0000 (15:35 +0200)]
Fix thinko (PR tree-optimization/87201).
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
Richard Biener [Mon, 3 Sep 2018 13:28:25 +0000 (13:28 +0000)]
re PR tree-optimization/87197 (ICE in is_gimple_reg_type at gimple-expr.h:75 since r264021)
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
Rasmus Villemoes [Mon, 3 Sep 2018 13:26:45 +0000 (15:26 +0200)]
fixincludes: vxworks: remove unnecessary parentheses in ioctl wrapper macro
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
Martin Liska [Mon, 3 Sep 2018 08:16:27 +0000 (10:16 +0200)]
Come up with TARGET_GET_VALID_OPTION_VALUES option hook (PR driver/83193).
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
Paolo Carlini [Mon, 3 Sep 2018 07:57:33 +0000 (07:57 +0000)]
re PR c++/84980 ([concepts] ICE with missing typename in concept)
/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
Martin Liska [Mon, 3 Sep 2018 07:51:56 +0000 (09:51 +0200)]
Make __builtin_expect effective in switch statements (PR middle-end/PR59521).
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
GCC Administrator [Mon, 3 Sep 2018 00:16:50 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r264049
Jerry DeLisle [Sun, 2 Sep 2018 15:55:51 +0000 (15:55 +0000)]
io.h: Change declaration of vlist type to gfc_full_array_i4 to eliminate warning for...
2018-09-01 Jerry DeLisle <jvdelisle@gcc.gnu.org>
* io/io.h: Change declaration of vlist type to
gfc_full_array_i4 to eliminate warning for mismatched type.
* io/format.c ((parse_format_list): Use gfc_full_array_i4.
* io/io.h: Use gfc_full_array_i4.
From-SVN: r264043
Bernd Edlinger [Sun, 2 Sep 2018 15:18:30 +0000 (15:18 +0000)]
c-common.c (braced_list_to_string): Remove eval parameter.
* c-common.c (braced_list_to_string): Remove eval parameter.
Add some more checks. Always create zero-terminated STRING_CST.
* c-common.h (braced_list_to_string): Adjust prototype.
* c-decl.c (finish_decl): Call braced_list_to_string here ...
* c-parser.c (c_parser_declaration_or_fndef): ... instead of here.
* decl.c (eval_check_narrowing): Remove.
(check_initializer): Move call to braced_list_to_string from here ...
* typeck2.c (store_init_value): ... to here.
(digest_init_r): Remove handing of signed/unsigned char strings.
* c-c++-common/array-init.c: New test.
* g++.dg/init/string2.C: Remove xfail.
From-SVN: r264042
François Dumont [Sun, 2 Sep 2018 10:20:57 +0000 (10:20 +0000)]
2018-09-02 François Dumont <fdumont@gcc.gnu.org>
* include/debug/safe_iterator.h
(_Safe_iterator<_It, _Seq, _Cat>::_Self): New.
(_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>::_Self):
New.
(_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
::_OtherSelf): New.
(_GLIBCXX_DEBUG_VERIFY_OPERANDS, _GLIBCXX_DEBUG_VERIFY_EQ_OPERANDS)
(_GLIBCXX_DEBUG_VERIFY_REL_OPERANDS)
(_GLIBCXX_DEBUG_VERIFY_DIST_OPERANDS): Define macros.
(_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
::operator+(difference_type)): Use latters, inline as friend.
(_Safe_iterator<_It, _Seq, std::random_access_iterator_tag>
::operator-(difference_type)): 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 _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+(difference_type, const _Safe_iterator<>&)): Likewise.
(operator-(const _Safe_iterator<>&, difference_type)): Likewise.
* include/debug/safe_iterator.tcc
(_Safe_iterator<>::_M_can_advance(difference_type)): Take parameter by
copy.
* include/debug/safe_local_iterator.h
(_Safe_local_iterator<_It, _Seq>::_Self): New.
(_Safe_local_iterator<_It, _Seq>::_OtherSelf): New.
(_GLIBCXX_DEBUG_VERIFY_OPERANDS): Define macro.
(operator==(const _Safe_local_iterator<>&,
const _Safe_local_iterator<>&)): Use latter, inline as friend.
(operator!=(const _Safe_local_iterator<>&,
const _Safe_local_iterator<>&)): Likewise.
* testsuite/util/testsuite_containers.h: Include utility.
(struct forward_members_unordered<_Tp, bool>): Remove 2nd template
parameter.
(forward_members_unordered<>::forward_members_unordered(value_type&)):
Add using namespace std::rel_ops.
Add iterator_concept_checks on local_iterator and const_local_iterator.
Add asserts on comparison between const_local_iterator and
local_iterator.
(struct forward_members_unordered<_Tp, false>): Remove partial
specialization.
* testsuite/23_containers/forward_list/types/1.cc: New.
* testsuite/23_containers/list/types/1.cc: New.
From-SVN: r264039
Gerald Pfeifer [Sun, 2 Sep 2018 00:31:10 +0000 (00:31 +0000)]
* doc/standards.texi (Standards): Update Objective-C reference.
From-SVN: r264038
GCC Administrator [Sun, 2 Sep 2018 00:16:23 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r264037
Gerald Pfeifer [Sat, 1 Sep 2018 21:47:58 +0000 (21:47 +0000)]
* doc/install.texi (Prerequisites): Update link for MPC.
From-SVN: r264033
Gerald Pfeifer [Sat, 1 Sep 2018 21:29:16 +0000 (21:29 +0000)]
generic.texi (OpenMP): Adjust link to openmp.org.
* doc/generic.texi (OpenMP): Adjust link to openmp.org.
* doc/invoke.texi (C Dialect Options): Ditto.
From-SVN: r264032
Gerald Pfeifer [Sat, 1 Sep 2018 21:27:14 +0000 (21:27 +0000)]
profile_mode.xml: Update three ieeexplore.ieee.org references.
* doc/xml/manual/profile_mode.xml: Update three ieeexplore.ieee.org
references.
From-SVN: r264031
Michael Matz [Sat, 1 Sep 2018 17:22:05 +0000 (17:22 +0000)]
re PR tree-optimization/87074 (Unroll and jam bug: O3 result differ from O2)
Fix PR87074
PR tree-optimization/87074
* gimple-loop-jam.c (unroll_jam_possible_p): Check loop exit
PHIs for outer-loop uses.
testsuite/
* gcc.dg/pr87074.c: New test.
From-SVN: r264029
Gerald Pfeifer [Sat, 1 Sep 2018 12:38:04 +0000 (12:38 +0000)]
* doc/install.texi (Prerequisites): Adjust link mpfr.org.
From-SVN: r264028
GCC Administrator [Sat, 1 Sep 2018 00:16:40 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r264026
Sandra Loosemore [Fri, 31 Aug 2018 19:09:47 +0000 (15:09 -0400)]
10.cc: Add dg-require-fileio.
2018-08-31 Sandra Loosemore <sandra@codesourcery.com>
libstdc++-v3/
* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/10.cc:
Add dg-require-fileio.
* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/11.cc:
Likewise.
* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/5.cc:
Likewise.
* testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc:
Likewise.
* testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc:
Likewise.
* testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc:
Likewise.
* testsuite/27_io/basic_filebuf/close/wchar_t/12790-1.cc: Likewise.
* testsuite/27_io/basic_filebuf/close/wchar_t/12790-2.cc: Likewise.
* testsuite/27_io/basic_filebuf/close/wchar_t/12790-3.cc: Likewise.
* testsuite/27_io/basic_filebuf/close/wchar_t/12790-4.cc: Likewise.
* testsuite/27_io/basic_filebuf/seekoff/wchar_t/11543.cc: Likewise.
* testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-1.cc:
Likewise.
* testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-2.cc:
Likewise.
* testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-3.cc:
Likewise.
* testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-4.cc:
Likewise.
* testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-1.cc:
Likewise.
* testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-2.cc:
Likewise.
* testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-4.cc:
Likewise.
* testsuite/27_io/basic_filebuf/underflow/wchar_t/2.cc: Likewise.
* testsuite/27_io/basic_filebuf/underflow/wchar_t/3.cc: Likewise.
* testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc: Likewise.
* testsuite/27_io/basic_ifstream/open/wchar_t/1.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_character/wchar_t/4.cc:
Likewise.
* testsuite/27_io/basic_istream/extractors_other/wchar_t/2.cc:
Likewise.
* testsuite/27_io/basic_istream/get/wchar_t/2.cc: Likewise.
* testsuite/27_io/basic_istream/getline/wchar_t/5.cc: Likewise.
* testsuite/27_io/basic_istream/ignore/wchar_t/2.cc: Likewise.
* testsuite/27_io/basic_istream/ignore/wchar_t/3.cc: Likewise.
* testsuite/27_io/basic_istream/seekg/wchar_t/sstream.cc: Likewise.
* testsuite/27_io/basic_istream/tellg/wchar_t/sstream.cc: Likewise.
* testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc: Likewise.
* testsuite/27_io/basic_ofstream/open/wchar_t/1.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/wchar_t/1.cc:
Likewise.
* testsuite/27_io/objects/wchar_t/10.cc: Likewise.
* testsuite/27_io/objects/wchar_t/12048-1.cc: Likewise.
* testsuite/27_io/objects/wchar_t/12048-2.cc: Likewise.
* testsuite/27_io/objects/wchar_t/12048-3.cc: Likewise.
* testsuite/27_io/objects/wchar_t/12048-4.cc: Likewise.
* testsuite/27_io/objects/wchar_t/12048-5.cc: Likewise.
* testsuite/experimental/string_view/inserters/wchar_t/2.cc:
Likewise.
* testsuite/ext/stdio_sync_filebuf/wchar_t/1.cc: Likewise.
From-SVN: r264022
Richard Biener [Fri, 31 Aug 2018 16:50:13 +0000 (16:50 +0000)]
re PR tree-optimization/87168 (ICE on valid code at -Os and above on x86_64-linux-gnu: verify_ssa failed)
2018-08-31 Richard Biener <rguenther@suse.de>
PR tree-optimization/87168
* tree-ssa-sccvn.c (SSA_VAL): Add visited output parameter.
(rpo_elim::eliminate_avail): When OP was not visited it must
be available.
* gcc.dg/torture/pr87168.c: New testcase.
From-SVN: r264021
David Malcolm [Fri, 31 Aug 2018 16:45:47 +0000 (16:45 +0000)]
tree-vrp: add "const" qualifier to various value_range pointers
gcc/ChangeLog:
* tree-vrp.c (copy_value_range): Convert param "from" from
"value_range *" to "const value_range *".
(range_is_null): Likewise for param "vr".
(range_int_cst_p): Likewise.
(range_int_cst_singleton_p): Likewise.
(symbolic_range_p): Likewise.
(value_ranges_intersect_p): Likewise for both params.
(value_range_nonnegative_p): Likewise for param "vr".
(value_range_constant_singleton): Likewise.
(vrp_set_zero_nonzero_bits): Likewise for param "ar".
(extract_range_into_wide_ints): Likewise for param "vr".
(extract_range_from_multiplicative_op): Likewise for params "vr0"
and "vr1".
(vrp_can_optimize_bit_op): Likewise.
(extract_range_from_binary_expr_1): Likewise for params "vr0_" and
"vr1_".
(extract_range_from_unary_expr): Likewise.
(debug_value_range): Likewise for param "vr".
(value_range::dump): Add "const" qualifier.
(vrp_prop::check_array_ref): Convert local "vr" from
"value_range *" to "const value_range *".
(vrp_prop::check_mem_ref): Likewise.
(vrp_prop::visit_stmt): Likewise for local "old_vr".
(vrp_intersect_ranges_1): Likewise for param "vr_1".
(vrp_intersect_ranges): Likewise.
(simplify_stmt_for_jump_threading): Likewise for local "vr".
(vrp_prop::vrp_finalize): Likewise.
* tree-vrp.h (value_range::dump): Add "const" qualifier.
(vrp_intersect_ranges): Add "const" qualifier to params as above.
(extract_range_from_unary_expr): Likewise.
(value_range_constant_singleton): Likewise.
(symbolic_range_p): Likewise.
(copy_value_range): Likewise.
(extract_range_from_binary_expr_1): Likewise.
(range_int_cst_p): Likewise.
(vrp_set_zero_nonzero_bits): Likewise.
(range_int_cst_singleton_p): Likewise.
From-SVN: r264020
Vlad Lazar [Fri, 31 Aug 2018 15:00:54 +0000 (15:00 +0000)]
[AArch64] Implement new intrinsics vabsd_s64 and vnegd_s64.
gcc/
2018-08-31 Vlad Lazar <vlad.lazar@arm.com>
* config/aarch64/arm_neon.h (vabsd_s64): New.
(vnegd_s64): Likewise.
gcc/testsuite/
2018-08-31 Vlad Lazar <vlad.lazar@arm.com>
* gcc.target/aarch64/scalar_intrinsics.c (test_vnegd_s64): New.
* gcc.target/aarch64/vneg_s.c (RUN_TEST_SCALAR): New.
(test_vnegd_s64): Likewise.
* gcc.target/aarch64/vnegd_64.c: New.
* gcc.target/aarch64/vabsd_64.c: New.
* gcc.tartget/aarch64/vabs_intrinsic_3.c: New
From-SVN: r264019
Nathan Sidwell [Fri, 31 Aug 2018 12:38:00 +0000 (12:38 +0000)]
[PR c++/87155] Anonymous namespace and
https://gcc.gnu.org/ml/gcc-patches/2018-08/msg02031.html
PR c++/87155
PR c++/84707
cp/
* name-lookup.c (name_lookup::search_namespace): Don't look at
inlines when searching for NULL names.
testsuite/
* g++.dg/cpp0x/pr87155.C: New.
* g++.dg/cpp0x/inline-ns10.C: Adjust.
From-SVN: r264016
Martin Jambor [Fri, 31 Aug 2018 12:14:37 +0000 (14:14 +0200)]
[PATCH] Fix thinko in estimate_local_effects in IPA-CP
2018-08-31 Martin Jambor <mjambor@suse.cz>
* ipa-cp.c (estimate_local_effects): Replace wrong MAX with MIN.
From-SVN: r264015
Martin Liska [Fri, 31 Aug 2018 11:37:09 +0000 (13:37 +0200)]
IPA ICF: make type cache a static field sem_item.
2018-08-31 Martin Liska <mliska@suse.cz>
* ipa-icf.c (sem_item::add_type): Use
sem_item::m_type_hash_cache.
* ipa-icf.h: Move the cache from sem_item_optimizer
to sem_item.
From-SVN: r264014
Nathan Sidwell [Fri, 31 Aug 2018 11:19:33 +0000 (11:19 +0000)]
[C++ PATCH] Remove K&R declaration hack.
https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01885.html
gcc/
* doc/extend.texi (Backwards Compatibility): Remove implicit
extern C leeway of () being (...).
gcc/cp/
* decl.c (decls_match): Remove SYSTEM_IMPLICIT_EXTERN_C matching
of return types and parms.
* parser.c (cp_parser_parameter_declaration_clause): Likewise,
'()' always means '(void)'.
From-SVN: r264013
Kyrylo Tkachov [Fri, 31 Aug 2018 10:36:54 +0000 (10:36 +0000)]
[ipa-inline][obvious] Fix typos in comment
* ipa-inline.c (can_inline_edge_by_limits_p): Fix typos in comment.
From-SVN: r264012
Segher Boessenkool [Fri, 31 Aug 2018 08:52:13 +0000 (10:52 +0200)]
rs6000: Make lround<mode>di2 depend on TARGET_FPRND (PR86684)
TARGET_FPRND should be on for everything ISA 2.04 and later, and
TARGET_VSX implies ISA 2.06 or later; but it is possible to disable
TARGET_FPRND (separately via -mno-fprnd, but also implicitly)
currently, and then things fall down. This patch makes things not
fall down.
PR target/86684
PR target/87149
* config/rs6000/rs6000.md (lround<mode>di2): Gate on TARGET_FPRND.
From-SVN: r264011
Jakub Jelinek [Fri, 31 Aug 2018 07:49:12 +0000 (09:49 +0200)]
re PR middle-end/87138 (wrong code with TI multiplication with -O -march=k8 -fno-tree-fre -mavx512bw)
PR middle-end/87138
* expmed.c (expand_mult_const): Use immed_wide_int_const instead of
gen_int_mode. Formatting fixes.
* gcc.target/i386/avx512bw-pr87138.c: New test.
From-SVN: r264009
Paul Thomas [Fri, 31 Aug 2018 06:51:31 +0000 (06:51 +0000)]
re PR fortran/86328 (Runtime segfault reading an allocatable class(*) object in allocate statements)
2018-08-31 Paul Thomas <pault@gcc.gnu.org>
PR fortran/86328
PR fortran/86760
* trans-array.c (gfc_conv_scalarized_array_ref): Do not fix
info->descriptor but pass it directly to gfc_build_array_ref.
(gfc_conv_array_ref): Likewise for se->expr.
* trans.c (gfc_build_array_ref): If 'decl' is a COMPONENT_REF
obtain the span field directly from it.
2018-08-31 Paul Thomas <pault@gcc.gnu.org>
PR fortran/86328
PR fortran/86760
* gfortran.dg/pr86328.f90 : New test.
in comment 12 of the PR.
* gfortran.dg/pr86760.f90 : New test.
From-SVN: r264008
Rainer Orth [Fri, 31 Aug 2018 06:43:07 +0000 (06:43 +0000)]
Fix PR testsuite/86519 reference.
From-SVN: r264007
GCC Administrator [Fri, 31 Aug 2018 00:16:48 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r264006
Sandra Loosemore [Thu, 30 Aug 2018 21:27:44 +0000 (17:27 -0400)]
noexcept30.C: Make dependence on -fdelete-null-pointer-checks explicit.
2018-08-30 Sandra Loosemore <sandra@codesourcery.com>
gcc/testsuite/
* g++.dg/cpp0x/noexcept30.C: Make dependence on
-fdelete-null-pointer-checks explicit.
* g++.dg/cpp1y/constexpr-82218.C: Likewise.
* g++.dg/expr/pmf-3.C: Likewise.
* g++.dg/ext/attr-returns-nonnull.C: Likewise.
* g++.dg/tree-ssa/lifetime-dse1.C: Likewise.
* g++.dg/tree-ssa/pr61034.C: Likewise.
* gcc.dg/addr_equal-1.c: Likewise.
* gcc.dg/ipa/pr85734.c: Likewise.
* gcc.dg/ipa/propmalloc-1.c: Likewise.
* gcc.dg/ipa/propmalloc-2.c: Likewise.
* gcc.dg/ipa/propmalloc-3.c: Likewise.
* gcc.dg/tree-ssa/pr78154.c: Likewise.
* gcc.dg/tree-ssa/pr83648.c: Likewise.
libstdc++-v3/
* testsuite/experimental/propagate_const/observers/1.cc: Make
dependence on -fdelete-null-pointer-checks explicit.
From-SVN: r264001
Martin Sebor [Thu, 30 Aug 2018 21:25:10 +0000 (21:25 +0000)]
PR testsuite/87158 - FAIL gcc.c-torture/execute/memchr-1.c on big endian targets
gcc/testsuite/ChangeLog:
* gcc.c-torture/execute/memchr-1.c: Correct big-endian expectations.
From-SVN: r264000
Sandra Loosemore [Thu, 30 Aug 2018 21:02:37 +0000 (17:02 -0400)]
target.def (custom_function_descriptors): Improve documentation.
2018-08-30 Sandra Loosemore <sandra@codesourcery.com>
gcc/
* target.def (custom_function_descriptors): Improve documentation.
* doc/tm.texi.in (Trampolines): Expand discussion of function
descriptors and move TARGET_CUSTOM_FUNCTION_DESCRIPTORS to the
beginning of the section.
* doc/tm.texi: Regenerated.
From-SVN: r263999
Jose E. Marchesi [Thu, 30 Aug 2018 20:28:31 +0000 (22:28 +0200)]
cfg.h (class auto_edge_flag): Spell out the template-id of the base class in the initializer list.
gcc:
2018-08-30 Jose E. Marchesi <jose.marchesi@oracle.com>
* cfg.h (class auto_edge_flag): Spell out the template-id of the
base class in the initializer list. This is a workaround for
building with older GCC.
(class auto_bb_flag): Likewise.
From-SVN: r263997
Aaron Sawdey [Thu, 30 Aug 2018 18:17:00 +0000 (18:17 +0000)]
altivec.md (altivec_eq<mode>): Remove star.
2018-08-30 Aaron Sawdey <acsawdey@linux.ibm.com>
* config/rs6000/altivec.md (altivec_eq<mode>): Remove star.
(altivec_vcmpequ<VI_char>_p): Remove star.
* config/rs6000/rs6000-string.c (do_load_for_compare): Support
vector load modes.
(expand_strncmp_vec_sequence): New function.
(emit_final_str_compare_vec): New function.
(expand_strn_compare): Add support for vector strncmp.
* config/rs6000/rs6000.opt (-mstring-compare-inline-limit): Change
length specification to bytes.
* config/rs6000/vsx.md (vsx_ld_elemrev_v16qi_internal): Remove star.
(vcmpnezb_p): New pattern.
* doc/invoke.texi (RS/6000 and PowerPC Options): Update documentation
for option -mstring-compare-inline-limit.
From-SVN: r263991
Thiago Macieira [Thu, 30 Aug 2018 15:59:41 +0000 (15:59 +0000)]
x86: Move AESNI generation to Skylake and Goldmont
The instruction set first appeared with Westmere, but not all processors
in that and the next few generations have the instructions. According to
Wikipedia[1], the first generation in which all SKUs have AES
instructions are Skylake and Goldmont. I can't find any Skylake,
Kabylake, Kabylake-R or Cannon Lake currently listed at
https://ark.intel.com that says "Intel® AES New Instructions" "No".
[1] https://en.wikipedia.org/wiki/AES_instruction_set
2018-08-30 Thiago Macieira <thiago.macieira@intel.com>
* config/i386/i386.c (PTA_WESTMERE): Remove PTA_AES.
(PTA_SKYLAKE): Add PTA_AES.
(PTA_GOLDMONT): Likewise.
From-SVN: r263989
Jan Hubicka [Thu, 30 Aug 2018 15:50:39 +0000 (17:50 +0200)]
re PR lto/86517 (relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object with LTO)
PR lto/86517
* lto-opts.c (lto_write_options): Always stream PIC/PIE mode.
* lto-wrapper.c (merge_and_complain): Fix merging of PIC/PIE.
From-SVN: r263988
Nathan Sidwell [Thu, 30 Aug 2018 15:16:21 +0000 (15:16 +0000)]
[libcpp] fix some line map comments
https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01978.html
* include/line-map.h (enum lc_reason): Comment each member
separately.
(struct line_maps): Fix reallocator comment.
From-SVN: r263987
Jonathan Wakely [Thu, 30 Aug 2018 15:07:35 +0000 (16:07 +0100)]
Avoid undefined shifts in ceil2 operations
For values where the result cannot be represented the shift width would
be equal to the width of the type, which is undefined. Perform two
well-defined shifts instead of one possible undefined shift.
* include/bits/hashtable_policy.h (__clp2): Fix calculation for LLP64
targets where sizeof(size_t) > sizeof(long). Avoid undefined shifts
of the number of bits in the type.
* include/std/bit (__ceil2): Avoid undefined shifts.
* testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Test values with
the most signifiant bit set.
From-SVN: r263986
Jan Hubicka [Thu, 30 Aug 2018 15:05:38 +0000 (17:05 +0200)]
lto-streamer-out.c (DFS::DFS_write_tree_body): Do not follow TYPE_STUB_DECL.
* lto-streamer-out.c (DFS::DFS_write_tree_body): Do not follow
TYPE_STUB_DECL.
(hash_tree): Do not visit TYPE_STUB_DECL.
* tree-streamer-out.c (write_ts_type_common_tree_pointers): Do not
stream TYPE_STUB_DECL.
* tree-streamer-in.c (lto_input_ts_type_common_tree_pointers): Likewise.
* ipa-utils.h (type_with_linkage_p): Do not rely on TYPE_STUB_DECL
after free_lang_data.
(type_in_anonymous_namespace_p): Likewise.
From-SVN: r263985
Qing Zhao [Thu, 30 Aug 2018 14:46:53 +0000 (14:46 +0000)]
Move strcmpopt_6.c from gcc.dg to gcc.target/aarch64 and gcc.target/i386.
From-SVN: r263983
Alexander Monakov [Thu, 30 Aug 2018 13:47:59 +0000 (16:47 +0300)]
gimplefe: expose MULT_HIGHPART_EXPR
* gimple-parser.c (c_parser_gimple_binary_expression): Accept infix
"__MULT_HIGHPART" for MULT_HIGHPART_EXPR.
From-SVN: r263982
Jan Hubicka [Thu, 30 Aug 2018 12:58:42 +0000 (14:58 +0200)]
sreal.h (SREAL_PART_BITS): Change to 31; remove seemingly unnecessary comment that it has to be even number.
* sreal.h (SREAL_PART_BITS): Change to 31; remove seemingly unnecessary
comment that it has to be even number.
(class sreal): Change m_sig type to int32_t.
* sreal.c (sreal::dump, sreal::to_int, opreator+, operator-): Use
int64_t for temporary calculations.
(sreal_verify_basics): Drop one bit from minimum and maximum.
From-SVN: r263981
Richard Biener [Thu, 30 Aug 2018 12:37:10 +0000 (12:37 +0000)]
re PR tree-optimization/87147 (GCC miscompiles at -O3 on valid code)
2018-08-30 Richard Biener <rguenther@suse.de>
PR tree-optimization/87147
* tree-ssa-sccvn.c (SSA_VISITED): New function.
(visit_phi): When the degenerate result is from the backedge and
we didn't visit its definition yet drop to VARYING.
(do_rpo_vn): Properly mark blocks with incoming backedges as executable.
* gcc.dg/torture/pr87147.c: New testcase.
From-SVN: r263980
Jan Hubicka [Thu, 30 Aug 2018 12:36:24 +0000 (14:36 +0200)]
lto-streamer-out.c (DFS::DFS_write_tree_body): Do not walk DECL_VINDEX.
* lto-streamer-out.c (DFS::DFS_write_tree_body): Do not walk
DECL_VINDEX.
(hash_tree): Likewise.
From-SVN: r263979
Jan Hubicka [Thu, 30 Aug 2018 12:32:45 +0000 (14:32 +0200)]
tree.c (find_decls_types_r): Walk also TYPE_NEXT_PTR_TO and TYPE_NEXT_REF_TO.
* tree.c (find_decls_types_r): Walk also TYPE_NEXT_PTR_TO
and TYPE_NEXT_REF_TO.
From-SVN: r263978
Jonathan Wakely [Thu, 30 Aug 2018 12:28:53 +0000 (13:28 +0100)]
Fix undefined references seen with mingw-w64
* config/abi/pre/gnu.ver: Add missing exports for mingw.
From-SVN: r263977
Jonathan Wakely [Thu, 30 Aug 2018 12:24:06 +0000 (13:24 +0100)]
Fix __gnu_cxx::_Pointer_adapter for long long arithmetic
* include/ext/pointer.h (_Pointer_adapter): Define operators for
pointer arithmetic using long long offsets.
* testsuite/ext/ext_pointer/1.cc: Test pointer arithmetic using
long long values.
From-SVN: r263976
Tamar Christina [Thu, 30 Aug 2018 10:40:07 +0000 (10:40 +0000)]
Limit movmem copies to TImode on AArch64
On AArch64 we have integer modes larger than TImode, and while we can generate
moves for these they're not as efficient.
So instead make sure we limit the maximum we can copy to TImode. This means
copying a 16 byte struct will issue 1 TImode copy, which will be done using a
single STP as we expect but an CImode sized copy won't issue CImode operations.
I am also moving the residual code inside the if since smallest_mode_for_int may
trap if the mode doesn't exist. And the only time we know the mode to exist for
sure is when the condition of the if is true. This also saves repeated calls to
the iterator.
gcc/
2018-08-30 Tamar Christina <tamar.christina@arm.com>
* config/aarch64/aarch64.c (aarch64_expand_movmem): Set TImode max.
gcc/testsuite/
2018-08-30 Tamar Christina <tamar.christina@arm.com>
* gcc.target/aarch64/large_struct_copy_2.c: New.
From-SVN: r263974
Vlad Lazar [Thu, 30 Aug 2018 09:30:49 +0000 (09:30 +0000)]
Enable underflow check in canonicalize_comparison. (PR86995)
gcc/
2018-08-30 Vlad Lazar <vlad.lazar@arm.com>
PR middle-end/86995
* expmed.c (canonicalize_comparison): Use wi::sub instead of wi::add
if to_add is negative.
From-SVN: r263973
GCC Administrator [Thu, 30 Aug 2018 00:17:02 +0000 (00:17 +0000)]
Daily bump.
From-SVN: r263972
Bernd Edlinger [Wed, 29 Aug 2018 22:16:09 +0000 (22:16 +0000)]
re PR middle-end/87053 (wrong code with c_strlen)
gcc:
2018-08-22 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR middle-end/87053
* builtins.c (c_strlen): Improve range checks.
testsuite:
2018-08-22 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR middle-end/87053
* gcc.c-torture/execute/pr87053.c: New test.
From-SVN: r263968
Jakub Jelinek [Wed, 29 Aug 2018 21:43:18 +0000 (23:43 +0200)]
re PR sanitizer/87095 (UndefinedBehaviorSanitizer vptr false positive with virtual inheritance only with -fno-sanitize-recover)
PR c++/87095
* decl.c (begin_destructor_body): If current_class_type has
virtual bases and the primary base is nearly empty virtual base,
voidify clearing of vptr and make it conditional on in-charge
argument.
* g++.dg/ubsan/vptr-13.C: New test.
From-SVN: r263967
Paolo Carlini [Wed, 29 Aug 2018 20:29:55 +0000 (20:29 +0000)]
re PR c++/85265 ([concepts] ICE with missing identifier)
/cp
2018-08-29 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/85265
* parser.c (cp_parser_introduction_list): If cp_parser_identifier
returns error_mark_node early exit the loop.
(cp_parser_template_introduction): Improve error-recovery, remove
error call about empty introduction-list.
/testsuite
2018-08-29 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/85265
* g++.dg/concepts/pr85265.C: New.
From-SVN: r263966
Martin Sebor [Wed, 29 Aug 2018 17:17:08 +0000 (17:17 +0000)]
re PR middle-end/86714 (tree-ssa-forwprop.c confused by too long initializer)
PR tree-optimization/86714
PR tree-optimization/86711
* builtins.c (c_strlen): Add arguments to call to string_constant.
* expr.c (string_constant): Add argument. Detect missing nul
terminator and outermost declaration it's missing in.
* expr.h (string_constant): Add argument.
* fold-const.c (read_from_constant_string): Add arguments to call to
string_constant.
(c_getstr): Likewise.
* tree-ssa-forwprop.c (simplify_builtin_call): Likewise.
to string_constant.
* tree-ssa-strlen.c (get_stridx): Likewise.
PR tree-optimization/86714
PR tree-optimization/86711
* gcc.c-torture/execute/memchr-1.c: New test.
* gcc.c-torture/execute/pr86714.c: New test.
* gcc.c-torture/execute/widechar-3.c: New test.
* gcc.dg/strlenopt-58.c: New test.
Co-Authored-By: Bernd Edlinger <bernd.edlinger@hotmail.de>
Co-Authored-By: Jeff Law <law@redhat.com>
From-SVN: r263963
Jan Hubicka [Wed, 29 Aug 2018 17:07:35 +0000 (19:07 +0200)]
tree-streamer-in.c (lto_input_ts_function_decl_tree_pointers): Do not stream DECL_VINDEX.
* tree-streamer-in.c (lto_input_ts_function_decl_tree_pointers):
Do not stream DECL_VINDEX.
* tree-streamer-out.c (write_ts_function_decl_tree_pointers): Likewise.
* tree.c (free_lang_data_in_decl): Clear DECL_VINDEX.
(decl_function_context): Use DECL_VIRTUAL_P rather than DECL_VINDEX.
From-SVN: r263962
Richard Biener [Wed, 29 Aug 2018 15:02:06 +0000 (15:02 +0000)]
tree-ssa-sccvn.c (vuse_ssa_val): Return NULL for unvisited virtual operands that are not default defs to honor...
2018-08-29 Richard Biener <rguenther@suse.de>
* tree-ssa-sccvn.c (vuse_ssa_val): Return NULL for unvisited
virtual operands that are not default defs to honor region
boundaries.
(rpo_vn_valueize): Remove ineffective code here.
From-SVN: r263960
Richard Biener [Wed, 29 Aug 2018 14:13:20 +0000 (14:13 +0000)]
re PR tree-optimization/87132 (Gcc miscompiles at -O2 on valid code)
2018-08-29 Richard Biener <rguenther@suse.de>
PR tree-optimization/87132
* tree-ssa-alias.c (get_continuation_for_phi): Do not translate
when skipping defs reachable over backedges.
* gcc.dg/torture/pr87132.c: New testcase.
From-SVN: r263959