platform/upstream/gcc.git
6 years agore PR c++/83958 (ICE: Segmentation fault (in find_decomp_class_base))
Jakub Jelinek [Tue, 23 Jan 2018 13:52:23 +0000 (14:52 +0100)]
re PR c++/83958 (ICE: Segmentation fault (in find_decomp_class_base))

PR c++/83958
* decl.c (cp_finish_decomp): Diagnose if reference structure binding
refers to incomplete type.

* g++.dg/cpp1z/decomp35.C: New test.

From-SVN: r256984

6 years agoClean-up IPA profile dump output.
Martin Liska [Tue, 23 Jan 2018 12:26:37 +0000 (13:26 +0100)]
Clean-up IPA profile dump output.

2018-01-23  Martin Liska  <mliska@suse.cz>

* tree-profile.c (tree_profiling): Print function header to
aware reader which function we are working on.
* value-prof.c (gimple_find_values_to_profile): Do not print
not interesting value histograms.

From-SVN: r256983

6 years agoFix profile_quality sanity check.
Martin Liska [Tue, 23 Jan 2018 12:24:55 +0000 (13:24 +0100)]
Fix profile_quality sanity check.

2018-01-22  Martin Liska  <mliska@suse.cz>

* profile-count.h (enum profile_quality): Add
profile_uninitialized as the first value. Do not number values
as they are zero based.
(profile_count::verify): Update sanity check.
(profile_probability::verify): Likewise.

From-SVN: r256982

6 years ago[C++ PATCH] Deprecate ARM-era for scopes
Nathan Sidwell [Tue, 23 Jan 2018 12:18:50 +0000 (12:18 +0000)]
[C++ PATCH] Deprecate ARM-era for scopes

https://gcc.gnu.org/ml/gcc-patches/2018-01/msg01940.html
gcc/cp/
Deprecate ARM-era for scope handling
* decl.c (poplevel): Flag_new_for_scope is a boolean-like.
(cxx_init_decl_processing): Deprecate flag_new_for_scope being
cleared.
* name-lookup.c (check_for_out_of_scope_variable): Deprecate and
cleanup handling.
* semantics.c (begin_for_scope): Flag_new_for_scope is
boolean-like.
(finish_for_stmt, begin_range_for_stmt): Likewise.

gcc/
* doc/invoke.texi (ffor-scope): Deprecate.

gcc/cp/
* g++.dg/cpp0x/range-for10.C: Adjust.
* g++.dg/ext/forscope1.C: Adjust.
* g++.dg/ext/forscope2.C: Adjust.
* g++.dg/template/for1.C: Adjust.

From-SVN: r256981

6 years ago-Warray-bounds: Fix false positive in some "switch" stmts (PR tree-optimization/83510)
David Malcolm [Tue, 23 Jan 2018 11:10:47 +0000 (11:10 +0000)]
-Warray-bounds: Fix false positive in some "switch" stmts (PR tree-optimization/83510)

PR tree-optimization/83510 reports that r255649 (for
PR tree-optimization/83312) introduced a false positive for
-Warray-bounds for array accesses within certain switch statements:
those for which value-ranges allow more than one case to be reachable,
but for which one or more of the VR-unreachable cases contain
out-of-range array accesses.

In the reproducer, after the switch in f is inlined into g, we have 3 cases
for the switch (case 9, case 10-19, and default), within a loop that
ranges from 0..9.

With both the old and new code, vr_values::simplify_switch_using_ranges clears
the EDGE_EXECUTABLE flag on the edge to the "case 10-19" block.  This
happens during the dom walk within the substitute_and_fold_engine.

With the old code, the clearing of that EDGE_EXECUTABLE flag led to the
      /* Skip blocks that were found to be unreachable.  */
code in the old implementation of vrp_prop::check_all_array_refs skipping
the "case 10-19" block.

With the new code, we have a second dom walk, and that dom_walker's ctor
sets all edges to be EDGE_EXECUTABLE, losing that information.

Then, dom_walker::before_dom_children (here, the subclass'
check_array_bounds_dom_walker::before_dom_children) can return one edge, if
there's a unique successor edge, and dom_walker::walk filters the dom walk
to just that edge.

Here we have two VR-valid edges (case 9 and default), and an VR-invalid
successor edge (case 10-19).  There's no *unique* valid successor edge,
and hence taken_edge is NULL, and the filtering in dom_walker::walk
doesn't fire.

Hence we've lost the filtering of the "case 10-19" BB, hence the false
positive.

The issue is that we have two dom walks: first within vr_values'
substitute_and_fold_dom_walker (which has skip_unreachable_blocks == false),
then another within vrp_prop::check_all_array_refs (with
skip_unreachable_blocks == true).

Each has different "knowledge" about ruling out edges due to value-ranges,
but we aren't combining that information.  The former "knows" about
out-edges at a particular control construct (e.g. at a switch), the latter
"knows" about dominance, but only about unique successors (hence the
problem when two out of three switch cases are valid).

This patch combines the information by preserving the EDGE_EXECUTABLE
flags from the first dom walk, and using it in the second dom walk,
potentially rejecting additional edges.

Doing so fixes the false positive.

I attempted an alternative fix, merging the two dom walks into one, but
that led to crashes in identify_jump_threads, so I went with this, as
a less invasive fix.

gcc/ChangeLog:
PR tree-optimization/83510
* domwalk.c (set_all_edges_as_executable): New function.
(dom_walker::dom_walker): Convert bool param
"skip_unreachable_blocks" to enum reachability.  Move setup of
edge flags to set_all_edges_as_executable and only do it when
reachability is REACHABLE_BLOCKS.
* domwalk.h (enum dom_walker::reachability): New enum.
(dom_walker::dom_walker): Convert bool param
"skip_unreachable_blocks" to enum reachability.
(set_all_edges_as_executable): New decl.
* graphite-scop-detection.c  (gather_bbs::gather_bbs): Convert
from false for "skip_unreachable_blocks" to ALL_BLOCKS for
"reachability".
* tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise,
but converting true to REACHABLE_BLOCKS.
* tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise.
* tree-vrp.c
(check_array_bounds_dom_walker::check_array_bounds_dom_walker):
Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS.
(vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to
REACHABLE_BLOCKS.
(vrp_prop::vrp_finalize): Call set_all_edges_as_executable
if check_all_array_refs will be called.

gcc/testsuite/ChangeLog:
PR tree-optimization/83510
* gcc.c-torture/compile/pr83510.c: New test case.

From-SVN: r256980

6 years agoAdd more test coverage to selftest::test_location_wrappers
David Malcolm [Tue, 23 Jan 2018 11:05:21 +0000 (11:05 +0000)]
Add more test coverage to selftest::test_location_wrappers

gcc/ChangeLog:
* tree.c (selftest::test_location_wrappers): Add more test
coverage.

From-SVN: r256979

6 years agoFix memory leaks in sbitmap.c selftests
David Malcolm [Tue, 23 Jan 2018 11:01:55 +0000 (11:01 +0000)]
Fix memory leaks in sbitmap.c selftests

"make selftest-valgrind" shows a few leaks in sbitmap.c's selftests;
this patch fixes them.

gcc/ChangeLog:
* sbitmap.c (selftest::test_set_range): Fix memory leaks.
(selftest::test_bit_in_range): Likewise.

From-SVN: r256978

6 years agoFix vect_float markup for a couple of tests (PR 83888)
Richard Sandiford [Tue, 23 Jan 2018 10:42:32 +0000 (10:42 +0000)]
Fix vect_float markup for a couple of tests (PR 83888)

vect_float is true for arm*-*-* targets, but the support is only
available when -funsafe-math-optimizations is on.  This caused
failures in two tests that disable fast-math.

The easiest fix seemed to be to add a new target selector for
"vect_float without special options".

2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
PR testsuite/83888
* doc/sourcebuild.texi (vect_float): Say that the selector
only describes the situation when -funsafe-math-optimizations is on.
(vect_float_strict): Document.

gcc/testsuite/
PR testsuite/83888
* lib/target-supports.exp (check_effective_target_vect_float): Say
that the result only holds when -funsafe-math-optimizations is on.
(check_effective_target_vect_float_strict): New procedure.
* gcc.dg/vect/no-fast-math-vect16.c: Use vect_float_strict instead
of vect_float.
* gcc.dg/vect/vect-reduc-6.c: Likewise.

From-SVN: r256977

6 years agoDisable some patterns for fold-left reductions (PR 83965)
Richard Sandiford [Tue, 23 Jan 2018 10:42:10 +0000 (10:42 +0000)]
Disable some patterns for fold-left reductions (PR 83965)

In this PR we recognised a PLUS_EXPR as a fold-left reduction,
then applied pattern matching to convert it to a WIDEN_SUM_EXPR.
We need to keep the original code in this case since we implement
the reduction using scalar rather than vector operations.

2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
PR tree-optimization/83965
* tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
(vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it
instead of checking only for a reduction.
(vect_recog_widen_sum_pattern): Likewise.

gcc/testsuite/
PR tree-optimization/83965
* gcc.dg/vect/pr83965.c: New test.

From-SVN: r256976

6 years agopredict.c (probably_never_executed): Only use precise profile info.
Jan Hubicka [Tue, 23 Jan 2018 09:55:37 +0000 (10:55 +0100)]
predict.c (probably_never_executed): Only use precise profile info.

* predict.c (probably_never_executed): Only use precise profile info.
(compute_function_frequency): Skip after inlining hack since we now
have quality checking.

From-SVN: r256975

6 years agoprofile-count.h (profile_probability::very_unlikely, [...]): Set precision to guessed.
Jan Hubicka [Tue, 23 Jan 2018 09:50:01 +0000 (10:50 +0100)]
profile-count.h (profile_probability::very_unlikely, [...]): Set precision to guessed.

* profile-count.h (profile_probability::very_unlikely,
profile_probability::unlikely, profile_probability::even): Set
precision to guessed.

From-SVN: r256974

6 years agore PR tree-optimization/83963 ([graphite] ICE in merge_sese, at graphite-scop-detecti...
Richard Biener [Tue, 23 Jan 2018 08:00:20 +0000 (08:00 +0000)]
re PR tree-optimization/83963 ([graphite] ICE in merge_sese, at graphite-scop-detection.c:517)

2018-01-23  Richard Biener  <rguenther@suse.de>

PR tree-optimization/83963
* graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
Properly terminate dominator walk when crossing the exit edge not
when visiting its source block.

* gfortran.dg/graphite/pr83963.f: New testcase.
* gcc.dg/graphite/pr83963-2.c: Likewise.

From-SVN: r256973

6 years agore PR c++/83918 ([c++17] ICE on constexpr eval of datatype involving function and...
Jakub Jelinek [Tue, 23 Jan 2018 07:46:05 +0000 (08:46 +0100)]
re PR c++/83918 ([c++17] ICE on constexpr eval of datatype involving function and variadic template)

PR c++/83918
* tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than
VIEW_CONVERT_EXPR to wrap CONST_DECLs.

* g++.dg/cpp1z/pr83918.C: New test.

From-SVN: r256972

6 years agocmd/go: buildid support for AIX archives.
Ian Lance Taylor [Tue, 23 Jan 2018 04:44:12 +0000 (04:44 +0000)]
cmd/go: buildid support for AIX archives.

    Reviewed-on: https://go-review.googlesource.com/88935

From-SVN: r256971

6 years agoDaily bump.
GCC Administrator [Tue, 23 Jan 2018 00:16:21 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r256970

6 years agore PR tree-optimization/83957 (ICE: Segmentation fault (in gimple_phi_arg))
Jakub Jelinek [Mon, 22 Jan 2018 23:00:50 +0000 (00:00 +0100)]
re PR tree-optimization/83957 (ICE: Segmentation fault (in gimple_phi_arg))

PR tree-optimization/83957
* omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs.  Remove
semicolon after for body surrounded by braces.

* gcc.dg/autopar/pr83957.c: New test.

From-SVN: r256967

6 years agore PR tree-optimization/83081 ([arm] gcc.dg/pr80218.c fails since r254888)
Jakub Jelinek [Mon, 22 Jan 2018 22:59:33 +0000 (23:59 +0100)]
re PR tree-optimization/83081 ([arm] gcc.dg/pr80218.c fails since r254888)

PR tree-optimization/83081
* profile-count.h (profile_probability::split): New method.
* dojump.c (do_jump_1) <case TRUTH_ANDIF_EXPR, case TRUTH_ORIF_EXPR>:
Use profile_probability::split.
(do_compare_rtx_and_jump): Fix adjustment of probabilities
when splitting a single conditional jump into 2.

* gcc.dg/predict-8.c: Adjust expected probability.

From-SVN: r256966

6 years agoPR c++/83720 - different fix
Jason Merrill [Mon, 22 Jan 2018 22:41:48 +0000 (17:41 -0500)]
PR c++/83720 - different fix

* decl2.c (determine_visibility): Fix template_decl handling
instead of blocking it.

From-SVN: r256965

6 years agoPR c++/83720 - ICE with lambda and LTO.
Jason Merrill [Mon, 22 Jan 2018 21:51:53 +0000 (16:51 -0500)]
PR c++/83720 - ICE with lambda and LTO.

* decl2.c (determine_visibility): Clear template_decl for
function-scope decls.  Propagate anonymous linkage from containing
function.

From-SVN: r256964

6 years agoFinish removing class move_computations_dom_walker
David Malcolm [Mon, 22 Jan 2018 20:53:57 +0000 (20:53 +0000)]
Finish removing class move_computations_dom_walker

r232820 (aka 2c7b2f8860794cc9b9cf5eeea9d7dc109c0de3be) removed the
implementation of class move_computations_dom_walker, but kept the decl.

This patch removes the stray decl.

gcc/ChangeLog:
PR tree-optimization/69452
* tree-ssa-loop-im.c (class move_computations_dom_walker): Remove
decl.

From-SVN: r256963

6 years agorl78-expand.md: New define_expand "bswaphi2"
Sebastian Perta [Mon, 22 Jan 2018 20:20:28 +0000 (20:20 +0000)]
rl78-expand.md: New define_expand "bswaphi2"

2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>

* config/rl78/rl78-expand.md: New define_expand "bswaphi2"
* config/rl78/rl78-virt.md: New define_insn "*bswaphi2_virt"
* config/rl78/rl78-real.md: New define_insn "*bswaphi2_real"

From-SVN: r256961

6 years agorl78-protos.h: New function declaration rl78_split_movdi
Sebastian Perta [Mon, 22 Jan 2018 19:53:55 +0000 (19:53 +0000)]
rl78-protos.h: New function declaration rl78_split_movdi

2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>

* config/rl78/rl78-protos.h: New function declaration rl78_split_movdi
* config/rl78/rl78.md: New define_expand "movdi"
* config/rl78/rl78.c: New function definition rl78_split_movdi

From-SVN: r256960

6 years agore PR target/83862 (powerpc: ICE in signbit testcase)
Michael Meissner [Mon, 22 Jan 2018 19:36:18 +0000 (19:36 +0000)]
re PR target/83862 (powerpc: ICE in signbit testcase)

[gcc]
2018-01-22  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/83862
* config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
no longer used.
* config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
* config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
128-bit to produce an UNSPEC move to get the double word with the
signbit and then a shift directly to do signbit.
(signbit<mode>2_dm): Replace old IEEE 128-bit signbit
implementation with a new version that just does either a direct
move or a regular move.  Move memory interface to separate insns.
Move insns so they are next to the expander.
(signbit<mode>2_dm_mem_be): New combiner insns to combine load
with signbit move.  Split big and little endian case.
(signbit<mode>2_dm_mem_le): Likewise.
(signbit<mode>2_dm_<su>ext): Delete, no longer used.
(signbit<mode>2_dm2): Likewise.

[gcc/testsuite]
2018-01-22  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/83862
* gcc.target/powerpc/pr83862.c: New test.

From-SVN: r256959

6 years agorl78.md: New define_expand "anddi3".
Sebastian Perta [Mon, 22 Jan 2018 19:23:15 +0000 (19:23 +0000)]
rl78.md: New define_expand "anddi3".

2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>

* config/rl78/rl78.md: New define_expand "anddi3".

2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>

* config/rl78/anddi3.S: New assembly file.
* config/rl78/t-rl78: Added anddi3.S to LIB2ADD.

From-SVN: r256958

6 years agorl78.md: New define_expand "umindi3".
Sebastian Perta [Mon, 22 Jan 2018 18:51:28 +0000 (18:51 +0000)]
rl78.md: New define_expand "umindi3".

2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>

* config/rl78/rl78.md: New define_expand "umindi3".

2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>

* config/rl78/umindi3.S: New assembly file.
* config/rl78/t-rl78: Added umindi3.S to LIB2ADD.

From-SVN: r256957

6 years ago* es.po: Update.
Joseph Myers [Mon, 22 Jan 2018 18:22:58 +0000 (18:22 +0000)]
* es.po: Update.

From-SVN: r256955

6 years agorl78.md: New define_expand "smindi3".
Sebastian Perta [Mon, 22 Jan 2018 18:17:09 +0000 (18:17 +0000)]
rl78.md: New define_expand "smindi3".

2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>

* config/rl78/rl78.md: New define_expand "smindi3".

2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>

* config/rl78/smindi3.S: New assembly file.
* config/rl78/t-rl78: Added smindi3.S to LIB2ADD.

From-SVN: r256954

6 years agorl78.md: New define_expand "smaxdi3".
Sebastian Perta [Mon, 22 Jan 2018 17:38:26 +0000 (17:38 +0000)]
rl78.md: New define_expand "smaxdi3".

2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>

* config/rl78/rl78.md: New define_expand "smaxdi3".

2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>

* config/rl78/smaxdi3.S: New assembly file.
* config/rl78/t-rl78: Added smaxdi3.S to LIB2ADD.

From-SVN: r256953

6 years agors6000-builtin.def (ST_ELEMREV_V1TI, [...]): Add macro expansion.
Carl Love [Mon, 22 Jan 2018 17:27:12 +0000 (17:27 +0000)]
rs6000-builtin.def (ST_ELEMREV_V1TI, [...]): Add macro expansion.

gcc/ChangeLog:

2018-01-22 Carl Love <cel@us.ibm.com>

* config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
LVX_V1TI): Add macro expansion.
* config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument
definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST,
VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins.
* config/rs6000/rs6000-p8swap.c (insn_is_swappable_p);
Change check to determine if the instruction is a byte reversing
entry.  Fix typo in comment.
* config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry
for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI.
Add def_builtin calls for new builtins.
* config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti):
Add define_insn expansion.

gcc/testsuite/ChangeLog:

2018-01-22  Carl Love  <cel@us.ibm.com>
* gcc.target/powerpc/powerpc.exp: Add torture tests for
builtins-4-runnable.c, builtins-6-runnable.c,
builtins-5-p9-runnable.c, builtins-6-p9-runnable.c.
* gcc.target/powerpc/builtins-6-runnable.c: New test file.
* gcc.target/powerpc/builtins-4-runnable.c: Add additional tests
for signed/unsigned 128-bit and long long int loads.

From-SVN: r256952

6 years agore PR c++/81933 (Invalid "constexpr call flows off the end of the function" error)
Marek Polacek [Mon, 22 Jan 2018 16:05:20 +0000 (16:05 +0000)]
re PR c++/81933 (Invalid "constexpr call flows off the end of the function" error)

PR c++/81933
* typeck2.c (split_nonconstant_init_1): Return false if we didn't
split out anything.

* g++.dg/cpp1y/constexpr-empty4.C: New test.

From-SVN: r256951

6 years agofixed year in gcc/ChangeLog and libgcc/ChangeLog
Sebastian Perta [Mon, 22 Jan 2018 15:05:59 +0000 (15:05 +0000)]
fixed year in gcc/ChangeLog and libgcc/ChangeLog

From-SVN: r256949

6 years agorl78.md: New define_expand "umaxdi3".
Sebastian Perta [Mon, 22 Jan 2018 15:00:59 +0000 (15:00 +0000)]
rl78.md: New define_expand "umaxdi3".

2017-01-22  Sebastian Perta  <sebastian.perta@renesas.com>

* config/rl78/rl78.md: New define_expand "umaxdi3".

2017-01-22  Sebastian Perta  <sebastian.perta@renesas.com>

* config/rl78/umaxdi3.S: New assembly file.
* config/rl78/t-rl78: Added umaxdi3.S to LIB2ADD.

From-SVN: r256948

6 years agofold-vec-abs-short-fwrap.c: Add xxspltib to scan-asembler valid instructions list.
Will Schmidt [Mon, 22 Jan 2018 14:49:57 +0000 (14:49 +0000)]
fold-vec-abs-short-fwrap.c: Add xxspltib to scan-asembler valid instructions list.

[testsuite]

2018-01-19  Will Schmidt <will_schmidt@vnet.ibm.com>

* gcc.target/powerpc/fold-vec-abs-short-fwrap.c: Add xxspltib to
scan-asembler valid instructions list.
* gcc.target/powerpc/fold-vec-abs-short.c: Same.
* gcc.target/powerpc/fold-vec-shift-left-longlong.c: Clean up
power8-vector requirement and option.
* gcc.target/powerpc/fold-vec-shift-left-fwrapv.c: Same.

From-SVN: r256947

6 years agorl78.c (rl78_note_reg_set): fixed dead reg check for non-QImode registers
Sebastian Perta [Mon, 22 Jan 2018 13:53:48 +0000 (13:53 +0000)]
rl78.c (rl78_note_reg_set): fixed dead reg check for non-QImode registers

2018-01-12  Sebastian Perta  <sebastian.perta@renesas.com>

* config/rl78/rl78.c (rl78_note_reg_set): fixed dead reg check
for non-QImode registers

From-SVN: r256945

6 years agoPR 78534, 83704 Large character lengths
Janne Blomqvist [Mon, 22 Jan 2018 13:31:08 +0000 (15:31 +0200)]
PR 78534, 83704 Large character lengths

This patch fixes various parts of the code to use a larger type than
int for the character length. Depending on the situation,
HOST_WIDE_INT, size_t, or gfc_charlen_t is appropriate.

Regtested on x86_64-pc-linux-gnu and i686-pc-linux-gnu.

gcc/fortran/ChangeLog:

2018-01-22  Janne Blomqvist  <jb@gcc.gnu.org>

PR 78534
PR 83704
* arith.c (gfc_arith_concat): Use size_t for string length.
(gfc_compare_string): Likewise.
(gfc_compare_with_Cstring): Likewise.
* array.c (gfc_resolve_character_array_constructor): Use
HOST_WIDE_INT, gfc_mpz_get_hwi.
* check.c (gfc_check_fe_runtime_error): Use size_t.
* data.c (create_character_initializer): Use HOST_WIDE_INT,
gfc_extract_hwi.
* decl.c (gfc_set_constant_character_len): Use gfc_charlen_t.
(add_init_expr_to_sym): Use HOST_WIDE_INT.
* expr.c (gfc_build_init_expr): Use HOST_WIDE_INT,
gfc_extract_hwi.
(gfc_apply_init): Likewise.
* match.h (gfc_set_constant_character_len): Update prototype.
* primary.c (match_string_constant): Use size_t.
* resolve.c (resolve_ordinary_assign): Use HOST_WIDE_INT,
gfc_mpz_get_hwi.
* simplify.c (init_result_expr): Likewise.
(gfc_simplify_len_trim): Use size_t.
* target-memory.c (gfc_encode_character): Use size_t.
(gfc_target_encode_expr): Use HOST_WIDE_INT, gfc_mpz_get_hwi.
(interpret_array): Use size_t.
(gfc_interpret_character): Likewise.
* target-memory.h (gfc_encode_character): Update prototype.
(gfc_interpret_character): Likewise.
(gfc_target_interpret_expr): Likewise.
* trans-const.c (gfc_build_string_const): Use size_t for length
argument.
(gfc_build_wide_string_const): Likewise.
* trans-const.h (gfc_build_string_const): Likewise.
(gfc_build_wide_string_const): Likewise.

2018-01-22  Janne Blomqvist  <jb@gcc.gnu.org>

PR 78534
PR 83704
* gfortran.dg/string_1.f90: Remove printing the length.

From-SVN: r256944

6 years agore PR tree-optimization/83963 ([graphite] ICE in merge_sese, at graphite-scop-detecti...
Richard Biener [Mon, 22 Jan 2018 13:10:57 +0000 (13:10 +0000)]
re PR tree-optimization/83963 ([graphite] ICE in merge_sese, at graphite-scop-detection.c:517)

2018-01-22  Richard Biener  <rguenther@suse.de>

PR tree-optimization/83963
* graphite-scop-detection.c (scop_detection::get_sese): Delay
including the loop exit block.
(scop_detection::merge_sese): Likewise.
(scop_detection::add_scop): Do it here instead.

* gcc.dg/graphite/pr83963.c: New testcase.

From-SVN: r256943

6 years agore PR c++/83895 (-Wparentheses warns about pointer-to-member typedefs)
Ville Voutilainen [Mon, 22 Jan 2018 12:44:33 +0000 (14:44 +0200)]
re PR c++/83895 (-Wparentheses warns about pointer-to-member typedefs)

PR c++/83895

cp/

* decl.c (grokdeclarator): Don't diagnose extra parens
on typedefs.

testsuite/

* g++.dg/warn/83895.C: New.

From-SVN: r256942

6 years ago[ARM] Fix test fail with conflicting -mfloat-abi
Sudakshina Das [Mon, 22 Jan 2018 10:56:26 +0000 (10:56 +0000)]
[ARM] Fix test fail with conflicting -mfloat-abi

This patch fixes my earlier test case that fails for arm-none-eabi
with explicit user option for -mfloat-abi which conflict with
the test case options. I have added a guard to skip the test
on those cases.

ChangeLog entries:

*** gcc/testsuite/ChangeLog ***

2018-01-22  Sudakshina Das  <sudi.das@arm.com>

* gcc.c-torture/compile/pr82096.c: Add dg-skip-if and
dg-require-effective-target directives.

From-SVN: r256941

6 years ago[arm] Make gcc.target/arm/copysign_softfloat_1.c more robust
Kyrylo Tkachov [Mon, 22 Jan 2018 10:50:20 +0000 (10:50 +0000)]
[arm] Make gcc.target/arm/copysign_softfloat_1.c more robust

This test has needlessly restrictive requirements. It tries to force a soft-float target and tries to run.
This makes it unsupportable for any non-soft-float variant.
In fact, the test can be a run-time test for any target, and only the scan-assembler tests are specific to
-mfloat-abi=soft. So this patch makes the test always runnable and makes the scan-assembler checks predicable
on the the new arm_sotftfloat effective target check.

* doc/sourcebuild.texi (arm_softfloat): Document.

* lib/target-supports.exp (check_effective_target_arm_softfloat):
New procedure.
* gcc.target/arm/copysign_softfloat_1.c: Allow running everywhere.
Adjust scan-assembler checks for soft-float.

From-SVN: r256940

6 years agore PR target/83946 (Safe Indirect Jumps broken on AIX)
Bill Schmidt [Mon, 22 Jan 2018 02:46:11 +0000 (02:46 +0000)]
re PR target/83946 (Safe Indirect Jumps broken on AIX)

2018-01-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

PR target/83946
* gcc.target/powerpc/safe-indirect-jump-8.c: Skip for AIX.

From-SVN: r256939

6 years agoDaily bump.
GCC Administrator [Mon, 22 Jan 2018 00:16:13 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r256938

6 years agopr83621.c: Add -fno-common additional option on hppa*-&-hpux*.
John David Anglin [Sun, 21 Jan 2018 18:35:49 +0000 (18:35 +0000)]
pr83621.c: Add -fno-common additional option on hppa*-&-hpux*.

* gcc.dg/pr83621.c: Add -fno-common additional option on hppa*-&-hpux*.
* gcc.dg/pr83623.c: Likewise.
* gcc.dg/pr83666.c: Likewise.

From-SVN: r256935

6 years agore PR testsuite/77734 (FAIL: gcc.dg/plugin/must-tail-call-1.c -fplugin=./must_tail_ca...
John David Anglin [Sun, 21 Jan 2018 18:15:31 +0000 (18:15 +0000)]
re PR testsuite/77734 (FAIL: gcc.dg/plugin/must-tail-call-1.c -fplugin=./must_tail_call_plugin.so (test  for excess errors))

PR gcc/77734
* config/pa/pa.c (pa_function_ok_for_sibcall): Use
targetm.binds_local_p instead of TREE_PUBLIC to check local binding.
Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.

From-SVN: r256934

6 years agore PR lto/83452 (FAIL: gfortran.dg/save_6.f90 -O0 (test for excess errors))
John David Anglin [Sun, 21 Jan 2018 17:52:44 +0000 (17:52 +0000)]
re PR lto/83452 (FAIL: gfortran.dg/save_6.f90   -O0  (test for excess errors))

PR lto/83452
* config/pa/stublib.c (L_gnu_lto_v1): New stub definition.
* config/pa/t-stublib (gnu_lto_v1-stub.o): Add make fragment.

From-SVN: r256933

6 years agore PR target/83946 (Safe Indirect Jumps broken on AIX)
Bill Schmidt [Sun, 21 Jan 2018 13:26:07 +0000 (13:26 +0000)]
re PR target/83946 (Safe Indirect Jumps broken on AIX)

[gcc]

2018-01-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
    David Edelsohn <dje.gcc@gmail.com>

PR target/83946
* config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
Change "crset eq" to "crset 2".
(*call_value_indirect_nonlocal_sysv<mode>): Likewise.
(*call_indirect_aix<mode>_nospec): Likewise.
(*call_value_indirect_aix<mode>_nospec): Likewise.
(*call_indirect_elfv2<mode>_nospec): Likewise.
(*call_value_indirect_elfv2<mode>_nospec): Likewise.
(*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
change assembly output from . to $.
(*sibcall_value_nonlocal_sysv<mode>): Likewise.
(indirect_jump<mode>_nospec): Change assembly output from . to $.
(*tablejump<mode>_internal1_nospec): Likewise.

[gcc/testsuite]

2018-01-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
    David Edelsohn <dje.gcc@gmail.com>

PR target/83946
* gcc.target/powerpc/safe-indirect-jump-1.c: Change expected
assembly output from "crset eq" to "crset 2".
* gcc.target/powerpc/safe-indirect-jump-2.c: Change expected
assembly output from . to $.
* gcc.target/powerpc/safe-indirect-jump-3.c: Likewise.
* gcc.target/powerpc/safe-indirect-jump-1.c: Change expected
assembly output from "crset eq" to "crset 2".
* gcc.target/powerpc/safe-indirect-jump-8.c: Change expected
assembly output from "crset eq" to "crset 2", and from . to $.

Co-Authored-By: David Edelsohn <dje.gcc@gmail.com>
From-SVN: r256931

6 years agoFix ChangeLog entry.
Oleg Endo [Sun, 21 Jan 2018 05:12:01 +0000 (05:12 +0000)]
Fix ChangeLog entry.

From-SVN: r256927

6 years agore PR target/80870 (ICE building 7.1.0 sh-elf crosscompiler on macOS)
Oleg Endo [Sun, 21 Jan 2018 05:03:26 +0000 (05:03 +0000)]
re PR target/80870 (ICE building 7.1.0 sh-elf crosscompiler on macOS)

PR target/80870
* config/sh/rx/rx.c (config/sh/sh_optimize_sett_clrt.cc):
Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.

From-SVN: r256926

6 years agosimple-object-xcoff.c (simple_object_xcoff_find_sections): Use ulong_type to avoid...
Eli Zaretskii [Sun, 21 Jan 2018 05:01:31 +0000 (05:01 +0000)]
simple-object-xcoff.c (simple_object_xcoff_find_sections): Use ulong_type to avoid warning about 32-bit shift.

* simple-object-xcoff.c (simple_object_xcoff_find_sections): Use
ulong_type to avoid warning about 32-bit shift.

From-SVN: r256925

6 years agoDaily bump.
GCC Administrator [Sun, 21 Jan 2018 00:16:29 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r256924

6 years agore PR fortran/83900 (ICE in gfc_simplify_matmul, at fortran/simplify.c:4593)
Steven G. Kargl [Sat, 20 Jan 2018 20:33:34 +0000 (20:33 +0000)]
re PR fortran/83900 (ICE in gfc_simplify_matmul, at fortran/simplify.c:4593)

2018-01-20  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/83900
    * simplify.c (gfc_simplify_matmul): Set return type correctly.

2018-01-20  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/83900
* gfortran.dg/matmul_18.f90: New test.

From-SVN: r256919

6 years agoFix vect_def_type handling in x86 scatter support (PR 83940)
Richard Sandiford [Sat, 20 Jan 2018 13:43:22 +0000 (13:43 +0000)]
Fix vect_def_type handling in x86 scatter support (PR 83940)

As Jakub says in the PR, the problem here was that the x86/built-in
version of the scatter support was using a bogus scatter_src_dt
when calling vect_get_vec_def_for_stmt_copy (and had since it
was added).  The patch uses the vect_def_type from the original
call to vect_is_simple_use instead.

However, Jakub also pointed out that other parts of the load and store
code passed the vector operand rather than the scalar operand to
vect_is_simple_use.  That probably works most of the time since
a constant scalar operand should give a constant vector operand,
and likewise for external and internal definitions.  But it
definitely seems more robust to pass the scalar operand.

The patch avoids the issue for gather and scatter offsets by
using the cached gs_info.offset_dt.  This is safe because gathers
and scatters are never grouped, so there's only one statement operand
to consider.  The patch also caches the vect_def_type for mask operands,
which is safe because grouped masked operations share the same mask.

That just leaves the store rhs.  We still need to recalculate the
vect_def_type there since different store values in the group can
have different definition types.  But since we still have access
to the original scalar operand, it seems better to use that instead.

2018-01-20  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
PR tree-optimization/83940
* tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set
offset_dt to vect_constant_def rather than vect_unknown_def_type.
(vect_check_load_store_mask): Add a mask_dt_out parameter and
use it to pass back the definition type.
(vect_check_store_rhs): Likewise rhs_dt_out.
(vect_build_gather_load_calls): Add a mask_dt argument and use
it instead of a call to vect_is_simple_use.
(vectorizable_store): Update calls to vect_check_load_store_mask
and vect_check_store_rhs.  Use the dt returned by the latter instead
of scatter_src_dt.  Use the cached mask_dt and gs_info.offset_dt
instead of calls to vect_is_simple_use.  Pass the scalar rather
than the vector operand to vect_is_simple_use when handling
second and subsequent copies of an rhs value.
(vectorizable_load): Update calls to vect_check_load_store_mask
and vect_build_gather_load_calls.  Use the cached mask_dt and
gs_info.offset_dt instead of calls to vect_is_simple_use.

gcc/testsuite/
PR tree-optimization/83940
* gcc.dg/torture/pr83940.c: New test.

From-SVN: r256918

6 years agore PR middle-end/83945 (internal compiler error: Segmentation fault with -O -fcode...
Jakub Jelinek [Sat, 20 Jan 2018 09:58:31 +0000 (10:58 +0100)]
re PR middle-end/83945 (internal compiler error: Segmentation fault with -O -fcode-hoisting)

PR middle-end/83945
* tree-emutls.c: Include gimplify.h.
(lower_emutls_2): New function.
(lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
it before further processing.

* gcc.dg/tls/pr83945.c: New test.

From-SVN: r256916

6 years agore PR target/83930 (ICE: RTL check: expected code 'const_int', have 'mem' in simplify...
Jakub Jelinek [Sat, 20 Jan 2018 09:54:06 +0000 (10:54 +0100)]
re PR target/83930 (ICE: RTL check: expected code 'const_int', have 'mem' in simplify_binary_operation_1, at simplify-rtx.c:3302)

PR target/83930
* simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
UINTVAL (trueop1) instead of INTVAL (op1).

* gcc.dg/pr83930.c: New test.

From-SVN: r256915

6 years agore PR fortran/83900 (ICE in gfc_simplify_matmul, at fortran/simplify.c:4593)
Steven G. Kargl [Sat, 20 Jan 2018 06:15:55 +0000 (06:15 +0000)]
re PR fortran/83900 (ICE in gfc_simplify_matmul, at fortran/simplify.c:4593)

2018-01-19  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/83900
* simplify.c (gfc_simplify_matmul): Delete bogus assertion.

2018-01-19  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/83900
* gfortran.dg/matmul_17.f90: New test.

From-SVN: r256912

6 years agoDaily bump.
GCC Administrator [Sat, 20 Jan 2018 00:16:35 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r256911

6 years agore PR fortran/80768 (NULL pointer dereferenced in gfc_check_num_images at fortran...
Steven G. Kargl [Fri, 19 Jan 2018 23:28:18 +0000 (23:28 +0000)]
re PR fortran/80768 (NULL pointer dereferenced in gfc_check_num_images at fortran/check.c)

2018-01-19  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/80768
* gfortran.dg/num_images_1.f90:  New test that tests fix in r250734.

From-SVN: r256906

6 years agore PR c++/81167 (ICE on valid C++ code in deferred_printed_type, at cp/error.c:118)
Jakub Jelinek [Fri, 19 Jan 2018 22:37:37 +0000 (23:37 +0100)]
re PR c++/81167 (ICE on valid C++ code in deferred_printed_type, at cp/error.c:118)

PR c++/81167
* call.c (joust): Use TREE_TYPE (source) if source is
a POINTER_TYPE_P rather than if ! DECL_CONSTRUCTOR_P (w->fn).

* g++.dg/cpp0x/pr81167.C: New test.

From-SVN: r256905

6 years agore PR debug/81570 (create_pseudo_cfg assumes that INCOMING_FRAME_SP_OFFSET is a constant)
Jakub Jelinek [Fri, 19 Jan 2018 22:36:04 +0000 (23:36 +0100)]
re PR debug/81570 (create_pseudo_cfg assumes that INCOMING_FRAME_SP_OFFSET is a constant)

PR debug/81570
PR debug/83728
* dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to
INCOMING_FRAME_SP_OFFSET if not defined.
(scan_trace): Add ENTRY argument.  If true and
DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET,
emit a note to adjust the CFA offset.
(create_cfi_notes): Adjust scan_trace callers.
(create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than
INCOMING_FRAME_SP_OFFSET in the CIE.
* config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define.
* config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET):
Likewise.
* doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document.
* doc/tm.texi: Regenerated.

From-SVN: r256904

6 years agore PR c++/83919 (spurious -Wignored-qualifiers warning)
Jakub Jelinek [Fri, 19 Jan 2018 22:35:09 +0000 (23:35 +0100)]
re PR c++/83919 (spurious -Wignored-qualifiers warning)

PR c++/83919
* typeck.c (convert_for_assignment): Suppress warn_ignored_qualifiers
for direct enum init.
* decl.c (reshape_init): Likewise.

* g++.dg/cpp0x/pr83919.C: New test.

From-SVN: r256903

6 years agore PR rtl-optimization/83147 (LRA inheritance undo on multiple sets problem)
Andreas Krebbel [Fri, 19 Jan 2018 22:16:30 +0000 (22:16 +0000)]
re PR rtl-optimization/83147 (LRA inheritance undo on multiple sets problem)

2018-01-19  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

PR rtl-optimization/83147
* lra-constraints.c (remove_inheritance_pseudos): Use
lra_substitute_pseudo_within_insn.

From-SVN: r256902

6 years ago* constexpr.c (fold_simple): Simplify.
Marek Polacek [Fri, 19 Jan 2018 20:52:21 +0000 (20:52 +0000)]
* constexpr.c (fold_simple): Simplify.

From-SVN: r256899

6 years agostack-check-16.c: New test.
Jeff Law [Fri, 19 Jan 2018 18:42:30 +0000 (11:42 -0700)]
stack-check-16.c: New test.

* gcc.dg/stack-check-16.c: New test.

Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r256896

6 years agoxcoff.c (xcoff_incl_compare): New function.
Tony Reix [Fri, 19 Jan 2018 17:45:24 +0000 (17:45 +0000)]
xcoff.c (xcoff_incl_compare): New function.

* xcoff.c (xcoff_incl_compare): New function.
(xcoff_incl_search): New function.
(xcoff_process_linenos): Use bsearch to find include file.
(xcoff_initialize_fileline): Sort include file information.

From-SVN: r256895

6 years ago[nvptx] Fix bug in jit bug workaround
Tom de Vries [Fri, 19 Jan 2018 16:29:41 +0000 (16:29 +0000)]
[nvptx] Fix bug in jit bug workaround

2018-01-19  Tom de Vries  <tom@codesourcery.com>
    Cesar Philippidis  <cesar@codesourcery.com>

PR target/83920

* config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.

* testsuite/libgomp.oacc-c-c++-common/pr83920.c: New test.
* testsuite/libgomp.oacc-fortran/pr83920.f90: New test.

Co-Authored-By: Cesar Philippidis <cesar@codesourcery.com>
From-SVN: r256894

6 years ago[nvptx] Add support for CUDA 9
Cesar Philippidis [Fri, 19 Jan 2018 14:21:08 +0000 (06:21 -0800)]
[nvptx] Add support for CUDA 9

PR target/83790

gcc/
* config/nvptx/nvptx.c (output_init_frag): Don't use generic address
spaces for function labels.

gcc/testsuite/
* gcc.target/nvptx/indirect_call.c: New test.

From-SVN: r256891

6 years agoFix missing g++.dg/torture/pr83619.C warning
Rainer Orth [Fri, 19 Jan 2018 14:04:52 +0000 (14:04 +0000)]
Fix missing g++.dg/torture/pr83619.C warning

* g++.dg/torture/pr83619.C: Remove dg-message.

From-SVN: r256890

6 years agoFix test-suite fallout.
Martin Liska [Fri, 19 Jan 2018 12:07:39 +0000 (13:07 +0100)]
Fix test-suite fallout.

2018-01-19  Martin Liska  <mliska@suse.cz>

* gcc.dg/predict-1.c: Adjust expected probability.
* gcc.dg/predict-3.c: Likewise.
* gcc.dg/predict-5.c: Likewise.
* gcc.dg/predict-6.c: Likewise.
* gcc.dg/predict-9.c: Likewise.

From-SVN: r256889

6 years agoAdjust predictor values according to SPEC2006 and SPEC2017.
Martin Liska [Fri, 19 Jan 2018 12:06:18 +0000 (13:06 +0100)]
Adjust predictor values according to SPEC2006 and SPEC2017.

2018-01-19  Martin Liska  <mliska@suse.cz>

* predict.def (PRED_LOOP_EXIT): Change from 85 to 89.
(PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78.
(PRED_LOOP_EXTRA_EXIT): Change from 83 to 67.
(PRED_OPCODE_POSITIVE): Change from 64 to 59.
(PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59.
(PRED_CONST_RETURN): Change from 69 to 65.
(PRED_NULL_RETURN): Change from 91 to 71.
(PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64.
(PRED_LOOP_GUARD): Change from 66 to 73.

From-SVN: r256888

6 years agoIntroduce PROB_UNINITIALIZED constant and use it in predict.def.
Martin Liska [Fri, 19 Jan 2018 12:05:20 +0000 (13:05 +0100)]
Introduce PROB_UNINITIALIZED constant and use it in predict.def.

2018-01-19  Martin Liska  <mliska@suse.cz>

* predict.c (predict_insn_def): Add new assert.
(struct branch_predictor): Change type to signed integer.
(test_prediction_value_range): Amend test to cover
PROB_UNINITIALIZED.
* predict.def (PRED_LOOP_ITERATIONS): Use the new constant.
(PRED_LOOP_ITERATIONS_GUESSED): Likewise.
(PRED_LOOP_ITERATIONS_MAX): Likewise.
(PRED_LOOP_IV_COMPARE): Likewise.
* predict.h (PROB_UNINITIALIZED): Define new constant.

From-SVN: r256887

6 years agoFix usage of analyze_brprob.py script.
Martin Liska [Fri, 19 Jan 2018 12:03:24 +0000 (13:03 +0100)]
Fix usage of analyze_brprob.py script.

2018-01-19  Martin Liska  <mliska@suse.cz>

* analyze_brprob.py: Support new format that can be easily
parsed. Add new column to report.
2018-01-19  Martin Liska  <mliska@suse.cz>

* predict.c (dump_prediction): Add new format for
analyze_brprob.py script which is enabled with -details
suboption.
* profile-count.h (precise_p): New function.

From-SVN: r256886

6 years agoCheck whether any statements need masking (PR 83922)
Richard Sandiford [Fri, 19 Jan 2018 11:57:47 +0000 (11:57 +0000)]
Check whether any statements need masking (PR 83922)

This PR is an odd case in which, due to the low optimisation level,
we enter vectorisation with:

  outer1:
    x_1 = PHI <x_3(outer2), ...>;
    ...

  inner:
    x_2 = 0;
    ...

  outer2:
    x_3 = PHI <x_2(inner)>;

These statements are tentatively treated as a double reduction by
vect_force_simple_reduction, but in the end only x_3 and x_2 are marked
as relevant.  vect_analyze_loop_operations skips over x_3, leaving the
vectorizable_reduction check to a presumed future test of x_1, which
in this case never happens.  We therefore end up vectorising x_2 only
(complete with peeling for niters!) and leave the scalar x_3 in place.

This caused a segfault in the support for fully-masked loops,
since there were no statements that needed masking.  Fixed by
checking for that.

But I think this is also a flaw in vect_analyze_loop_operations.
Outer loop vectorisation reduces the number of times that the
inner loop is executed, so it wouldn't necessarily be valid
to leave the scalar x_3 in place for all vectorisable x_2.
There's already code to forbid that when x_1 isn't present:

              /* FORNOW: we currently don't support the case that these phis
                 are not used in the outerloop (unless it is double reduction,
                 i.e., this phi is vect_reduction_def), cause this case
                 requires to actually do something here.  */

I think we need to do the same if x_1 is present but not relevant.

2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
PR tree-optimization/83922
* tree-vect-loop.c (vect_verify_full_masking): Return false if
there are no statements that need masking.
(vect_active_double_reduction_p): New function.
(vect_analyze_loop_operations): Use it when handling phis that
are not in the loop header.

gcc/testsuite/
PR tree-optimization/83922
* gcc.dg/pr83922.c: New test.

From-SVN: r256885

6 years agoAvoid ICE for nested inductions (PR 83914)
Richard Sandiford [Fri, 19 Jan 2018 11:57:34 +0000 (11:57 +0000)]
Avoid ICE for nested inductions (PR 83914)

This testcase ICEd because we converted the initial value of an
induction to the vector element type even for nested inductions.
This isn't necessary because the initial expression is vectorised
normally, and it meant that init_expr was no longer the original
statement operand by the time we called vect_get_vec_def_for_operand.

Also, adding the conversion code here made the existing SLP conversion
redundant.

2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
PR tree-optimization/83914
* tree-vect-loop.c (vectorizable_induction): Don't convert
init_expr or apply the peeling adjustment for inductions
that are nested within the vectorized loop.

gcc/testsuite/
PR tree-optimization/83914
* gcc.dg/vect/pr83914.c: New test.

From-SVN: r256884

6 years ago[arm] Fix gcc.target/arm/negdi-[12].c
Kyrylo Tkachov [Fri, 19 Jan 2018 10:41:57 +0000 (10:41 +0000)]
[arm] Fix gcc.target/arm/negdi-[12].c

These tests are failing for a silly reason. They scan for an occurrence of the NEGS instruction.
NEGS (and NEG in general) is a pre-UAL alias of RSB with an immediate of 0 and we only emit it
in one pattern: *thumb2_negsi2_short in thumb2.md. In all other instances of negation we emit
the modern RSB mnemonic. This causes needless differences in assembly output.
For example, for these testcases we emit NEG when compiling for -march=armv7-a, but for armv7ve
we emit RSB, causing the scan-assembler tests to fail.

This patch updates the *thumb2_negsi2_short pattern to use the RSB mnemonic and
fixes the flaky scan-assembler directives.

These tests now pass for my compiler configured with:
--with-cpu=cortex-a15 --with-fpu=neon-vfpv4 --with-float=hard --with-mode=thumb

Bootstrapped and tested on arm-none-linux-gnueabihf as well.

* config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic
instead of NEG.

* gcc.target/arm/negdi-1.c: Remove bogus assembler scan for negs.
* gcc.target/arm/negdi-2.c: Likewise.
* gcc.target/arm/thumb-16bit-ops.c: Replace scan for NEGS with RSBS.
--This line,gand those below, will be ignored--

M    gcc/config/arm/thumb2.md
M    gcc/ChangeLog
M    gcc/testsuite/gcc.target/arm/thumb-16bit-ops.c
M    gcc/testsuite/gcc.target/arm/negdi-1.c
M    gcc/testsuite/gcc.target/arm/negdi-2.c
M    gcc/testsuite/ChangeLog

From-SVN: r256881

6 years ago[arm] Fix gcc.target/arm/pr40956.c
Kyrylo Tkachov [Fri, 19 Jan 2018 10:26:53 +0000 (10:26 +0000)]
[arm] Fix gcc.target/arm/pr40956.c

The scan-assembler tests here check for MOVS for Thumb1 and MOV for Thumb2,
but in fact there's no reason why we wouldn't generate MOVS for Thumb2 as well,
it really depends on a lot of optimisation decisions.
The only behaviour we want to test is that we move a 0 constant into a register
only once, which can be achieved with either MOV or MOVS.
Simplify the check by always checking for either MOV or MOVS.

      * gcc.target/arm/pr40956.c: Adjust scan-assembler pattern.

From-SVN: r256880

6 years ago[libstdc++][testsuite] Fix dg-options/dg-add-options order
Christophe Lyon [Fri, 19 Jan 2018 10:17:34 +0000 (10:17 +0000)]
[libstdc++][testsuite] Fix dg-options/dg-add-options order

2018-01-19  Christophe Lyon  <christophe.lyon@linaro.org>

* testsuite/ext/special_functions/airy_ai/check_nan.cc: Fix
          dg-options and dg-add-options order.
* testsuite/ext/special_functions/airy_bi/check_nan.cc: Likewise.
* testsuite/ext/special_functions/conf_hyperg/check_nan.cc:
Likewise.
* testsuite/ext/special_functions/hyperg/check_nan.cc: Likewise.
* testsuite/special_functions/01_assoc_laguerre/check_nan.cc:
Likewise.
* testsuite/special_functions/02_assoc_legendre/check_nan.cc:
Likewise.
* testsuite/special_functions/03_beta/check_nan.cc: Likewise.
* testsuite/special_functions/04_comp_ellint_1/check_nan.cc:
Likewise.
* testsuite/special_functions/05_comp_ellint_2/check_nan.cc:
Likewise.
* testsuite/special_functions/06_comp_ellint_3/check_nan.cc:
Likewise.
* testsuite/special_functions/06_comp_ellint_3/pr66689.cc:
Likewise.
* testsuite/special_functions/07_cyl_bessel_i/check_nan.cc:
Likewise.
* testsuite/special_functions/08_cyl_bessel_j/check_nan.cc:
Likewise.
* testsuite/special_functions/09_cyl_bessel_k/check_nan.cc:
Likewise.
* testsuite/special_functions/10_cyl_neumann/check_nan.cc:
Likewise.
* testsuite/special_functions/11_ellint_1/check_nan.cc: Likewise.
* testsuite/special_functions/12_ellint_2/check_nan.cc: Likewise.
* testsuite/special_functions/13_ellint_3/check_nan.cc: Likewise.
* testsuite/special_functions/13_ellint_3/pr66689.cc: Likewise.
* testsuite/special_functions/14_expint/check_nan.cc: Likewise.
* testsuite/special_functions/15_hermite/check_nan.cc: Likewise.
* testsuite/special_functions/16_laguerre/check_nan.cc: Likewise.
* testsuite/special_functions/17_legendre/check_nan.cc: Likewise.
* testsuite/special_functions/18_riemann_zeta/check_nan.cc:
Likewise.
* testsuite/special_functions/19_sph_bessel/check_nan.cc:
Likewise.
* testsuite/special_functions/20_sph_legendre/check_nan.cc:
Likewise.
* testsuite/special_functions/21_sph_neumann/check_nan.cc:
Likewise.

From-SVN: r256879

6 years ago[arm] Fix gcc.target/arm/pr79058.c
Kyrylo Tkachov [Fri, 19 Jan 2018 09:58:37 +0000 (09:58 +0000)]
[arm] Fix gcc.target/arm/pr79058.c

This testcase tests 32-bit ARM state functionality, so add the -marm to make it explicit
as well as to avoid Thumb1 hard-float errors for certain toolchain configurations.

     * gcc.target/arm/pr79058.c: Add arm_arm_ok check and -marm to options.

From-SVN: r256878

6 years agomksysinfo: use rlimit64 if available when we use getrlimit64
Ian Lance Taylor [Fri, 19 Jan 2018 05:09:43 +0000 (05:09 +0000)]
mksysinfo: use rlimit64 if available when we use getrlimit64

    This makes no difference on most systems, because <sys/resource.h>
    renames the type appropriately anyhow, but apparently it makes a
    difference on AIX.

    Reviewed-on: https://go-review.googlesource.com/88076

From-SVN: r256877

6 years agoMakefile.am (GOTOOLS_TEST_TIMEOUT): Define.
Ian Lance Taylor [Fri, 19 Jan 2018 05:04:51 +0000 (05:04 +0000)]
Makefile.am (GOTOOLS_TEST_TIMEOUT): Define.

* Makefile.am (GOTOOLS_TEST_TIMEOUT): Define.
(check-go-tool): Pass -test.timeout with GOTOOLS_TEST_TIMEOUT.
(check-cgo-test, check-carchive-test, check-vet): Likewise.
* Makefile.in: Rebuild.

From-SVN: r256876

6 years agomksysinfo: force Passwd.Pw_[ug]id from int32 to uint32
Ian Lance Taylor [Fri, 19 Jan 2018 04:52:12 +0000 (04:52 +0000)]
mksysinfo: force Passwd.Pw_[ug]id from int32 to uint32

    Solaris 10 uses int32 for the Pw_uid and Pw_gid fields of Passwd,
    but most systems, including Solaris 11, use uint32.  Force uint32
    for consistency and to fix the build.

    Reviewed-on: https://go-review.googlesource.com/88195

From-SVN: r256875

6 years agoruntime: no escape for some functions on AIX
Ian Lance Taylor [Fri, 19 Jan 2018 04:48:51 +0000 (04:48 +0000)]
runtime: no escape for some functions on AIX

    Reviewed-on: https://go-review.googlesource.com/88236

From-SVN: r256874

6 years agocmd/go: recognize AIX objects and archives
Ian Lance Taylor [Fri, 19 Jan 2018 04:27:38 +0000 (04:27 +0000)]
cmd/go: recognize AIX objects and archives

    Reviewed-on: https://go-review.googlesource.com/88275

From-SVN: r256873

6 years agoruntime: add go:noescape declaration for Solaris
Ian Lance Taylor [Fri, 19 Jan 2018 04:09:55 +0000 (04:09 +0000)]
runtime: add go:noescape declaration for Solaris

    Patch by Rainer Orth.

    Reviewed-on: https://go-review.googlesource.com/88376

From-SVN: r256872

6 years agopr52451.c (main): Skip long double test on hppa*-*-hpux*.
John David Anglin [Fri, 19 Jan 2018 00:22:33 +0000 (00:22 +0000)]
pr52451.c (main): Skip long double test on hppa*-*-hpux*.

* gcc.dg/torture/pr52451.c (main): Skip long double test on
hppa*-*-hpux*.

From-SVN: r256871

6 years agoDaily bump.
GCC Administrator [Fri, 19 Jan 2018 00:16:14 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r256870

6 years agore PR ipa/83619 (ICE in inliner: caller edge count does not match BB count)
Jakub Jelinek [Thu, 18 Jan 2018 23:39:26 +0000 (00:39 +0100)]
re PR ipa/83619 (ICE in inliner: caller edge count does not match BB count)

PR ipa/83619
PR testsuite/83934
* g++.dg/torture/pr83619.C (e): Define before first use instead of
forward declaration.

From-SVN: r256867

6 years agoFix template/inherit4.C.
Jason Merrill [Thu, 18 Jan 2018 22:15:32 +0000 (17:15 -0500)]
Fix template/inherit4.C.

PR c++/83714
* search.c (any_dependent_bases_p): Handle null TREE_BINFO.
* pt.c (instantiation_dependent_scope_ref_p): True if
any_dependent_bases_p.

From-SVN: r256866

6 years agocp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P vs...
Paolo Carlini [Thu, 18 Jan 2018 20:56:08 +0000 (20:56 +0000)]
cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P vs...

2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>

* cp-tree.h: Fix comment typo (DECL_NON_TRIVIALLY_INITIALIZED_P
vs DECL_NONTRIVIALLY_INITIALIZED_P).

From-SVN: r256865

6 years agobuiltins-6.h (foo): Add missing closing bracket to the function.
Carl Love [Thu, 18 Jan 2018 20:38:41 +0000 (20:38 +0000)]
builtins-6.h (foo): Add missing closing bracket to the function.

gcc/testsuite/ChangeLog:

2018-01-18  Carl Love  <cel@us.ibm.com>
* gcc.target/powerpc/builtins-6.h (foo): Add missing closing bracket
to the function.

From-SVN: r256864

6 years agore PR sanitizer/81715 (asan-stack=1 redzone allocation is too inflexible)
Jakub Jelinek [Thu, 18 Jan 2018 20:30:33 +0000 (21:30 +0100)]
re PR sanitizer/81715 (asan-stack=1 redzone allocation is too inflexible)

PR sanitizer/81715
PR testsuite/83882
* function.h (gimplify_parameters): Add gimple_seq * argument.
* function.c: Include gimple.h and options.h.
(gimplify_parameters): Add cleanup argument, add CLOBBER stmts
for the added local temporaries if needed.
* gimplify.c (gimplify_body): Adjust gimplify_parameters caller,
if there are any parameter cleanups, wrap whole body into a
try/finally with the cleanups.

From-SVN: r256861

6 years agoPR c++/82461 - constexpr list-initialized member
Jason Merrill [Thu, 18 Jan 2018 20:02:06 +0000 (15:02 -0500)]
PR c++/82461 - constexpr list-initialized member

* constexpr.c (potential_constant_expression_1): Check
TARGET_EXPR_DIRECT_INIT_P.

From-SVN: r256860

6 years agoconfigure.ac (AC_CHECK_HEADERS): Add linux/types.h.
Uros Bizjak [Thu, 18 Jan 2018 19:52:16 +0000 (20:52 +0100)]
configure.ac (AC_CHECK_HEADERS): Add linux/types.h.

* configure.ac (AC_CHECK_HEADERS): Add linux/types.h.  Conditionally
include linux/types.h when checking linux/random.h header.
* config.h.in: Regenerate.
* configure: Ditto.
* src/c++11/random.cc: Conditionally include linux/types.h.

From-SVN: r256859

6 years agore PR c++/81013 (ICE with invalid union in class hierarchy)
Paolo Carlini [Thu, 18 Jan 2018 17:11:43 +0000 (17:11 +0000)]
re PR c++/81013 (ICE with invalid union in class hierarchy)

/cp
2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/81013
* decl.c (xref_basetypes): Early return upon error about derived
union.

/testsuite
2018-01-18  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/81013
* g++.dg/inherit/union3.C: New.

From-SVN: r256856

6 years ago[AArch64] Fix fp16 test failures after PR82964 fix
Wilco Dijkstra [Thu, 18 Jan 2018 16:37:44 +0000 (16:37 +0000)]
[AArch64] Fix fp16 test failures after PR82964 fix

This fixes test failures in gcc.target/aarch64/f16_mov_immediate_*.c
after fixing PR82964.  The check for a scalar floating point constant
didn't include 16-bit floating point modes, so use GET_MODE_CLASS
instead.

    gcc/
PR target/82964
* config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
Use GET_MODE_CLASS for scalar floating point.

From-SVN: r256854

6 years agore PR ipa/82256 (clones created by create_version_clone_with_body are not observable...
Jan Hubicka [Thu, 18 Jan 2018 16:26:54 +0000 (17:26 +0100)]
re PR ipa/82256 (clones created by create_version_clone_with_body are not observable to insertion hooks)

PR ipa/82256
patch by PaX Team
* cgraphclones.c (cgraph_node::create_version_clone_with_body):
Fix call of call_cgraph_insertion_hooks.

From-SVN: r256853

6 years agoBe clear about virtual table pointer corruptuion rather than the vtable itself.
Martin Sebor [Thu, 18 Jan 2018 16:26:14 +0000 (16:26 +0000)]
Be clear about virtual table pointer corruptuion rather than the vtable itself.

From-SVN: r256852

6 years ago[arm] Enable gcc.dg/rtl/arm/stl-cond.c on armeb.
Christophe Lyon [Thu, 18 Jan 2018 16:14:31 +0000 (16:14 +0000)]
[arm] Enable gcc.dg/rtl/arm/stl-cond.c on armeb.

2018-01-18  Christophe Lyon <christophe.lyon@linaro.org>

* gcc.dg/rtl/arm/stl-cond.c: Enable on arm*.

From-SVN: r256851

6 years agore PR ipa/83619 (ICE in inliner: caller edge count does not match BB count)
Jan Hubicka [Thu, 18 Jan 2018 15:57:48 +0000 (16:57 +0100)]
re PR ipa/83619 (ICE in inliner: caller edge count does not match BB count)

PR ipa/83619
* g++.dg/torture/pr83619.C: New testcase.
* cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
frequencies.

From-SVN: r256850

6 years ago[ARM,testsuite] Make arm_arch_FUNC_ok more robust
Christophe Lyon [Thu, 18 Jan 2018 14:54:41 +0000 (14:54 +0000)]
[ARM,testsuite] Make arm_arch_FUNC_ok more robust

2018-01-18  Christophe Lyon <christophe.lyon@linaro.org>

* lib/target-supports.exp (check_effective_target_arm_arch_FUNC_ok):
Add function body to force error messages in some configurations.

From-SVN: r256849

6 years ago[arm] Fix gcc.target/arm/pr70278.c
Kyrylo Tkachov [Thu, 18 Jan 2018 14:26:02 +0000 (14:26 +0000)]
[arm] Fix gcc.target/arm/pr70278.c

This test needs an armv4t Thumb1 target but doesn't add the right effective target checks.
This patch adds them so the test is skipped appropriately on Thumb2 hard-float tarets.

     * gcc.target/arm/pr70278.c: Add effective target checks for armv4t
     and arm_thumb1_ok.

From-SVN: r256848

6 years agoAdd ability to remap file names in __FILE__, etc (PR other/70268)
Boris Kolpackov [Thu, 18 Jan 2018 13:17:37 +0000 (13:17 +0000)]
Add ability to remap file names in __FILE__, etc (PR other/70268)

This commit adds the -fmacro-prefix-map option that allows remapping of file
names in __FILE__, __BASE_FILE__, and __builtin_FILE(), similar to how
-fdebug-prefix-map allows to do the same for debug information.

Additionally, it adds -ffile-prefix-map which can be used to specify both
mappings with a single option (and, should we need to add more -f*-prefix-map
options in the future, those as well).

libcpp/ChangeLog:

2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>

        PR other/70268
        * include/cpplib.h (cpp_callbacks::remap_filename): New callback.
        * libcpp/macro.c (_cpp_builtin_macro_text): Call remap_filename for
        __FILE__ and __BASE_FILE__.

gcc/ChangeLog:

2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>

        PR other/70268
        * common.opt: (-ffile-prefix-map): New option.
        * opts.c (common_handle_option): Defer it.
        * opts-global.c (handle_common_deferred_options): Handle it.
        * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
        * file-prefix-map.h: New file.
        (remap_debug_filename, add_debug_prefix_map): ...here.
        (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
        * final.c (debug_prefix_map, add_debug_prefix_map
        remap_debug_filename): Move to...
        * file-prefix-map.c: New file.
        (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
        generalize, get rid of alloca(), use strrchr() instead of strchr().
        (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
        Implement in terms of add_prefix_map().
        (remap_macro_filename, remap_debug_filename): Implement in term of
        remap_filename().
        * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
        * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
        * dbxout.c: Include file-prefix-map.h.
        * varasm.c: Likewise.
        * vmsdbgout.c: Likewise.
        * xcoffout.c: Likewise.
        * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
        * doc/cppopts.texi (-fmacro-prefix-map): Document.
        * doc/invoke.texi (-ffile-prefix-map): Document.
(-fdebug-prefix-map): Update description.

gcc/c-family/ChangeLog:

2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>

        PR other/70268
        * c-family/c.opt (-fmacro-prefix-map): New option.
        * c-family/c-opts.c (c_common_handle_option): Handle it.
        * c-family/c-lex.c (init_c_lex): Set remap_filename cpp callback.
        * c-family/c-ppoutput.c (init_pp_output): Likewise.

gcc/testsuite/ChangeLog:

2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>

        PR other/70268
        * c-c++-common/ffile-prefix-map.c: New test.
        * c-c++-common/fmacro-prefix-map.c: New test.
        * c-c++-common/cpp/ffile-prefix-map.c: New test.
        * c-c++-common/cpp/fmacro-prefix-map.c: New test.

From-SVN: r256847