gcc.git
5 years agoPR c++/87357 - missing -Wconversion warning
Marek Polacek [Wed, 19 Sep 2018 16:59:51 +0000 (16:59 +0000)]
PR c++/87357 - missing -Wconversion warning

PR c++/87357 - missing -Wconversion warning
* decl.c (grok_op_properties): Remove diagnostic parts mentioning
a conversion to a reference to void.  Use
same_type_ignoring_top_level_qualifiers_p rather than comparing types
directly.

* g++.dg/warn/Wconversion5.C: New test.

From-SVN: r264425

5 years agodump_printf: use %T and %G throughout
David Malcolm [Wed, 19 Sep 2018 16:18:06 +0000 (16:18 +0000)]
dump_printf: use %T and %G throughout

As promised at Cauldron, this patch uses %T and %G with dump_printf and
dump_printf_loc calls to eliminate calls to

  dump_generic_expr (MSG_*, arg, TDF_SLIM)  (via %T)

and

  dump_gimple_stmt (MSG_*, TDF_SLIM, stmt, 0)  (via %G)

throughout the middle-end, simplifying numerous dump callsites.

A few calls to these functions didn't match the above pattern; I didn't
touch these.  I wasn't able to use %E anywhere.

gcc/ChangeLog:
* tree-data-ref.c (runtime_alias_check_p): Use formatted printing
with %T in place of calls to dump_generic_expr.
(prune_runtime_alias_test_list): Likewise.
(create_runtime_alias_checks): Likewise.
* tree-vect-data-refs.c (vect_check_nonzero_value): Likewise.
(vect_analyze_data_ref_dependence): Likewise.
(vect_slp_analyze_data_ref_dependence): Likewise.
(vect_record_base_alignment): Likewise.  Use %G in place of call
to dump_gimple_stmt.
(vect_compute_data_ref_alignment): Likewise.
(verify_data_ref_alignment): Likewise.
(vect_find_same_alignment_drs): Likewise.
(vect_analyze_group_access_1): Likewise.
(vect_analyze_data_ref_accesses): Likewise.
(dependence_distance_ge_vf): Likewise.
(dump_lower_bound): Likewise.
(vect_prune_runtime_alias_test_list): Likewise.
(vect_find_stmt_data_reference): Likewise.
(vect_analyze_data_refs): Likewise.
(vect_create_addr_base_for_vector_ref): Likewise.
(vect_create_data_ref_ptr): Likewise.
* tree-vect-loop-manip.c (vect_set_loop_condition): Likewise.
(vect_can_advance_ivs_p): Likewise.
(vect_update_ivs_after_vectorizer): Likewise.
(vect_gen_prolog_loop_niters): Likewise.
(vect_prepare_for_masked_peels): Likewise.
* tree-vect-loop.c (vect_determine_vf_for_stmt): Likewise.
(vect_determine_vectorization_factor): Likewise.
(vect_is_simple_iv_evolution): Likewise.
(vect_analyze_scalar_cycles_1): Likewise.
(vect_analyze_loop_operations): Likewise.
(report_vect_op): Likewise.
(vect_is_slp_reduction): Likewise.
(check_reduction_path): Likewise.
(vect_is_simple_reduction): Likewise.
(vect_create_epilog_for_reduction): Likewise.
(vect_finalize_reduction:): Likewise.
(vectorizable_induction): Likewise.
(vect_transform_loop_stmt): Likewise.
(vect_transform_loop): Likewise.
(optimize_mask_stores): Likewise.
* tree-vect-patterns.c (vect_pattern_detected): Likewise.
(vect_split_statement): Likewise.
(vect_recog_over_widening_pattern): Likewise.
(vect_recog_average_pattern): Likewise.
(vect_determine_min_output_precision_1): Likewise.
(vect_determine_precisions_from_range): Likewise.
(vect_determine_precisions_from_users): Likewise.
(vect_mark_pattern_stmts): Likewise.
(vect_pattern_recog_1): Likewise.
* tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise.
(vect_record_max_nunits): Likewise.
(vect_build_slp_tree_1): Likewise.
(vect_build_slp_tree_2): Likewise.
(vect_print_slp_tree): Likewise.
(vect_analyze_slp_instance): Likewise.
(vect_detect_hybrid_slp_stmts): Likewise.
(vect_detect_hybrid_slp_1): Likewise.
(vect_slp_analyze_operations): Likewise.
(vect_slp_analyze_bb_1): Likewise.
(vect_transform_slp_perm_load): Likewise.
(vect_schedule_slp_instance): Likewise.
* tree-vect-stmts.c (vect_mark_relevant): Likewise.
(vect_mark_stmts_to_be_vectorized): Likewise.
(vect_init_vector_1): Likewise.
(vect_get_vec_def_for_operand): Likewise.
(vect_finish_stmt_generation_1): Likewise.
(vect_check_load_store_mask): Likewise.
(vectorizable_call): Likewise.
(vectorizable_conversion): Likewise.
(vectorizable_operation): Likewise.
(vectorizable_load): Likewise.
(vect_analyze_stmt): Likewise.
(vect_is_simple_use): Likewise.
(vect_get_vector_types_for_stmt): Likewise.
(vect_get_mask_type_for_stmt): Likewise.
* tree-vectorizer.c (increase_alignment): Likewise.

From-SVN: r264424

5 years agoRemove constant vec_select restriction.
Andrew Stubbs [Wed, 19 Sep 2018 13:25:42 +0000 (13:25 +0000)]
Remove constant vec_select restriction.

The vec_select operator is documented to require a const_int for the lane
selector operand, but GCN has an instruction that can select the lane at
runtime, so it seems reasonable to remove this restriction.

This patch simply replaces assertions that the operand is constant with early
exits from the optimizers.  I think it's reasonable that vec_select with a
non-constant operand cannot be optimized, yet.

Also included is the necessary documentation tweak.

2018-09-19  Andrew Stubbs  <ams@codesourcery.com>

gcc/
* doc/rtl.texi: Adjust vec_select description.
* simplify-rtx.c (simplify_binary_operation_1): Allow VEC_SELECT to use
non-constant selectors.

From-SVN: r264423

5 years agoDon't use __glibcxx_assert to check class invariants
Jonathan Wakely [Wed, 19 Sep 2018 11:20:51 +0000 (12:20 +0100)]
Don't use __glibcxx_assert to check class invariants

Assertions should be used to check preconditions that users must meet,
not to check whether the implementation is correct.

* include/bits/regex_automaton.tcc (_StateSeq<_TraitsT>::_M_clone()):
Remove __glibcxx_assert statements and use map::find instead of
map::operator[].

From-SVN: r264422

5 years ago[AARCH64] Use STLUR for atomic_store
Matthew Malcomson [Wed, 19 Sep 2018 10:24:59 +0000 (10:24 +0000)]
[AARCH64] Use STLUR for atomic_store

Use the STLUR instruction introduced in Armv8.4-a.
This instruction has the store-release semantic like STLR but can take a
9-bit unscaled signed immediate offset.

Example test case:
```
void
foo ()
{
    int32_t *atomic_vals = calloc (4, sizeof (int32_t));
    atomic_store_explicit (atomic_vals + 1, 2, memory_order_release);
}
```

Before patch generates
```
foo:
stp x29, x30, [sp, -16]!
mov x1, 4
mov x0, x1
mov x29, sp
bl calloc
mov w1, 2
add x0, x0, 4
stlr w1, [x0]
ldp x29, x30, [sp], 16
ret
```

After patch generates
```
foo:
stp x29, x30, [sp, -16]!
mov x1, 4
mov x0, x1
mov x29, sp
bl calloc
mov w1, 2
stlur w1, [x0, 4]
ldp x29, x30, [sp], 16
ret
```

We introduce a new feature flag to indicate the presence of this instruction.
The feature flag is called AARCH64_ISA_RCPC8_4 and is included when targeting
armv8.4 architecture.

We also introduce an "arch" attribute to be checked called "rcpc8_4" after this
feature flag.

gcc/

2018-09-19  Matthew Malcomson  <matthew.malcomson@arm.com>

* config/aarch64/aarch64-protos.h
(aarch64_offset_9bit_signed_unscaled_p): New declaration.
* config/aarch64/aarch64.md (arches): New "rcpc8_4" attribute value.
(arch_enabled): Add check for "rcpc8_4" attribute value of "arch".
* config/aarch64/aarch64.h (AARCH64_FL_RCPC8_4): New bitfield.
(AARCH64_FL_FOR_ARCH8_4): Include AARCH64_FL_RCPC8_4.
(AARCH64_FL_PROFILE): Move index so flags are ordered.
(AARCH64_ISA_RCPC8_4): New flag.
* config/aarch64/aarch64.c (offset_9bit_signed_unscaled_p): Renamed
to aarch64_offset_9bit_signed_unscaled_p.
* config/aarch64/atomics.md (atomic_store<mode>): Allow offset
and use stlur.
* config/aarch64/constraints.md (Ust): New constraint.
* config/aarch64/predicates.md.
(aarch64_9bit_offset_memory_operand): New predicate.
(aarch64_rcpc_memory_operand): New predicate.

gcc/testsuite/

2018-09-19  Matthew Malcomson  <matthew.malcomson@arm.com>

* gcc.target/aarch64/atomic-store.c: New.

From-SVN: r264421

5 years agore PR rtl-optimization/87361 (gcc.target/sparc/20161111-1.c FAILs)
Eric Botcazou [Wed, 19 Sep 2018 10:12:04 +0000 (10:12 +0000)]
re PR rtl-optimization/87361 (gcc.target/sparc/20161111-1.c FAILs)

PR rtl-optimization/87361
* rtlanal.c (nonzero_bits1): Revert accidental change.

From-SVN: r264420

5 years agore PR tree-optimization/87349 (ICE: Segmentation fault (in useless_type_conversion_p...
Richard Biener [Wed, 19 Sep 2018 07:10:42 +0000 (07:10 +0000)]
re PR tree-optimization/87349 (ICE: Segmentation fault (in useless_type_conversion_p or is_gimple_reg_type))

2018-09-19  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87349
PR tree-optimization/87342
* tree-ssa-sccvn.c (do_rpo_vn): Iterate max_rpo computation.

* gcc.dg/torture/pr87349-1.c: New testcase.
* gcc.dg/torture/pr87349-2.c: Likewise.
* gcc.dg/torture/pr87342.c: Likewise.

From-SVN: r264419

5 years agolibgnuintl.h (_INTL_MAY_RETURN_STRING_ARG, [...]): Backport changes from upstream...
Simon Marchi [Wed, 19 Sep 2018 04:08:49 +0000 (04:08 +0000)]
libgnuintl.h (_INTL_MAY_RETURN_STRING_ARG, [...]): Backport changes from upstream gettext.

* libgnuintl.h (_INTL_MAY_RETURN_STRING_ARG, gettext, dgettext,
dcgettext, ngettext, dngettext, dcngettext): Backport changes
from upstream gettext.

From-SVN: r264418

5 years agoDaily bump.
GCC Administrator [Wed, 19 Sep 2018 00:16:46 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r264417

5 years agore PR libstdc++/87135 ([C++17] unordered containers violate iterator validity require...
François Dumont [Tue, 18 Sep 2018 20:36:16 +0000 (20:36 +0000)]
re PR libstdc++/87135 ([C++17] unordered containers violate iterator validity requirements)

2018-09-18  François Dumont  <fdumont@gcc.gnu.org>

PR libstdc++/87135
* src/c++11/hashtable_c++0x.cc:
(_Prime_rehash_policy::_M_next_bkt): Return a prime no smaller than
requested size, but not necessarily greater.
(_Prime_rehash_policy::_M_need_rehash): Rehash only if target size is
strictly greater than next resize threshold.
* testsuite/23_containers/unordered_map/modifiers/reserve.cc: Adapt test
to validate that there is no rehash as long as number of insertion is
lower or equal to the reserved number of elements.

From-SVN: r264413

5 years agore PR fortran/29550 (Optimize -fexternal-blas calls for conjg())
Thomas Koenig [Tue, 18 Sep 2018 20:18:09 +0000 (20:18 +0000)]
re PR fortran/29550 (Optimize -fexternal-blas calls for conjg())

2018-09-18  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/29550
* gfortran.h (gfc_expr): Add external_blas flag.
* frontend-passes.c (matrix_case): Add case A2TB2T.
(optimize_namespace): Handle flag_external_blas by
calling call_external_blas.
(get_array_inq_function): Add argument okind. If
it is nonzero, use it as the kind of argument
to be used.
(inline_limit_check): Remove m_case argument, add
limit argument instead.  Remove assert about m_case.
Set the limit for inlining from the limit argument.
(matmul_lhs_realloc): Handle case A2TB2T.
(inline_matmul_assign): Handle inline limit for other cases with
two rank-two matrices.  Remove no-op calls to inline_limit_check.
(call_external_blas): New function.
* trans-intrinsic.c (gfc_conv_intrinsic_funcall): Do not add
argument to external BLAS if external_blas is already set.

2018-09-18  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/29550
* gfortran.dg/inline_matmul_13.f90: Adjust count for
_gfortran_matmul.
* gfortran.dg/inline_matmul_16.f90: Likewise.
* gfortran.dg/promotion_2.f90: Add -fblas-matmul-limit=1.  Scan
for dgemm instead of dgemm_.  Add call to random_number to make
standard conforming.
* gfortran.dg/matmul_blas_1.f90: New test.
* gfortran.dg/matmul_bounds_14.f: New test.
* gfortran.dg/matmul_bounds_15.f: New test.
* gfortran.dg/matmul_bounds_16.f: New test.
* gfortran.dg/blas_gemm_routines.f: New test / additional file for
preceding tests.

From-SVN: r264412

5 years agore PR fortran/29550 (Optimize -fexternal-blas calls for conjg())
Thomas Koenig [Tue, 18 Sep 2018 19:59:46 +0000 (19:59 +0000)]
re PR fortran/29550 (Optimize -fexternal-blas calls for conjg())

2018-09-18  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/29550
* gfortran.h (gfc_expr): Add external_blas flag.
* frontend-passes.c (matrix_case): Add case A2TB2T.
(optimize_namespace): Handle flag_external_blas by
calling call_external_blas.
(get_array_inq_function): Add argument okind. If
it is nonzero, use it as the kind of argument
to be used.
(inline_limit_check): Remove m_case argument, add
limit argument instead.  Remove assert about m_case.
Set the limit for inlining from the limit argument.
(matmul_lhs_realloc): Handle case A2TB2T.
(inline_matmul_assign): Handle inline limit for other cases with
two rank-two matrices.  Remove no-op calls to inline_limit_check.
(call_external_blas): New function.
* trans-intrinsic.c (gfc_conv_intrinsic_funcall): Do not add
argument to external BLAS if external_blas is already set.

2018-09-18  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/29550
* gfortran.dg/inline_matmul_13.f90: Adjust count for
_gfortran_matmul.
* gfortran.dg/inline_matmul_16.f90: Likewise.
* gfortran.dg/promotion_2.f90: Add -fblas-matmul-limit=1.  Scan
for dgemm instead of dgemm_.  Add call to random_number to make
standard conforming.
* gfortran.dg/matmul_blas_1.f90: New test.
* gfortran.dg/matmul_bounds_14.f: New test.
* gfortran.dg/matmul_bounds_15.f: New test.
* gfortran.dg/matmul_bounds_16.f: New test.
* gfortran.dg/blas_gemm_routines.f: New test / additional file for
preceding tests.

From-SVN: r264411

5 years agore PR fortran/87239 (ICE in deferred-length string)
Paul Thomas [Tue, 18 Sep 2018 19:35:53 +0000 (19:35 +0000)]
re PR fortran/87239 (ICE in deferred-length string)

2018-09-18  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/87239
* trans-expr.c (gfc_trans_assignment_1): The rse.pre for the
assignment of deferred character elemental function results to
a realocatable lhs must not be added to the exterior block but
must go to the loop body.

2018-09-18  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/87239
* gfortran.dg/elemental_function_2.f90 : New test.

From-SVN: r264409

5 years agoP1064R0 - Allowing Virtual Function Calls in Constant Expressions
Marek Polacek [Tue, 18 Sep 2018 19:16:28 +0000 (19:16 +0000)]
P1064R0 - Allowing Virtual Function Calls in Constant Expressions

P1064R0 - Allowing Virtual Function Calls in Constant Expressions
* call.c (build_over_call): No longer check if we're outside a template
function.
* class.c (build_vtbl_initializer): Build vtable's constructor with
indexes.
* constexpr.c (cxx_eval_constant_expression): Don't ignore _vptr's
initializer.  Handle OBJ_TYPE_REF.
(potential_constant_expression_1): Handle OBJ_TYPE_REF.
* decl.c (maybe_commonize_var): Bail out for any DECL_ARTIFICIAL.
(initialize_artificial_var): Mark the variable as constexpr.
(grokdeclarator): Change error to pedwarn.  Only warn when
pedantic and not C++2a.

* gimple-fold.c (gimple_get_virt_method_for_vtable): Adjust assert.

* g++.dg/cpp0x/constexpr-virtual5.C: Adjust dg-error.
* g++.dg/cpp2a/constexpr-virtual1.C: New test.
* g++.dg/cpp2a/constexpr-virtual2.C: New test.
* g++.dg/cpp2a/constexpr-virtual3.C: New test.
* g++.dg/cpp2a/constexpr-virtual4.C: New test.
* g++.dg/cpp2a/constexpr-virtual5.C: New test.
* g++.dg/cpp2a/constexpr-virtual6.C: New test.
* g++.dg/cpp2a/constexpr-virtual7.C: New test.
* g++.dg/cpp2a/constexpr-virtual8.C: New test.
* g++.dg/cpp2a/constexpr-virtual9.C: New test.
* g++.dg/diagnostic/virtual-constexpr.C: Skip for C++2a.  Use
-pedantic-errors.  Adjust dg-error.

From-SVN: r264408

5 years agore PR fortran/87336 (wrong output for pointer dummy assiocated to target actual argument)
Paul Thomas [Tue, 18 Sep 2018 17:58:20 +0000 (17:58 +0000)]
re PR fortran/87336 (wrong output for pointer dummy assiocated to target actual argument)

2018-09-18  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/87336
* trans-array.c (gfc_get_array_span): Try to get the element
length of incomplete types. Return NULL_TREE otherwise.
(gfc_conv_expr_descriptor): Only set the 'span' field if the
above does not return NULL_TREE. Set 'span' field if possible
for all new descriptors.

2018-09-18  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/87336
* gfortran.dg/pointer_array_10.f90 : New test.
* gfortran.dg/assign_10.f90 : Increase 'parm' count to 20.
* gfortran.dg/transpose_optimization_2.f90 : Increase 'parm'
count to 72.

From-SVN: r264405

5 years agors6000: Remove old "Cygnus sibcall" comment
Segher Boessenkool [Tue, 18 Sep 2018 17:37:40 +0000 (19:37 +0200)]
rs6000: Remove old "Cygnus sibcall" comment

This comment is quite cryptic and very out-of-date by now.  Committing.

* config/rs6000/rs6000.md: Remove old "Cygnus sibcall" comment.

From-SVN: r264403

5 years agore PR c++/85065 ([concepts] ICE with invalid use of a concept)
Paolo Carlini [Tue, 18 Sep 2018 16:35:27 +0000 (16:35 +0000)]
re PR c++/85065 ([concepts] ICE with invalid use of a concept)

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

PR c++/85065
* cp-tree.h (NON_ERROR): New.
* pt.c (auto_hash::hash): Use it.
(do_auto_deduction): Likewise.

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

PR c++/85065
* g++.dg/concepts/pr85065.C: New.

From-SVN: r264402

5 years agoHandle CLOBBER in reg_overlap_mentioned_p (PR86882)
Segher Boessenkool [Tue, 18 Sep 2018 16:19:56 +0000 (18:19 +0200)]
Handle CLOBBER in reg_overlap_mentioned_p (PR86882)

Combine will put CLOBBER (with a non-void mode) anywhere in a pattern
to poison it.  reg_overlap_mentioned_p did not handle this.  This patch
fixes that.

PR rtl-optimization/86882
* rtlanal.c (reg_overlap_mentioned_p): Handle CLOBBER.

From-SVN: r264400

5 years agoFix location of invocable check for unique_ptr deleter
Jonathan Wakely [Tue, 18 Sep 2018 16:05:36 +0000 (17:05 +0100)]
Fix location of invocable check for unique_ptr deleter

The deleter only needs to be invocable when the unique_ptr destructor
and reset member function are instantiated. In other contexts it might
not be possible to pass unique_ptr<T, D>::pointer to the deleter, if
that requires a derived-to-base conversion from T* and T is incomplete.

* include/bits/unique_ptr.h (__uniq_ptr_impl): Remove static assertion
checking invocable condition.
(unique_ptr::~unique_ptr, unique_ptr::reset): Restore static assertion
here, where types must be complete. Pass pointer to deleter as an
rvalue.
* testsuite/20_util/unique_ptr/requirements/incomplete.cc: New test.

From-SVN: r264399

5 years agoi386.md (*<code>extend<mode>xf2): Macroize insn from *<code>extendsfxf2 and *<code...
Uros Bizjak [Tue, 18 Sep 2018 15:51:54 +0000 (17:51 +0200)]
i386.md (*<code>extend<mode>xf2): Macroize insn from *<code>extendsfxf2 and *<code>extenddfxf2 using MODEF mode...

* config/i386/i386.md (*<code>extend<mode>xf2): Macroize insn from
*<code>extendsfxf2 and *<code>extenddfxf2 using MODEF mode iterator.

From-SVN: r264398

5 years ago[nvptx] Remove use of CUDA unified memory in libgomp
Cesar Philippidis [Tue, 18 Sep 2018 15:41:54 +0000 (08:41 -0700)]
[nvptx] Remove use of CUDA unified memory in libgomp

libgomp/
* plugin/plugin-nvptx.c (struct cuda_map): New.
(struct ptx_stream): Replace d, h, h_begin, h_end, h_next, h_prev,
h_tail with (cuda_map *) map.
(cuda_map_create): New function.
(cuda_map_destroy): New function.
(map_init): Update to use a linked list of cuda_map objects.
(map_fini): Likewise.
(map_pop): Likewise.
(map_push): Likewise.  Return CUdeviceptr instead of void.
(init_streams_for_device): Remove stales references to ptx_stream
members.
(select_stream_for_async): Likewise.
(nvptx_exec): Update call to map_init.

From-SVN: r264397

5 years agoPR other/87353 fix formatting and grammar in manual
Jonathan Wakely [Tue, 18 Sep 2018 14:19:55 +0000 (15:19 +0100)]
PR other/87353 fix formatting and grammar in manual

The changes to invoke.texi in r242433 left some unwanted spaces that
texi2pod.pl interprets as verbatim formatting. There are also some
grammatical errors due to the removal of references to GCJ, where the
G++ driver is referred to in the plural.

PR other/87353
* doc/invoke.texi (Link Options): Fix formatting and grammar.

From-SVN: r264395

5 years agoFix dg-do target
Nathan Sidwell [Tue, 18 Sep 2018 14:14:57 +0000 (14:14 +0000)]
Fix dg-do target

From-SVN: r264394

5 years agoAdd PR marker to previous commit
Kyrylo Tkachov [Tue, 18 Sep 2018 14:09:54 +0000 (14:09 +0000)]
Add PR marker to previous commit

From-SVN: r264393

5 years agoFix gcc.dg/warn-abs-1.c for arm and aarch64-none-elf
Kyrylo Tkachov [Tue, 18 Sep 2018 13:54:36 +0000 (13:54 +0000)]
Fix gcc.dg/warn-abs-1.c for arm and aarch64-none-elf

This new test has some difficulties on the fabsl function.
On arm this is because we don't support the _Float128 type which the test uses.
This is handled in the patch by requiring a float128 target selector.

On aarch64-none-elf, a Newlib target, it fails because fabsl is not available.
long double support is known to be incomplete in newlib, and the fabsl function is not available
for targets where long double is larger than a double.
Therefore this patch skips the test on such targets.

* gcc.dg/warn-abs-1.c: Require float128 target.
Skip if large_long_double newlib target.

From-SVN: r264392

5 years ago[PATCH c++/86881] -Wshadow-local-compatible ICE
Nathan Sidwell [Tue, 18 Sep 2018 13:52:30 +0000 (13:52 +0000)]
[PATCH c++/86881] -Wshadow-local-compatible ICE

https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00984.html
PR c++/86881
cp/
* name-lookup.c (check_local_shadow): Ignore auto types.

testsuite/
* g++.dg/warn/pr86881.C: New.

From-SVN: r264391

5 years ago[AArch64][committed] Fix gcc.target/aarch64/spellcheck_1.c and spellcheck_4.c
Kyrylo Tkachov [Tue, 18 Sep 2018 13:32:12 +0000 (13:32 +0000)]
[AArch64][committed] Fix gcc.target/aarch64/spellcheck_1.c and spellcheck_4.c

These two tests started failing after commit r264335 that adjusted the cutoff point at which the diagnostic suggestions machinery decides a suggestion is meaningful.
For these tests it means we no longer suggest anything as an alternative to "armv8-a-typo" as an "arch=" pargma value. We do still list the valid options, we just don't prefer one particular value over the others.

When I first wrote this test it wasn't with a particular architecture suggestion in mind, but rather to test that the suggestion machinery is being sanely invoked.
So this patch changes the dg-message check to treat the "did you mean...?" hunk as optional (in case the heuristics in the suggestions machinery change again).

With this patch the two tests PASS again on aarch64.

    * gcc.target/aarch64/spellcheck_1.c:
    Make architecture suggestion optional.
    * gcc.target/aarch64/spellcheck_4.c:
    Likewise.

From-SVN: r264390

5 years ago[AArch64][testsuite][committed] Fix gcc.target/aarch64/combine_bfxil.c for -mabi...
Kyrylo Tkachov [Tue, 18 Sep 2018 13:28:50 +0000 (13:28 +0000)]
[AArch64][testsuite][committed] Fix gcc.target/aarch64/combine_bfxil.c for -mabi=ilp32

As described in https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00963.html this test generates UXTW instructions with -mabi=ilp32
because the foo* functions take pointers and store results into them. In ILP32 the callee clears the top bits with a UXTW.
This trips the scan-assembler-not UXTW test that checks that the zero_extend form of the BFXIL pattern is used, which it is.

This patch avoids this problem by not passing pointers to the results, but instead using global variables for which the foo* functions
will synthesise the address using ADRP, avoiding the UXTW instructions.

With this patch the test PASSes fully with -mabi=ilp32 and still PASSes on LP64.

* gcc.target/aarch64/combine_bfxil.c: Avoid passing pointers to
functions.

From-SVN: r264389

5 years agore PR middle-end/63155 (memory hog)
Richard Biener [Tue, 18 Sep 2018 13:26:05 +0000 (13:26 +0000)]
re PR middle-end/63155 (memory hog)

2018-09-18  Richard Biener  <rguenther@suse.de>

PR middle-end/63155
* tree-ssa-coalesce.c (tree_int_map_hasher): Remove.
(compute_samebase_partition_bases): Likewise.
(coalesce_ssa_name): Always use compute_optimized_partition_bases.
(gimple_can_coalesce_p): Simplify.

From-SVN: r264388

5 years agoUse v2 map syntax in libgcc-unwind.map if Solaris ld supports it
Rainer Orth [Tue, 18 Sep 2018 07:04:15 +0000 (07:04 +0000)]
Use v2 map syntax in libgcc-unwind.map if Solaris ld supports it

* configure.ac (solaris_ld_v2_maps): New test.
* configure: Regenerate.
* Makefile.in (solaris_ld_v2_maps): New variable.
* config/t-slibgcc-sld (libgcc-unwind.map): Emit v2 mapfile syntax
if supported.

From-SVN: r264382

5 years agoHandle a library implementation of ffs calling __builtin_ffs.
Hans-Peter Nilsson [Tue, 18 Sep 2018 02:42:15 +0000 (02:42 +0000)]
Handle a library implementation of ffs calling __builtin_ffs.

* config/mmix/mmix.c (TARGET_INIT_LIBFUNCS): Override with...
(mmix_init_libfuncs): New function: make __builtin_ffs expand
to __ffsdi2.

From-SVN: r264381

5 years agoDaily bump.
GCC Administrator [Tue, 18 Sep 2018 00:16:45 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r264380

5 years agoAdd range_idx param to range_label::get_text
David Malcolm [Mon, 17 Sep 2018 23:32:12 +0000 (23:32 +0000)]
Add range_idx param to range_label::get_text

This patch updates the pure virtual function range_label::get_text
(and its implementations) so that the index of the range is passed
in, allowing for one label instance to be shared by multiple ranges.

gcc/c-family/ChangeLog:
* c-format.c (range_label_for_format_type_mismatch::get_text):
Update for new param.

gcc/c/ChangeLog:
* c-objc-common.c (range_label_for_type_mismatch::get_text):
Update for new param.
* c-typeck.c (maybe_range_label_for_tree_type_mismatch::get_text):
Likewise.

gcc/cp/ChangeLog:
* error.c (range_label_for_type_mismatch::get_text): Update for
new param.

gcc/ChangeLog:
* diagnostic-show-locus.c (class layout_range): Add field
"m_original_idx".
(layout_range::layout_range): Add "original_idx" param and use it
to initialize new field.
(make_range): Use 0 for original_idx.
(layout::layout): Pass in index to calls to
maybe_add_location_range.
(layout::maybe_add_location_range): Add param "original_idx" and
pass it on to layout_range.
(layout::print_any_labels): Pass on range->m_original_idx to
get_text call.
(gcc_rich_location::add_location_if_nearby): Use 0 for
original_idx.
* gcc-rich-location.h (text_range_label::get_text): Update for new
param.
(range_label_for_type_mismatch::get_text): Likewise.

libcpp/ChangeLog:
* include/line-map.h (range_label::get_text): Add param
"range_idx".

From-SVN: r264376

5 years agoi386.c (ix86_emit_i387_log1p): Emit fldln2 earlier.
Uros Bizjak [Mon, 17 Sep 2018 20:33:04 +0000 (22:33 +0200)]
i386.c (ix86_emit_i387_log1p): Emit fldln2 earlier.

* config/i386/i386.c (ix86_emit_i387_log1p): Emit fldln2 earlier.

From-SVN: r264373

5 years agosubstring-locations: add class format_string_diagnostic_t
David Malcolm [Mon, 17 Sep 2018 20:31:01 +0000 (20:31 +0000)]
substring-locations: add class format_string_diagnostic_t

With the addition of ranges in r263564, format_warning_at_substring_n
has 10 arguments.

Reduce the number of args by bundling the shared ones into a
class format_string_diagnostic_t.

gcc/c-family/ChangeLog:
* c-format.c (format_warning_at_char): Update for introduction of
format_string_diagnostic_t.
(format_type_warning): Likewise.

gcc/ChangeLog:
* gimple-ssa-sprintf.c (fmtwarn): Update for introduction of
format_string_diagnostic_t.
(fmtwarn_n): Likewise.
* substring-locations.c
(format_string_diagnostic_t::format_string_diagnostic_t) New ctor.
(format_warning_n_va): Convert to...
(format_string_diagnostic_t::emit_warning_n_va): ...this.
(format_warning_va): Convert to...
(format_string_diagnostic_t::emit_warning_va): ...this.
(format_warning_at_substring): Convert to...
(format_string_diagnostic_t::emit_warning): ...this.
(format_warning_at_substring_n): Convert to...
(format_string_diagnostic_t::emit_warning_n): ...this.
* substring-locations.h (class format_string_diagnostic_t): New
class.
(format_warning_va): Convert to
format_string_diagnostic_t::emit_warning_va.
(format_warning_n_va): Convert to
format_string_diagnostic_t::emit_warning_n_va.
(format_warning_at_substring): Convert to
format_string_diagnostic_t::emit_warning.
(format_warning_at_substring_n): Convert to
format_string_diagnostic_t::emit_warning_n.

From-SVN: r264372

5 years ago[nvptx] Add atomic_fetch* support for SImode arguments.
Cesar Philippidis [Mon, 17 Sep 2018 19:59:19 +0000 (12:59 -0700)]
[nvptx] Add atomic_fetch* support for SImode arguments.

gcc/
* config/nvptx/nvptx.md (atomic_fetch_<logic><mode>): Enable with
SImode args.

gcc/testsuite/
* gcc.target/nvptx/atomic-fetch-2.c: Rename to ...
* gcc.target/nvptx/atomic_fetch-2.c: ... this.
* gcc.target/nvptx/atomic_fetch-3.c: New test.

Co-Authored-By: Bernd Schmidt <bernds_cb1@t-online.de>
From-SVN: r264371

5 years agoi386.md (truncxf<mode>2_i387_noop_unspec): Change operand 0 predicate to nonimmediate...
Uros Bizjak [Mon, 17 Sep 2018 15:00:57 +0000 (17:00 +0200)]
i386.md (truncxf<mode>2_i387_noop_unspec): Change operand 0 predicate to nonimmediate operand.

* config/i386/i386.md (truncxf<mode>2_i387_noop_unspec): Change
operand 0 predicate to nonimmediate operand.
(rint<mode>2_frndint): Remove insn pattern.
(rint<mode>2): Change operand 1 predicate to general_operand.
Extend operand 1 to XFmode and generate rintxf2 insn.
(frndintxf2_<rounding>): Rename from frndint<mode>2_<rounding>.
Do not use X87MODEF mode macro.
(frndintxf2_<rounding>_i387): Rename from
frndint<mode>2_<rounding>_i387.  Do not use X87MODEF mode macro.
(<rounding_insn><mode>2): For non-SSE modes, extend operand 1
to XFmode and generate significandxf3 insn.

From-SVN: r264370

5 years agore PR tree-optimization/87328 (ICE in do_rpo_vn, at tree-ssa-sccvn.c:6566)
Richard Biener [Mon, 17 Sep 2018 13:28:04 +0000 (13:28 +0000)]
re PR tree-optimization/87328 (ICE in do_rpo_vn, at tree-ssa-sccvn.c:6566)

2018-09-17  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87328
* tree-ssa-sccvn.c (process_bb): Remove assertion about not
visiting unexecutable backedges when not iterating.
(do_rpo_vn): Mark all edges not executable even when not
iterating.

* gcc.dg/torture/pr87328.c: New testcase.

From-SVN: r264369

5 years agoAdd -Wabsolute-value
Martin Jambor [Mon, 17 Sep 2018 13:12:12 +0000 (15:12 +0200)]
Add -Wabsolute-value

2018-09-17  Martin Jambor  <mjambor@suse.cz>

gcc/
* doc/invoke.texi (Warning Options): Likewise.

gcc/c-family/
* c.opt (Wabsolute-value): New.

gcc/c/
* c-parser.c: (warn_for_abs): New function.
(c_parser_postfix_expression_after_primary): Call it.

testsuite/
* gcc.dg/warn-abs-1.c: New test.
* gcc.dg/dfp/warn-abs-2.c: Likewise.

From-SVN: r264368

5 years agoms-sysv.exp: Don't pass TEST_ALWAYS_FLAGS to HOSTCXX.
Bernd Edlinger [Mon, 17 Sep 2018 12:41:58 +0000 (12:41 +0000)]
ms-sysv.exp: Don't pass TEST_ALWAYS_FLAGS to HOSTCXX.

2018-09-17  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * gcc.target/x86_64/abi/ms-sysv/ms-sysv.exp: Don't pass
        TEST_ALWAYS_FLAGS to HOSTCXX.

From-SVN: r264367

5 years agore PR fortran/64120 ([F03] Wrong handling of allocatable character string)
Paul Thomas [Mon, 17 Sep 2018 11:22:27 +0000 (11:22 +0000)]
re PR fortran/64120 ([F03] Wrong handling of allocatable character string)

2018-09-17  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/64120
* trans-decl.c (gfc_get_symbol_decl): Flag allocatable, scalar
characters with a variable length expression for deferred init.
(gfc_trans_deferred_vars): Perform the assignment for these
symbols by calling gfc_conv_string_length.

2018-09-17  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/64120
* gfortran.dg/allocatable_scalar_14.f90 : New test.

From-SVN: r264365

5 years agore PR tree-optimization/87301 (ICE: verify_gimple failed (error: statement marked...
Richard Biener [Mon, 17 Sep 2018 10:21:21 +0000 (10:21 +0000)]
re PR tree-optimization/87301 (ICE: verify_gimple failed (error: statement marked for throw, but doesn't))

2018-09-17  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87301
* tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_cleanup): Properly
clean EH info from leftover copy assignments.

* gcc.dg/torture/pr87301.c: New testcase.

From-SVN: r264364

5 years agoFix out-of-bounds in gcov.c (PR gcov-profile/85871).
Martin Liska [Mon, 17 Sep 2018 10:19:02 +0000 (12:19 +0200)]
Fix out-of-bounds in gcov.c (PR gcov-profile/85871).

2018-09-17  Martin Liska  <mliska@suse.cz>

PR gcov-profile/85871
* gcov.c (output_intermediate_file): Fix out of bounds
access.

From-SVN: r264363

5 years ago[ARC] Enable DBNZ for core3 and newer CPUs.
Vineet Gupta [Mon, 17 Sep 2018 08:52:22 +0000 (08:52 +0000)]
[ARC] Enable DBNZ for core3 and newer CPUs.

2018-09-17  Vineet Gupta  <vgupta@synopsys.com>

* config/arc/arc.c: Object attributes for core4 not reflected
correctly.
* config/arc/arc.h: Don't restrict DBNZ to core3 (core4 includes
core3).

From-SVN: r264362

5 years ago[ARC] Update LINK_EH_SPEC linker spec.
Alexey Brodkin [Mon, 17 Sep 2018 08:52:10 +0000 (08:52 +0000)]
[ARC] Update LINK_EH_SPEC linker spec.

With no trailing space in LINK_EH_SPEC linker spec gets generated as:
------------------------>8---------------------
%{!r:--build-id} --eh-frame-hdr%{h*} ...
------------------------>8---------------------

or even worse if hash style is added:
------------------------>8---------------------
%{!r:--build-id} --eh-frame-hdr--hash-style=sysv %{h*} ...
------------------------>8---------------------

Now if that spec is really used by LD then it fails inevitably
saying that it doesn't know option "--eh-frame-hdr--hash-style=sysv".

2018-09-17  Alexey Brodkin  <abrodkin@synopsys.com>

* config/arc/linux.h (LINK_EH_SPEC): Add missing space.

From-SVN: r264361

5 years agogcov: emit hotness colors to easily find hot code.
Martin Liska [Mon, 17 Sep 2018 08:49:09 +0000 (10:49 +0200)]
gcov: emit hotness colors to easily find hot code.

2018-09-17  Martin Liska  <mliska@suse.cz>

* doc/gcov.texi: Document new option --use-hotness-colors.
* gcov.c (struct source_info): Declare new field.
(source_info::source_info): Set default for maximum_count.
(print_usage): Add new -q option.
(process_args): Process it.
(accumulate_line_info): Save src->maximum_count.
(output_line_beginning): Make color line number if
flag_use_hotness_colors is set.
(output_line_details): Pass default argument value.
(output_lines): Pass src->maximum_count.

From-SVN: r264360

5 years agoi386: move alignment defaults to processor_costs.
Martin Liska [Mon, 17 Sep 2018 08:47:38 +0000 (10:47 +0200)]
i386: move alignment defaults to processor_costs.

2018-09-17  Martin Liska  <mliska@suse.cz>

* common/config/i386/i386-common.c (ix86_get_valid_option_values):
Use processor_names table.
* config/i386/i386.c (ix86_default_align): Use
processor_cost_table for alignment values.
(ix86_option_override_internal): Use processor_names.
(ix86_function_specific_print): Likewise.
* config/i386/i386.h (struct processor_costs):
Add alignment values.
(struct ptt): Remove and replace with const char *.
* config/i386/x86-tune-costs.h (struct processor_costs):
Declare default alignments for all costs.

From-SVN: r264359

5 years agore PR fortran/85954 (ICE in make_ssa_name_fn, at tree-ssanames.c:266)
Paul Thomas [Mon, 17 Sep 2018 07:18:17 +0000 (07:18 +0000)]
re PR fortran/85954 (ICE in make_ssa_name_fn, at tree-ssanames.c:266)

2018-09-17  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/85954
* resolve.c (resolve_assoc_var): If the target expression is a
deferred charlen dummy and the associate name shares the
charlen, generate a new one. Make sure that new charlens are in
the namespace list so that they get cleaned up.
* trans-array.c (gfc_is_reallocatable_lhs): Associate names are
not reallocatable.
* trans-decl.c (gfc_get_symbol_decl): Put deferred character
length dummy and result arrays on the deferred initialization
list so that the variable length arrays can be correctly dealt
with.
* trans-expr.c (gfc_conv_string_length): Return if 'expr' is
NULL rather than ICEing..

2018-09-17  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/85954
* gfortran.dg/deferred_character_21.f90 : New test.

From-SVN: r264358

5 years agotree-vrp.c (extract_range_from_unary_expr): Do not special case symbolics or VR_VARYI...
Aldy Hernandez [Mon, 17 Sep 2018 06:07:52 +0000 (06:07 +0000)]
tree-vrp.c (extract_range_from_unary_expr): Do not special case symbolics or VR_VARYING ranges for ABS_EXPR.

* tree-vrp.c (extract_range_from_unary_expr): Do not special case
symbolics or VR_VARYING ranges for ABS_EXPR.
* wide-int-range.cc (wide_int_range_abs): Return positive numbers
when range will wrap.

From-SVN: r264356

5 years agoDaily bump.
GCC Administrator [Mon, 17 Sep 2018 00:16:33 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r264355

5 years agofix PR 86484 and PR 84543
Janus Weil [Sun, 16 Sep 2018 19:57:52 +0000 (21:57 +0200)]
fix PR 86484 and PR 84543

2018-09-16  Janus Weil  <janus@gcc.gnu.org>

PR fortran/86484
PR fortran/84543
* match.c (gfc_match_assignment): For a polymorphic assignment,
make sure that the vtab for the rhs type is generated.

2018-09-16  Janus Weil  <janus@gcc.gnu.org>

PR fortran/86484
PR fortran/84543
* gfortran.dg/class_assign_2.f90: New test case.
* gfortran.dg/class_assign_3.f90: New test case.

From-SVN: r264350

5 years agore PR fortran/37802 (Improve wording for matmul bound checking)
Thomas Koenig [Sun, 16 Sep 2018 19:37:44 +0000 (19:37 +0000)]
re PR fortran/37802 (Improve wording for matmul bound checking)

2018-09-16  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/37802
* frontend-passes.c (B_ERROR): New macro for matmul bounds
checking error messages.
(C_ERROR): Likewise.
(inline_matmul_assign): Reorganize bounds checking, use B_ERROR
and C_ERROR macros.

2018-09-16  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/37802
* gfortran.dg/matmul_bounds_13.f90: New test case.
* gfortran.dg/inline_matmul_15.f90:  Adjust test for runtime
error.
* gfortran.dg/matmul_5.f90: Likewise.
* gfortran.dg/matmul_bounds_10.f90: Likewise.
* gfortran.dg/matmul_bounds_11.f90: Likewise.
* gfortran.dg/matmul_bounds_2.f90: Likewise.
* gfortran.dg/matmul_bounds_4.f90: Likewise.
* gfortran.dg/matmul_bounds_5.f90: Likewise.

2018-09-16  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/37802
* m4/matmul_internal.m4: Adjust error messages.
        * generated/matmul_c10.c: Regenerated.
        * generated/matmul_c16.c: Regenerated.
        * generated/matmul_c4.c: Regenerated.
        * generated/matmul_c8.c: Regenerated.
        * generated/matmul_i1.c: Regenerated.
        * generated/matmul_i16.c: Regenerated.
        * generated/matmul_i2.c: Regenerated.
        * generated/matmul_i4.c: Regenerated.
        * generated/matmul_i8.c: Regenerated.
        * generated/matmul_r10.c: Regenerated.
        * generated/matmul_r16.c: Regenerated.
        * generated/matmul_r4.c: Regenerated.
        * generated/matmul_r8.c: Regenerated.
        * generated/matmulavx128_c10.c: Regenerated.
        * generated/matmulavx128_c16.c: Regenerated.
        * generated/matmulavx128_c4.c: Regenerated.
        * generated/matmulavx128_c8.c: Regenerated.
        * generated/matmulavx128_i1.c: Regenerated.
        * generated/matmulavx128_i16.c: Regenerated.
        * generated/matmulavx128_i2.c: Regenerated.
        * generated/matmulavx128_i4.c: Regenerated.
        * generated/matmulavx128_i8.c: Regenerated.
        * generated/matmulavx128_r10.c: Regenerated.
        * generated/matmulavx128_r16.c: Regenerated.
        * generated/matmulavx128_r4.c: Regenerated.
        * generated/matmulavx128_r8.c: Regenerated.

From-SVN: r264349

5 years agoDaily bump.
GCC Administrator [Sun, 16 Sep 2018 00:16:43 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r264346

5 years agore PR middle-end/86864 (ICE in commit_one_edge_insertion on switch construct)
Eric Botcazou [Sat, 15 Sep 2018 09:21:09 +0000 (09:21 +0000)]
re PR middle-end/86864 (ICE in commit_one_edge_insertion on switch construct)

PR middle-end/86864
* cfgexpand.c (expand_gimple_basic_block): Be prepared for a BARRIER
before and after a JUMP_TABLE_DATA.

From-SVN: r264342

5 years agoDaily bump.
GCC Administrator [Sat, 15 Sep 2018 00:16:27 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r264341

5 years agore PR middle-end/87188 (Function pointer canonicalization optimized away)
John David Anglin [Fri, 14 Sep 2018 23:26:12 +0000 (23:26 +0000)]
re PR middle-end/87188 (Function pointer canonicalization optimized away)

PR middle-end/87188
* dojump.c (do_compare_and_jump): Canonicalize function pointers
when one operand is a function pointer.  Use POINTER_TYPE_P and
FUNC_OR_METHOD_TYPE_P.
* expr.c (do_store_flag): Use POINTER_TYPE_P and FUNC_OR_METHOD_TYPE_P.
* fold-const.c (build_range_check): Likewise.
* match.pd (simple_comparison): Likewise.

From-SVN: r264336

5 years agoFix overeager spelling corrections (PR c/82967)
David Malcolm [Fri, 14 Sep 2018 22:02:58 +0000 (22:02 +0000)]
Fix overeager spelling corrections (PR c/82967)

This patch tunes class best_match's cutoff for rejecting meaningless
spelling suggestions.

Previously, we allowed an edit distance of up to half of the length of the
longer of the goal string and closest candidate strings, rounded down.

With this patch, we now allow only up to a third - with some tuning of
rounding (and for very short strings), to ensure that:
(a) everything that worked before still works (with the removal of a
couple of cases that shouldn't), and that
(b) the new threshold is always at least as conservative as the old
threshold and thus shouldn't offer new nonsensical suggestions (with
the possible exception of cases where transposition has helped; see
r261521 aka Damerau-Levenshtein; PR other/69968).

In particular, all of the bogus suggestions from PR c/82967 are now
no longer offered.

gcc/ChangeLog:
PR c/82967
* spellcheck.c (get_edit_distance_cutoff): New function.
(selftest::test_edit_distance_unit_test_oneway): Rename to...
(selftest::test_get_edit_distance_one_way): ...this.
(selftest::test_get_edit_distance_unit): Rename to...
(selftest::test_get_edit_distance_both_ways): ...this.
(selftest::test_edit_distances): Move tests to this new function,
and test some more pairs of strings.  Update for above renaming.
(selftest::get_old_cutoff): New function.
(selftest::test_get_edit_distance_cutoff): New function.
(selftest::assert_suggested_for): New function.
(ASSERT_SUGGESTED_FOR): New macro.
(selftest::assert_not_suggested_for): New function.
(ASSERT_NOT_SUGGESTED_FOR): New macro.
(selftest::test_suggestions): New function.
(selftest::spellcheck_c_tests): Move test_get_edit_distance_unit
tests to selftest::test_edit_distances and call it.  Add calls to
selftest::test_get_edit_distance_cutoff and
selftest::test_suggestions.
* spellcheck.h (get_edit_distance_cutoff): New function declaration.
(best_match::consider): Replace hard-coded cutoff calculation with
a call to...
(best_match::get_cutoff): New declaration.
(best_match::get_best_meaningful_candidate): Likewise.

gcc/testsuite/ChangeLog:
PR c/82967
* c-c++-common/attributes-1.c: Remove bogus suggestion from
dg-prune-output.
* gcc.dg/diagnostic-token-ranges.c (undeclared_identifier): Remove
bogus suggestion.
* gcc.dg/spellcheck-identifiers-4.c: New test.

From-SVN: r264335

5 years agobuiltins.c (fold_builtin_strlen): Remove TODO comment.
Bernd Edlinger [Fri, 14 Sep 2018 20:36:19 +0000 (20:36 +0000)]
builtins.c (fold_builtin_strlen): Remove TODO comment.

2018-09-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * builtins.c (fold_builtin_strlen): Remove TODO comment.

testsuite:
2018-09-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * gcc.dg/warn-strlen-no-nul.c: Add some missing test cases.

From-SVN: r264334

5 years agofix previous commit message
Bernd Edlinger [Fri, 14 Sep 2018 20:14:20 +0000 (20:14 +0000)]
fix previous commit message

From-SVN: r264333

5 years ago2018-09-14 Bernd Edlinger msebor@redhat.com>
Bernd Edlinger [Fri, 14 Sep 2018 19:56:32 +0000 (19:56 +0000)]
2018-09-14  Bernd Edlinger msebor@redhat.com>

        revert:
        2018-07-30  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * tree-ssa-forwprop.c (simplify_builtin_call): Don't create a not NUL
        terminated string literal.

From-SVN: r264332

5 years agocmd/go: correct gccgo buildid file on ARM
Ian Lance Taylor [Fri, 14 Sep 2018 19:42:01 +0000 (19:42 +0000)]
cmd/go: correct gccgo buildid file on ARM

    Bring in https://golang.org/cl/135297 from the gc repository to fix a
    GCC bug report.

    Original CL description:

        The GNU assembler for ARM treats @ as a comment character, so section
        types must be written using % instead.

        Fixes https://gcc.gnu.org/PR87260.

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

From-SVN: r264330

5 years agobuiltins.c (unterminated_array): Handle ARRAY_REF.
Martin Sebor [Fri, 14 Sep 2018 18:35:26 +0000 (18:35 +0000)]
builtins.c (unterminated_array): Handle ARRAY_REF.

* builtins.c (unterminated_array): Handle ARRAY_REF.
(expand_builtin_stpcpy_1): Detect unterminated char arrays.
* builtins.h (unterminated_array): Declare extern.
* gimple-fold.c (gimple_fold_builtin_stpcpy): Detect unterminated
  arrays.
(gimple_fold_builtin_sprintf): Propagate NO_WARNING to transformed
calls.

* gcc.dg/warn-stpcpy-no-nul.c: New test.

From-SVN: r264328

5 years agobuiltins.c (unterminated_array): New.
Martin Sebor [Fri, 14 Sep 2018 18:23:58 +0000 (18:23 +0000)]
builtins.c (unterminated_array): New.

* builtins.c (unterminated_array): New.
(expand_builtin_strcpy): Adjust.
(expand_builtin_strcpy_args): Detect unterminated arrays.
* gimple-fold.c (get_maxval_strlen): Add argument.  Detect
unterminated arrays.
* gimple-fold.h (get_maxval_strlen): Add argument.
(gimple_fold_builtin_strcpy): Detec unterminated arrays.

* gimple-fold.c (get_range_strlen): Add argument.
(get_maxval_strlen): Adjust.
* gimple-fold.h (get_range_strlen): Add argument.

* gcc.dg/warn-strcpy-no-nul.c: New test.

Co-Authored-By: Jeff Law <law@redhat.com>
From-SVN: r264327

5 years ago* config/i386/movdirintrin.h: Fix copyright year.
Wei Xiao [Fri, 14 Sep 2018 17:03:09 +0000 (17:03 +0000)]
* config/i386/movdirintrin.h: Fix copyright year.

From-SVN: r264326

5 years agocompiler: don't use address of temporary for deferred delete
Ian Lance Taylor [Fri, 14 Sep 2018 16:55:41 +0000 (16:55 +0000)]
compiler: don't use address of temporary for deferred delete

    This CL corrects the handling of a deferred delete in a loop, to not
    use a temporary whose value will, at deferred execution time, wind up
    being the last value in the loop.

    The test for this is TestDeferDeleteSlow in the 1.11 runtime package.

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

From-SVN: r264325

5 years agoc++/61941 - Mis-parsing of warn_unused_result function with ref-qualifiers
Martin Sebor [Fri, 14 Sep 2018 16:41:37 +0000 (16:41 +0000)]
c++/61941 - Mis-parsing of warn_unused_result function with ref-qualifiers

gcc/testsuite/ChangeLog:
* g++.dg/pr61941.C: New test.

From-SVN: r264324

5 years ago[AArch64][committed] Fix gcc.target/aarch64/combine_bfi_1.c
Kyrylo Tkachov [Fri, 14 Sep 2018 16:05:42 +0000 (16:05 +0000)]
[AArch64][committed] Fix gcc.target/aarch64/combine_bfi_1.c

This test started failing because some of the functions in the combine dump that it scans uses a different pattern to match the same instruction: insv_regsi rather than aarch64_bfi.
The code generation is still the same.
The patch changes the scan to look for the actual instruction we want in the assembly.

This fixes the test.
Committing to trunk as obvious.

     * gcc.target/aarch64/combine_bfi_1.c: Scan for bfi instruction
     rather than pattern name in combine dump.

From-SVN: r264323

5 years agoreg-stack.c: Include regs.h.
Uros Bizjak [Fri, 14 Sep 2018 15:52:04 +0000 (17:52 +0200)]
reg-stack.c: Include regs.h.

* reg-stack.c: Include regs.h.
(replace_reg): Assert that mode is MODE_FLOAT or MODE_COMPLEX_FLOAT.
(emit_pop_insn): Default pop insn mode to the reg_raw_mode of
FIRST_STACK_REG, not DFmode.
(emit_swap_insn): Default swap insn mode to the reg_raw_mode of
FIRST_STACK_REG, not XFmode.  Explicitly construct swap RTX.
(change stack): Default register mode to the reg_raw_mode of
FIRST_STACK_REG, not DFmode.
* config/i386/i386.md (*swap<mode>): Remove insn pattern.
(*swapxf): Rename from swapxf.

From-SVN: r264319

5 years agoemmintrin.h: Add _MM_SHUFFLE2.
Carl Love [Fri, 14 Sep 2018 15:36:52 +0000 (15:36 +0000)]
emmintrin.h: Add _MM_SHUFFLE2.

gcc/ChangeLog:

2018-09-14  Carl Love  <cel@us.ibm.com>

* config/rs6000/emmintrin.h: Add _MM_SHUFFLE2.
* config/rs6000/xmmintrin.h: Add _MM_SHUFFLE.

From-SVN: r264317

5 years agors6000: Add another Z to go with Y (PR87224)
Segher Boessenkool [Fri, 14 Sep 2018 15:24:47 +0000 (17:24 +0200)]
rs6000: Add another Z to go with Y (PR87224)

This is another case where we ICE because Y does not allow reg+reg, we
need Z for that.

PR target/87224
* config/rs6000/rs6000.md (*mov<mode>_hardfloat64): Add Z to the Y
alternatives.

From-SVN: r264316

5 years ago[Aarch64] Added pattern to match zero extended bfxil
Sam Tebbs [Fri, 14 Sep 2018 15:16:17 +0000 (15:16 +0000)]
[Aarch64] Added pattern to match zero extended bfxil

gcc/
2018-07-31  Sam Tebbs  <sam.tebbs@arm.com>

PR target/85628
* config/aarch64/aarch64.md (*aarch64_bfxilsi_uxtw): Define.

gcc/testsuite
2018-07-31  Sam Tebbs  <sam.tebbs@arm.com>

PR target/85628
* gcc.target/aarch64/combine_bfxil.c (combine_zero_extended_int, foo6):
New functions.

From-SVN: r264315

5 years agoFix --enable-gather-detailed-mem-stats.
Jason Merrill [Fri, 14 Sep 2018 13:26:27 +0000 (09:26 -0400)]
Fix --enable-gather-detailed-mem-stats.

* hash-table.c (hash_table_usage): Change from variable to function.
* hash-table.h: Adjust.
* Makefile.in: Add missing dependencies on hash-table.h.

From-SVN: r264313

5 years ago[tree-ssa-mathopts] PR tree-optimization/87259: Call execute_cse_reciprocals_1 before...
Kyrylo Tkachov [Fri, 14 Sep 2018 13:13:14 +0000 (13:13 +0000)]
[tree-ssa-mathopts] PR tree-optimization/87259: Call execute_cse_reciprocals_1 before trying optimize_recip_sqrt

PR tree-optimization/87259
PR lto/87283
(pass_cse_reciprocals::execute): Run optimize_recip_sqrt after
execute_cse_reciprocals_1 has tried transforming.

PR tree-optimization/87259
* gcc.dg/pr87259.c: New test.

From-SVN: r264312

5 years agotree-vrp.c (extract_range_from_binary_expr_1): Normalize VR_VARYING for PLUS/MINUS_EXPR.
Aldy Hernandez [Fri, 14 Sep 2018 10:46:35 +0000 (10:46 +0000)]
tree-vrp.c (extract_range_from_binary_expr_1): Normalize VR_VARYING for PLUS/MINUS_EXPR.

* tree-vrp.c (extract_range_from_binary_expr_1): Normalize
VR_VARYING for PLUS/MINUS_EXPR.

From-SVN: r264307

5 years agopatching file gcc/config/s390/s390-passes.def
Ilya Leoshkevich [Fri, 14 Sep 2018 10:15:46 +0000 (10:15 +0000)]
patching file gcc/config/s390/s390-passes.def
S/390: Improve s390-passes.def formatting

The result looks nicer in the generated pass-instances.def.

gcc/ChangeLog:

2018-09-14  Ilya Leoshkevich  <iii@linux.ibm.com>

* config/s390/s390-passes.def (INSERT_PASS_BEFORE): Improve
formatting.

From-SVN: r264306

5 years ago[libgfortran] Fix uninitialized variable use in fallback_access
Kyrylo Tkachov [Fri, 14 Sep 2018 09:22:01 +0000 (09:22 +0000)]
[libgfortran] Fix uninitialized variable use in fallback_access

I've been tracking down a bug in a Fortran program on a newlib target and it boils down to fallback_access doing something bad.
The unconditional calls to close cause havoc when open doesn't get called due to the short-circuiting in the if-statement above
because the fd is uninitialised. In my environment GCC ends up calling close on file descriptor 0, thus trying to close stdin.

This patch tightens up the calling so that close is called only when the corresponding open call succeeded.
With this my runtime failure disappears.

Bootstrapped and tested on aarch64-none-linux-gnu.
Though that doesn't exercise this call I hope it's an obviously correct change.

* io/unix.c (fallback_access): Avoid calling close on
uninitialized file descriptor.

From-SVN: r264305

5 years agore PR middle-end/63155 (memory hog)
Richard Biener [Fri, 14 Sep 2018 06:59:21 +0000 (06:59 +0000)]
re PR middle-end/63155 (memory hog)

2018-09-14  Richard Biener  <rguenther@suse.de>

PR middle-end/63155
* tree-ssa-coalesce.c (ssa_conflicts_merge): Remove conflict
bits for the merged partition.

From-SVN: r264304

5 years agobuiltins.h (c_srlen): Add argument.
Martin Sebor [Fri, 14 Sep 2018 03:34:19 +0000 (03:34 +0000)]
builtins.h (c_srlen): Add argument.

* builtins.h (c_srlen): Add argument.
* builtins.c (warn_string_no_nul): New function.
(c_strlen): Add argument and use it.  Update recursive calls.
Pass DECL argument to string_constant to get info on non
terminated strings.  Update *NONSTR as needed.
(fold_builtin_strlen): Add argument to calls to c_strlen.
Warn for unterminated arrays.
(warn_string_no_null): Add prototype.
* expr.c (string_constant): Update arguments.  Update recursive
calls appropriately.  Detect missing NUL terminator and outermost
declaration its missing in.
Improve checks for arrays with nonzero lower bound or elements
that are not a single byte.  Simplify offset computation.
Simplify checks for non-NUL terminated strings.
* gimple-fold.c (get_range_strlen): Add argument to c_strlen call.
* gimple-ssa-sprintf.c (get_string_length): Remove unnecessary code.

* gcc.dg/warn-strlen-no-nul.c: New test.

Co-Authored-By: Bernd Edlinger <bernd.edlinger@hotmail.de>
Co-Authored-By: Jeff Law <law@redhat.com>
From-SVN: r264302

5 years agobuiltins.c (c_strlen): Handle not zero terminated STRING_CSTs correctly.
Bernd Edlinger [Fri, 14 Sep 2018 01:49:38 +0000 (01:49 +0000)]
builtins.c (c_strlen): Handle not zero terminated STRING_CSTs correctly.

* builtins.c (c_strlen): Handle not zero terminated STRING_CSTs
correctly.
* fold-const.c (c_getstr): Fix function comment.  Remove unused third
argument.  Fix range checks.
* fold-const.h (c_getstr): Adjust protoype.
* gimple-fold.c (gimple_fold_builtin_memory_op): Avoid folding when
string is constant but contains no NUL byte.

From-SVN: r264301

5 years agoexpr.c (string_constant): Adjust function comment.
Bernd Edlinger [Fri, 14 Sep 2018 01:42:56 +0000 (01:42 +0000)]
expr.c (string_constant): Adjust function comment.

* expr.c (string_constant): Adjust function comment.
Remove bogus check for zero termination.

From-SVN: r264300

5 years agoDaily bump.
GCC Administrator [Fri, 14 Sep 2018 00:16:45 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r264299

5 years agocompiler, runtime: call gcWriteBarrier instead of writebarrierptr
Ian Lance Taylor [Thu, 13 Sep 2018 22:25:58 +0000 (22:25 +0000)]
compiler, runtime: call gcWriteBarrier instead of writebarrierptr

    In 1.11 writebarrierptr is going away, so change the compiler to call
    gcWriteBarrier instead.  We weren't using gcWriteBarrier before;
    adjust the implementation to use the putFast method.

    This revealed a problem in the kickoff function.  When using cgo,
    kickoff can be called on the g0 of an m allocated by newExtraM.  In
    that case the m will generally have a p, but systemstack may be called
    by wbBufFlush as part of flushing the write barrier buffer.  At that
    point the buffer is full, so we can not do a write barrier.  So adjust
    the existing code in kickoff so that in the case where we are g0,
    don't do any write barrier at all.

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

From-SVN: r264295

5 years agoruntime: correct counters in sweep
Ian Lance Taylor [Thu, 13 Sep 2018 22:06:16 +0000 (22:06 +0000)]
runtime: correct counters in sweep

    In the sweep code we can sometimes see incorrect counts when
    conservative stack scanning causes us to grey an object that we
    earlier decided could be freed.  We already ignored this check, but
    adjust this case to maintain correct span counts when it happens.
    This gives us slightly more correct numbers in MemStats, and helps
    avoid a rare failure in TestReadMemStats.

    Also fix the free index, and cope with finding a full span when
    allocating a new one.

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

From-SVN: r264294

5 years ago* fold-const.c (c_getstr): Clamp STRING_LENGTH to STRING_SIZE.
Bernd Edlinger [Thu, 13 Sep 2018 22:00:56 +0000 (22:00 +0000)]
* fold-const.c (c_getstr): Clamp STRING_LENGTH to STRING_SIZE.

From-SVN: r264293

5 years agovarasm.c (compare_constant): Compare type size of STRING_CSTs.
Bernd Edlinger [Thu, 13 Sep 2018 21:43:16 +0000 (21:43 +0000)]
varasm.c (compare_constant): Compare type size of STRING_CSTs.

* varasm.c (compare_constant): Compare type size of STRING_CSTs.
(get_constant_size): Don't make STRING_CSTs larger than they are.
(check_string_literal): New check function for STRING_CSTs.
(output_constant): Use it.

From-SVN: r264292

5 years ago* c-typeck.c (digest_init): Shorten overlength strings.
Bernd Edlinger [Thu, 13 Sep 2018 21:40:38 +0000 (21:40 +0000)]
* c-typeck.c (digest_init): Shorten overlength strings.

From-SVN: r264291

5 years agocompiler, runtime: open code select
Ian Lance Taylor [Thu, 13 Sep 2018 21:32:24 +0000 (21:32 +0000)]
compiler, runtime: open code select

    This is the gofrontend version of https://golang.org/cl/37933,
    https://golang.org/cl/37934, and https://golang.org/cl/37935.
    Open code the initialization of select cases.

    This is a step toward updating libgo to the 1.11 release.

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

From-SVN: r264290

5 years agoFix the previous ChangeLog
Bernd Edlinger [Thu, 13 Sep 2018 18:56:49 +0000 (18:56 +0000)]
Fix the previous ChangeLog

From-SVN: r264287

5 years agotypeck2.c (digest_init_r): Fix overlength strings.
Bernd Edlinger [Thu, 13 Sep 2018 18:43:44 +0000 (18:43 +0000)]
typeck2.c (digest_init_r): Fix overlength strings.

* typeck2.c (digest_init_r): Fix overlength strings.
* vtable-class-hierarchy.c (build_key_buffer_arg): Make string literal
NUL terminated.

From-SVN: r264286

5 years agotrans-array.c (gfc_conv_array_initializer): Remove excess precision from overlength...
Bernd Edlinger [Thu, 13 Sep 2018 18:42:16 +0000 (18:42 +0000)]
trans-array.c (gfc_conv_array_initializer): Remove excess precision from overlength string initializers.

* trans-array.c (gfc_conv_array_initializer): Remove excess precision
from overlength string initializers.

From-SVN: r264285

5 years agocompiler: implement //go:nowritebarrierrec
Ian Lance Taylor [Thu, 13 Sep 2018 17:49:07 +0000 (17:49 +0000)]
compiler: implement //go:nowritebarrierrec

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

From-SVN: r264283

5 years agoruntime: avoid write barriers with traceback info
Ian Lance Taylor [Thu, 13 Sep 2018 17:30:00 +0000 (17:30 +0000)]
runtime: avoid write barriers with traceback info

    Unlike the gc runtime, libgo stores traceback information in location
    structs, which contain strings.  Therefore, copying location structs
    around appears to require write barriers, although in fact write
    barriers are never important because the strings are never allocated
    in Go memory.  They come from libbacktrace.

    Some of the generated write barriers come at times when write barriers
    are not permitted.  For example, exitsyscall, marked
    nowritebarrierrec, calls exitsyscallfast which calls traceGoSysExit
    which calls traceEvent which calls traceStackID which calls
    trace.stackTab.put which copies location values into memory allocated
    by tab.newStack.  This write barrier can be invoked when there is no
    p, causing a crash.

    This change fixes the problem by ensuring that location values are
    copied around in the tracing code with no write barriers.

    This was found by fixing the compiler to fully implement
    //go:nowritebarrierrec; CL to follow.

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

From-SVN: r264282

5 years agore PR target/86812 (visium port needs updating for CVE-2017-5753)
Eric Botcazou [Thu, 13 Sep 2018 17:27:00 +0000 (17:27 +0000)]
re PR target/86812 (visium port needs updating for CVE-2017-5753)

PR target/86812
* config/visium/visium.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define.

From-SVN: r264281

5 years ago* Makefile.rtl (arm% linux-gnueabi%): Always set EH_MECHANISM to -arm.
Eric Botcazou [Thu, 13 Sep 2018 17:13:05 +0000 (17:13 +0000)]
* Makefile.rtl (arm% linux-gnueabi%): Always set EH_MECHANISM to -arm.

From-SVN: r264278

5 years agore PR ada/81103 (gcc/ada/terminals.c: please remove unused termio.h)
Eric Botcazou [Thu, 13 Sep 2018 17:05:40 +0000 (17:05 +0000)]
re PR ada/81103 (gcc/ada/terminals.c: please remove unused termio.h)

PR ada/81103
* terminals.c: Do not include termio.h.

From-SVN: r264277

5 years agolibgo: build roots index to speed up bulkBarrierPreWrite
Ian Lance Taylor [Thu, 13 Sep 2018 16:44:43 +0000 (16:44 +0000)]
libgo: build roots index to speed up bulkBarrierPreWrite

    To reduce the amount of time spent in write barrier processing
    (specifically runtime.bulkBarrierPreWrite), add support for building a
    'GC roots index', basically a sorted list of all roots, so as to
    allow more efficient lookups of gcdata structures for globals. The
    previous implementation worked on the raw (unsorted) roots list
    itself, which did not scale well.

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

From-SVN: r264276

5 years agoAdd self to maintainers list.
Matthew Malcomson [Thu, 13 Sep 2018 16:11:29 +0000 (16:11 +0000)]
Add self to maintainers list.

2018-09-13  Matthew Malcomson  <matthew.malcomson@arm.com>

* MAINTAINERS (Write After Approval): Add self.

From-SVN: r264275

5 years agoMAINTAINERS (write_after_approval): Add myself.
Sam Tebbs [Thu, 13 Sep 2018 16:03:05 +0000 (16:03 +0000)]
MAINTAINERS (write_after_approval): Add myself.

2018-09-13  Sam Tebbs  <sam.tebbs@arm.com>

* MAINTAINERS (write_after_approval): Add myself.

From-SVN: r264274

5 years agore PR tree-optimization/87263 (ICE on valid code at -O1: verify_ssa failed)
Richard Biener [Thu, 13 Sep 2018 14:15:41 +0000 (14:15 +0000)]
re PR tree-optimization/87263 (ICE on valid code at -O1: verify_ssa failed)

2018-09-13  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87263
* tree-ssa-sccvn.c (visit_phi): Revert some earlier changes.
(struct unwind_state): Add max_rpo field.
(do_rpo_vn): Allow up-to-date loop state to be used when not iterating.
Compute max_rpo, the max RPO number a block can be backwards reached
from.  Re-write non-iterating mode to a RPO ordered worklist approach,
separating it from the iterating mode.

* gcc.dg/torture/pr87263.c: New testcase.
* gcc.dg/torture/ssa-fre-2.c: Likewise.
* gcc.dg/torture/ssa-fre-3.c: Likewise.
* gcc.dg/torture/ssa-fre-4.c: Likewise.

From-SVN: r264273

5 years agoLimit workaround for Clang bug to __clang_major__ <= 7
Jonathan Wakely [Thu, 13 Sep 2018 13:47:14 +0000 (14:47 +0100)]
Limit workaround for Clang bug to __clang_major__ <= 7

The bug https://bugs.llvm.org/show_bug.cgi?id=33222 is now fixed on
Clang trunk, so the workaround won't be needed for Clang 8.0 and later.

* include/std/variant (variant) [__clang__]: Limit workaround to
Clang 7 and older.

From-SVN: r264271