gcc.git
5 years agoPR libstdc++/81266 fix std::thread::native_handle_type test
Jonathan Wakely [Fri, 10 May 2019 21:41:23 +0000 (22:41 +0100)]
PR libstdc++/81266 fix std::thread::native_handle_type test

The test uses remove_pointer because in most cases native_handle_type is
a pointer to the actual type that the C++ class contains. However, for
std::thread, native_handle_type is the same type as the type contained
in std::thread, and so remove_pointer is not needed. On targets where
pthread_t is a pointer type remove_pointer<native_handle_type> is not a
no-op, instead it transforms pthread_t and causes the test to fail.

The fix is to not apply remove_pointer when testing std::thread.

PR libstdc++/81266
* testsuite/util/thread/all.h: Do not use remove_pointer for
std::thread::native_handle_type.

From-SVN: r271080

5 years agoPR libstdc++/90397 fix std::variant friend declarations
Jonathan Wakely [Fri, 10 May 2019 21:41:19 +0000 (22:41 +0100)]
PR libstdc++/90397 fix std::variant friend declarations

Clang diagnoses the inconsistent noexcept-specifier on the friend
declaration of __get. Add it, and also on __get_storage.

PR libstdc++/90397
* include/std/variant (_Variant_storage<false, Types...>::_M_storage())
(_Variant_storage<true, Types...>::_M_reset()))
(_Variant_storage<true, Types...>::_M_storage())): Add noexcept.
(__get_storage): Likewise.
(variant): Add noexcept to friend declarations for __get and
__get_storage.

From-SVN: r271079

5 years agoPR libstdc++/90388 fix std::hash<unique_ptr<T,D>> bugs
Jonathan Wakely [Fri, 10 May 2019 21:41:16 +0000 (22:41 +0100)]
PR libstdc++/90388 fix std::hash<unique_ptr<T,D>> bugs

A disabled specialization should not be callable, so move the function
call operator into a new base class which correctly implements the
disabled hash semantics. For the versioned namespace configuration do
not derive from __poison_hash in the enabled case, as the empty base
class serves no purpose but potentially increases the object size. For
the default configuration that base class must be kept, to preserve
layout.

An enabled specialization should not be unconditionally noexcept,
because the underlying hash object might throw.

PR libstdc++/90388
* include/bits/unique_ptr.h (default_delete, default_delete<T[]>):
Use _Require for constraints.
(operator>(nullptr_t, const unique_ptr<T,D>&)): Implement exactly as
per the standard.
(__uniq_ptr_hash): New base class with conditionally-disabled call
operator.
(hash<unique_ptr<T,D>>): Derive from __uniq_ptr_hash.
* testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line.
* testsuite/20_util/unique_ptr/hash/90388.cc: New test.

From-SVN: r271078

5 years agoImprove API docs for <memory> and <new>
Jonathan Wakely [Fri, 10 May 2019 21:41:11 +0000 (22:41 +0100)]
Improve API docs for <memory> and <new>

* include/bits/shared_ptr.h: Improve docs.
* include/bits/shared_ptr_base.h: Likewise.
* include/bits/stl_uninitialized.h: Likewise.
* include/bits/unique_ptr.h: Likewise.
* libsupc++/new: Likewise.

From-SVN: r271077

5 years agore PR fortran/61968 (ICE (assembly failure) due to wrongly generating a vtable for...
Thomas Koenig [Fri, 10 May 2019 20:14:22 +0000 (20:14 +0000)]
re PR fortran/61968 (ICE (assembly failure) due to wrongly generating a vtable for TYPE(*) / BT_ASSUMED_TYPE)

2019-05-10  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/61968
    * interface.c (compare_actual_formal): Do not create a vtab if
    the actual argument is assumed type.

2019-05-10  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/61968
    * gfortran.dg/assumed_type_10.f90: New test case.
    * gfortran.dg/assumed_type_11.f90: New test case.

From-SVN: r271076

5 years agoFix typo in gcc/fortran/ChangeLog
Janne Blomqvist [Fri, 10 May 2019 20:09:43 +0000 (23:09 +0300)]
Fix typo in gcc/fortran/ChangeLog

From-SVN: r271075

5 years agocompiler: permit inlining receive expressions
Ian Lance Taylor [Fri, 10 May 2019 19:41:55 +0000 (19:41 +0000)]
compiler: permit inlining receive expressions

    This does not permit any new inlinable functions in the standard library.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176637

From-SVN: r271074

5 years agodarwin, testsuite - provide an asm shim for AVX12F tests.
Iain Sandoe [Fri, 10 May 2019 19:14:21 +0000 (19:14 +0000)]
darwin, testsuite - provide an asm shim for AVX12F tests.

Darwin will build these tests and run them if/when it's
available on the relevant hardware.

2019-05-10  Iain Sandoe  <iain@sandoe.co.uk>

* gcc.target/x86_64/abi/avx512f/abi-avx512f.exp: Darwin is
now tested.
* gcc.target/x86_64/abi/avx512f/asm-support-darwin.s: New.

From-SVN: r271073

5 years agodecl.c (grokvardecl): Use an accurate location in error message about main as a globa...
Paolo Carlini [Fri, 10 May 2019 18:00:52 +0000 (18:00 +0000)]
decl.c (grokvardecl): Use an accurate location in error message about main as a global variable.

/cp
2019-05-10  Paolo Carlini  <paolo.carlini@oracle.com>

* decl.c (grokvardecl): Use an accurate location in error message
about main as a global variable.

/testsuite
2019-05-10  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/diagnostic/main1.C: New.

From-SVN: r271070

5 years agocall.c (build_call_a): Use FUNC_OR_METHOD_TYPE_P.
Paolo Carlini [Fri, 10 May 2019 17:57:27 +0000 (17:57 +0000)]
call.c (build_call_a): Use FUNC_OR_METHOD_TYPE_P.

2019-05-10  Paolo Carlini  <paolo.carlini@oracle.com>

* call.c (build_call_a): Use FUNC_OR_METHOD_TYPE_P.
* cp-gimplify.c (cp_fold): Likewise.
* cp-objcp-common.c (cp_type_dwarf_attribute): Likewise.
* cp-tree.h (TYPE_OBJ_P, TYPE_PTROBV_P): Likewise.
* cvt.c (perform_qualification_conversions): Likewise.
* decl.c (grokdeclarator): Likewise.
* decl2.c (build_memfn_type): Likewise.
* mangle.c (canonicalize_for_substitution, write_type): Likewise.
* parser.c (cp_parser_omp_declare_reduction): Likewise.
* pt.c (check_explicit_specialization, uses_deducible_template_parms,
check_cv_quals_for_unify, dependent_type_p_r): Likewise.
* rtti.c (ptr_initializer): Likewise.
* semantics.c (finish_asm_stmt, finish_offsetof,
cp_check_omp_declare_reduction): Likewise.
* tree.c (cp_build_qualified_type_real,
cp_build_type_attribute_variant, cxx_type_hash_eq,
cxx_copy_lang_qualifiers, cp_free_lang_data): Likewise.
* typeck.c (structural_comptypes, convert_arguments,
cp_build_addr_expr_1, unary_complex_lvalue, cp_build_c_cast,
cp_build_modify_expr, comp_ptr_ttypes_real, type_memfn_rqual):
Likewise.

From-SVN: r271069

5 years agoPR c++/78010 - bogus -Wsuggest-override warning on final function.
Marek Polacek [Fri, 10 May 2019 14:53:30 +0000 (14:53 +0000)]
PR c++/78010 - bogus -Wsuggest-override warning on final function.

* class.c (check_for_override): Don't warn for final functions.

* g++.dg/warn/Wsuggest-override-2.C: New test.

From-SVN: r271065

5 years agocompiler: permit inlining variable declaration statements
Ian Lance Taylor [Fri, 10 May 2019 13:44:36 +0000 (13:44 +0000)]
compiler: permit inlining variable declaration statements

    This adds all of two inlinable functions to the standard library:
    crypto/subtle.ConstantTimeLessOrEq, regexp.(*Regexp).Copy.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176378

From-SVN: r271063

5 years agotree-ssa-sccvn.c (visit_reference_op_call): Initialize value-id.
Richard Biener [Fri, 10 May 2019 12:01:04 +0000 (12:01 +0000)]
tree-ssa-sccvn.c (visit_reference_op_call): Initialize value-id.

2019-05-10  Richard Biener  <rguenther@suse.de>

* tree-ssa-sccvn.c (visit_reference_op_call): Initialize value-id.
(do_rpo_vn): Initialize next_value_id.

From-SVN: r271061

5 years agoFix a plural in a param description.
Martin Liska [Fri, 10 May 2019 09:22:54 +0000 (11:22 +0200)]
Fix a plural in a param description.

2019-05-10  Martin Liska  <mliska@suse.cz>

* params.def (PARAM_GIMPLE_FE_COMPUTED_HOT_BB_THRESHOLD):
Fix plural form.

From-SVN: r271060

5 years agore PR tree-optimization/90385 (ICE: tree check: expected ssa_name, have real_cst...
Jakub Jelinek [Fri, 10 May 2019 08:20:38 +0000 (10:20 +0200)]
re PR tree-optimization/90385 (ICE: tree check: expected ssa_name, have real_cst in transform_to_exit_first_loop_alt, at tree-parloops.c:1772)

PR tree-optimization/90385
* tree-parloops.c (try_create_reduction_list): Punt on non-SSA_NAME
arguments of the exit phis.

* gfortran.dg/pr90385.f90: New test.

From-SVN: r271059

5 years agore PR c++/90383 (GCC generates invalid constexpr copy/move assignment operators for...
Jakub Jelinek [Fri, 10 May 2019 08:19:44 +0000 (10:19 +0200)]
re PR c++/90383 (GCC generates invalid constexpr copy/move assignment operators for types with trailing padding. (Again))

PR c++/90383
* tree-inline.h (struct copy_body_data): Add do_not_fold member.
* tree-inline.c (remap_gimple_op_r): Avoid folding expressions if
id->do_not_fold.
(copy_tree_body_r): Likewise.
(copy_fn): Set id.do_not_fold to true.

* g++.dg/cpp1y/constexpr-90383-1.C: New test.
* g++.dg/cpp1y/constexpr-90383-2.C: New test.

From-SVN: r271058

5 years agore PR fortran/90093 (Extended C interop: optional argument incorrectly identified...
Paul Thomas [Fri, 10 May 2019 07:59:42 +0000 (07:59 +0000)]
re PR fortran/90093 (Extended C interop: optional argument incorrectly identified as PRESENT)

2019-05-10  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/90093
* trans-decl.c (convert_CFI_desc): Test that the dummy is
present before doing any of the conversions.

PR fortran/90352
* decl.c (gfc_verify_c_interop_param): Restore the error for
charlen > 1 actual arguments passed to bind(C) procs.
Clean up trailing white space.

PR fortran/90355
* trans-array.c (gfc_trans_create_temp_array): Set the 'span'
field to the element length for all types.
(gfc_conv_expr_descriptor): The force_no_tmp flag is used to
prevent temporary creation, especially for substrings.
* trans-decl.c (gfc_trans_deferred_vars): Rather than assert
that the backend decl for the string length is non-null, use it
as a condition before calling gfc_trans_vla_type_sizes.
* trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): 'force_no_tmp'
is set before calling gfc_conv_expr_descriptor.
* trans.c (get_array_span): Move the code for extracting 'span'
from gfc_build_array_ref to this function. This is specific to
descriptors that are component and indirect references.
* trans.h : Add the force_no_tmp flag bitfield to gfc_se.

2019-05-10  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/90093
* gfortran.dg/ISO_Fortran_binding_12.f90: New test.
* gfortran.dg/ISO_Fortran_binding_12.c: Supplementary code.

PR fortran/90352
* gfortran.dg/iso_c_binding_char_1.f90: New test.

PR fortran/90355
* gfortran.dg/ISO_Fortran_binding_4.f90: Add 'substr' to test
the direct passing of substrings as descriptors to bind(C).
* gfortran.dg/assign_10.f90: Increase the tree_dump count of
'atmp' to account for the setting of the 'span' field.
* gfortran.dg/transpose_optimization_2.f90: Ditto.

From-SVN: r271057

5 years agore PR tree-optimization/88709 (Improve store-merging)
Jakub Jelinek [Fri, 10 May 2019 07:53:23 +0000 (09:53 +0200)]
re PR tree-optimization/88709 (Improve store-merging)

PR tree-optimization/88709
PR tree-optimization/90271
* gcc.dg/store_merging_29.c: Allow 4 stores to replace 6 stores on
arm*-*-*.

From-SVN: r271056

5 years agore PR pch/90326 (Using any precompiled header breaks definition of FLT_MAX)
Jakub Jelinek [Fri, 10 May 2019 07:39:46 +0000 (09:39 +0200)]
re PR pch/90326 (Using any precompiled header breaks definition of FLT_MAX)

PR pch/90326
cp/
* config-lang.in (gtfiles): Remove c-family/c-lex.c, add
c-family/c-cppbuiltin.c.
objc/
* config-lang.in (gtfiles): Add c-family/c-format.c.
objcp/
* config-lang.in (gtfiles): Don't add c-family/c-cppbuiltin.c.
testsuite/
* g++.dg/pch/pr90326.C: New test.
* g++.dg/pch/pr90326.Hs: New file.

From-SVN: r271055

5 years agoReapply r269790 which was missed during rebase.
Martin Liska [Fri, 10 May 2019 07:22:31 +0000 (09:22 +0200)]
Reapply r269790 which was missed during rebase.

2019-05-10  Martin Liska  <mliska@suse.cz>

* config/i386/i386-expand.c (ix86_expand_floorceildf_32):
Reapply changes from r269790.

From-SVN: r271054

5 years agoAdd params for jump-table expansion params (PR middle-end/90340).
Martin Liska [Fri, 10 May 2019 06:32:31 +0000 (08:32 +0200)]
Add params for jump-table expansion params (PR middle-end/90340).

2019-05-10  Martin Liska  <mliska@suse.cz>

PR middle-end/90340
* doc/invoke.texi: New params.
* params.def (PARAM_JUMP_TABLE_MAX_GROWTH_RATIO_FOR_SIZE): New.
(PARAM_JUMP_TABLE_MAX_GROWTH_RATIO_FOR_SPEED): Likewise.
* tree-switch-conversion.c (jump_table_cluster::can_be_handled):
Use it.
* tree-switch-conversion.h (struct jump_table_cluster):
Likewise.
2019-05-10  Martin Liska  <mliska@suse.cz>

PR middle-end/90340
* gcc.dg/tree-ssa/pr90340-2.c: New test.
* gcc.dg/tree-ssa/pr90340.c: New test.

From-SVN: r271053

5 years agoFix location where lto-dump is installed.
Martin Liska [Fri, 10 May 2019 06:31:32 +0000 (08:31 +0200)]
Fix location where lto-dump is installed.

2019-05-10  Martin Liska  <mliska@suse.cz>

* Make-lang.in: Use program_transform_name for lto-dump.
* config-lang.in: Do not mark lto-dump compiler as we don't
want to have it installed at
lib/gcc/x86_64-pc-linux-gnu/10.0.0/lto-dump.

From-SVN: r271052

5 years agoDaily bump.
GCC Administrator [Fri, 10 May 2019 00:16:15 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r271051

5 years agocombine: Don't generate IF_THEN_ELSE
Segher Boessenkool [Fri, 10 May 2019 00:08:41 +0000 (02:08 +0200)]
combine: Don't generate IF_THEN_ELSE

On all targets I managed to test (21) this results in better code.  Only
alpha ends up with slightly bigger code.

* combine.c (combine_simplify_rtx): Don't make IF_THEN_ELSE RTL.

From-SVN: r271047

5 years ago* de.po, fr.po: Update.
Joseph Myers [Thu, 9 May 2019 21:41:07 +0000 (22:41 +0100)]
* de.po, fr.po: Update.

From-SVN: r271045

5 years agocompiler: avoid copy for string([]byte) conversion used in map keys
Cherry Zhang [Thu, 9 May 2019 21:24:56 +0000 (21:24 +0000)]
compiler: avoid copy for string([]byte) conversion used in map keys

    If a string([]byte) conversion is used immediately as a key for a
    map read, we don't need to copy the backing store of the byte
    slice, as mapaccess does not keep a reference to it.

    The gc compiler does more than this: it also avoids the copy if
    the map key is a composite literal that contains the conversion
    as a field, like, T{ ... { ..., string(b), ... }, ... }. For now,
    we just optimize the simple case, which is probably most common.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176197

* go.dg/mapstring.go: New test.

From-SVN: r271044

5 years agoloop.texi: Remove reference to FOR_EACH_LOOP_BREAK.
Bill Schmidt [Thu, 9 May 2019 19:54:39 +0000 (19:54 +0000)]
loop.texi: Remove reference to FOR_EACH_LOOP_BREAK.

2019-05-09  Bill Schmidt  <wschmidt@linux.ibm.com>

* doc/loop.texi: Remove reference to FOR_EACH_LOOP_BREAK.

From-SVN: r271042

5 years agosel-sched: allow negative insn priority (PR 88879)
Alexander Monakov [Thu, 9 May 2019 18:13:28 +0000 (21:13 +0300)]
sel-sched: allow negative insn priority (PR 88879)

PR rtl-optimization/88879
* sel-sched.c (sel_target_adjust_priority): Remove assert.

From-SVN: r271039

5 years ago[arm] PR target/90405 New test.
Richard Earnshaw [Thu, 9 May 2019 16:35:56 +0000 (16:35 +0000)]
[arm] PR target/90405 New test.

This time really add the test.

gcc/testsuite:
        PR target/90405
        * gcc.target/arm/pr90405.c: New test.

From-SVN: r271037

5 years ago[arm] PR target/90405 fix regression for thumb1 with -mtpcs-leaf-frame
Richard Earnshaw [Thu, 9 May 2019 16:00:23 +0000 (16:00 +0000)]
[arm] PR target/90405 fix regression for thumb1 with -mtpcs-leaf-frame

-mtpcs-leaf-frame causes an APCS-style backtrace frame to be created
on the stack.  This should probably be deprecated, but it did reveal
an issue with the patch I committed previously to improve the code
generation when pushing high registers, in that
thumb_find_work_register had a different idea as to which registers
were available as scratch registers.

The new code actually does a better job of finding a viable work
register and doesn't rely so much on assumptions about the ABI, so it
seems better to adapt thumb_find_work_register to the new approach.
This way we can eliminate some rather crufty code.

gcc:
PR target/90405
* config/arm/arm.c (callee_saved_reg_p): Move before
thumb_find_work_register.
(thumb1_prologue_unused_call_clobbered_lo_regs): Move before
thumb_find_work_register.  Only call df_get_live_out once.
(thumb1_epilogue_unused_call_clobbered_lo_regs): Likewise.
(thumb_find_work_register): Use
thumb1_prologue_unused_call_clobbered_lo_regs instead of ad hoc
algorithms to locate a spare call clobbered reg.

gcc/testsuite:
PR target/90405
* gcc.target/arm/pr90405.c: New test.

From-SVN: r271036

5 years agoSupport {MIN,MAX}_EXPR in GIMPLE FE.
Martin Liska [Thu, 9 May 2019 13:03:45 +0000 (15:03 +0200)]
Support {MIN,MAX}_EXPR in GIMPLE FE.

2019-05-09  Martin Liska  <mliska@suse.cz>

* gimple-pretty-print.c (dump_binary_rhs): Dump MIN_EXPR
and MAX_EXPR in GIMPLE FE format.
2019-05-09  Martin Liska  <mliska@suse.cz>

* gimple-parser.c (c_parser_gimple_statement): Support __MIN and
__MAX.
(c_parser_gimple_unary_expression): Parse also binary expression
__MIN and __MAX.
(c_parser_gimple_parentized_binary_expression): New function.
2019-05-09  Martin Liska  <mliska@suse.cz>

* gcc.dg/gimplefe-39.c: New test.

From-SVN: r271035

5 years agoSupport profile (BB counts and edge probabilities) in GIMPLE FE.
Martin Liska [Thu, 9 May 2019 13:03:28 +0000 (15:03 +0200)]
Support profile (BB counts and edge probabilities) in GIMPLE FE.

2019-05-09  Martin Liska  <mliska@suse.cz>

* tree-cfg.c (dump_function_to_file): Dump entry BB count.
* gimple-pretty-print.c (dump_gimple_bb_header):
Dump BB count.
(pp_cfg_jump): Dump edge probability.
* profile-count.c (profile_quality_as_string): Simplify
with a static array.
(parse_profile_quality): New function.
(profile_count::dump): Simplify with a static array.
(profile_count::from_gcov_type): Add new argument.
* profile-count.h (parse_profile_quality): Likewise.
* predict.h (set_hot_bb_threshold): New.
* params.def (PARAM_GIMPLE_FE_COMPUTED_HOT_BB_THRESHOLD):
New param.
* predict.c (get_hot_bb_threshold): Set from the new param.
(set_hot_bb_threshold): New.
2019-05-09  Martin Liska  <mliska@suse.cz>

* gimple-parser.c (struct gimple_parser): Add probability.
for gimple_parser_edge.
(gimple_parser::push_edge): Add new argument probability.
(c_parser_gimple_parse_bb_spec): Parse also probability
if present.
(c_parser_parse_gimple_body): Set edge probability.
(c_parser_gimple_compound_statement): Consume token
before calling c_parser_gimple_goto_stmt.
Parse BB counts.
(c_parser_gimple_statement): Pass new argument.
(c_parser_gimple_goto_stmt): Likewise.
(c_parser_gimple_if_stmt): Likewise.
(c_parser_gimple_or_rtl_pass_list): Parse hot_bb_threshold.
* c-parser.c (c_parser_declaration_or_fndef): Pass
hot_bb_threshold argument.
* c-tree.h (struct c_declspecs): Add hot_bb_threshold
field.
(c_parser_gimple_parse_bb_spec_edge_probability): New.
2019-05-09  Martin Liska  <mliska@suse.cz>

* gcc.dg/gimplefe-37.c: New test.
* gcc.dg/gimplefe-33.c: Likewise.

From-SVN: r271034

5 years ago2019-05-09 Paolo Carlini <paolo.carlini@oracle.com>
Paolo Carlini [Thu, 9 May 2019 10:26:46 +0000 (10:26 +0000)]
2019-05-09  Paolo Carlini  <paolo.carlini@oracle.com>

      * Fix last ChangeLog entry.

From-SVN: r271033

5 years agore PR preprocessor/90382 (ICE in linemap_macro_map_loc_to_exp_point, at libcpp/line...
Paolo Carlini [Thu, 9 May 2019 10:18:23 +0000 (10:18 +0000)]
re PR preprocessor/90382 (ICE in linemap_macro_map_loc_to_exp_point, at libcpp/line-map.c:1061)

/cp
2019-05-09  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/90382
Revert:
2018-04-26  Paolo Carlini  <paolo.carlini@oracle.com>

* decl.c (grokdeclarator): Fix value assigned to typespec_loc, use
min_location.

/testsuite
2019-05-09  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/90382
2018-04-26  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/diagnostic/trailing1.C: New.

From-SVN: r271032

5 years agore PR tree-optimization/90395 (ICE: verify_flow_info failed (error: BB 2 cannot throw...
Richard Biener [Thu, 9 May 2019 10:09:30 +0000 (10:09 +0000)]
re PR tree-optimization/90395 (ICE: verify_flow_info failed (error: BB 2 cannot throw but has an EH edge))

2019-05-09  Richard Biener  <rguenther@suse.de>

PR tree-optimization/90395
* tree-ssa-forwprop.c (pass_forwprop::execute): Do not
rewrite vector stores that throw internally.

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

From-SVN: r271031

5 years agoClean up MPX-related stuff: CIF_CHKP
Thomas Schwinge [Thu, 9 May 2019 09:52:10 +0000 (11:52 +0200)]
Clean up MPX-related stuff: CIF_CHKP

..., which was forgotten in recent r268844.

gcc/
* cif-code.def (CHKP): Remove.

From-SVN: r271029

5 years ago[PR89221] Continue to default to '--disable-frame-pointer' for x86 GNU systems
Thomas Schwinge [Thu, 9 May 2019 09:51:59 +0000 (11:51 +0200)]
[PR89221] Continue to default to '--disable-frame-pointer' for x86 GNU systems

The recent trunk r270914 for PR89221 "--enable-frame-pointer does not work as
intended" fixed a scripting defect in the x86 '--enable-frame-pointer'
handling.

This has the side effect that, for example, for '--target=i686-gnu' this is now
enabled by default: 'USE_IX86_FRAME_POINTER=1' is added to 'tm_defines'.  Given
that it's highly unlikely that anyone would now suddenly want
'--enable-frame-pointer' as the default for any kind of GNU system, I'm
changing the default back for GNU systems, to match that of a 'target_os' of
'linux* | darwin[8912]*'.

gcc/
PR target/89221
* configure.ac (--enable-frame-pointer): Disable by default for
GNU systems.
* configure: Regenerate.

From-SVN: r271028

5 years agostl_deque.h (operator==(const _Deque_iterator<>&, const _Deque_iterator<>&)): Make...
François Dumont [Thu, 9 May 2019 05:28:42 +0000 (05:28 +0000)]
stl_deque.h (operator==(const _Deque_iterator<>&, const _Deque_iterator<>&)): Make hidden friend.

2019-05-09  François Dumont  <fdumont@gcc.gnu.org>

* include/bits/stl_deque.h
(operator==(const _Deque_iterator<>&, const _Deque_iterator<>&)):
Make hidden friend.
(operator!=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
Likewise.
(operator<(const _Deque_iterator<>&, const _Deque_iterator<>&)):
Likewise.
(operator<=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
Likewise.
(operator>(const _Deque_iterator<>&, const _Deque_iterator<>&)):
Likewise.
(operator>=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
Likewise.
(_Deque_iterator<>::operator+(difference_type)): Likewise and allow NRVO
copy elision.
(_Deque_iterator<>::operator-(difference_type)): Likewise.

From-SVN: r271027

5 years agoDaily bump.
GCC Administrator [Thu, 9 May 2019 00:16:28 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r271026

5 years ago[RS6000] PR89271, gcc.target/powerpc/vsx-simode2.c
Alan Modra [Wed, 8 May 2019 23:07:26 +0000 (08:37 +0930)]
[RS6000] PR89271, gcc.target/powerpc/vsx-simode2.c

This patch makes a number of corrections to rs6000_register_move_cost,
adds a new register union class, GEN_OR_VSX_REGS, and adjusts insn
alternative costs to suit.

The patch initially just corrected register move cost when direct
moves are available, but that resulted in regressions.  Inspection of
those regressions showed ALL_REGS being used as the register allocno
class, which isn't ideal.  gcc/doc/tm.texi says: "You should define a
class for the union of two classes whenever some instruction allows
both classes".  Thus, define GEN_OR_VSX_REGS for the register
allocator.  (IRA wants to use the union of two register classes when
the costs of the classes are below memory cost, which happens more
often with the low direct move cost.)

As per https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89271#c11 we ought
to be returning the minimal cost for union classes.  That can be done
by rs6000_register_move_cost testing for vsx first, where the number
of regs for a given mode might be smaller than the same mode in gprs,
and changing the LINK_OR_CTR_REGS case to exclude SPEC_OR_GEN_REGS and
NON_FLOAT_REGS.

I removed the VECTOR_MEM_VSX_P test since that leads to silly results
for scalar mode moves between altivec and float when TARGET_VSX.  eg.
rs6000_register_move_cost:, ret=2, mode=DF, from=FLOAT_REGS, to=FLOAT_REGS
rs6000_register_move_cost:, ret=16, mode=DF, from=FLOAT_REGS, to=ALTIVEC_REGS
rs6000_register_move_cost:, ret=2, mode=DF, from=FLOAT_REGS, to=VSX_REGS

The patch also fixes wrong results for moves within and between any of
the non-gpr, non-vsx special reg classes.  The comment about "moving
between two similar registers is just one instruction" is false.  We
can't move lr to ctr directly, for example.  I believe the intent of
the "reg_classes_intersect_p (to, from)" was to cover moves within
float or altivec, so I moved that test inside the code handling vsx,
and made sure the intersection wasn't anything besides vsx by masking
off everything else.  Masking isn't strictly necessary at the moment,
but would be if we create a GEN_OR_ALTIVEC_REGS class some time in the
future.

TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS is needed for rs6000 in order
to fix the 20% cactus_adm spec regression when using GEN_OR_VSX_REGS
as an allocno class.  It is similar to the aarch64 version but without
any selection by regno mode if the best class is a union class.

PR target/89271
* config/rs6000/rs6000.h (enum reg_class, REG_CLASS_NAMES),
(REG_CLASS_CONTENTS): Add GEN_OR_VSX_REGS class.
* config/rs6000/rs6000.c (rs6000_register_move_cost): Correct
cost for general <-> vsx when direct moves are available.
Cost union classes at minimal cost for any reg in the class.
Correct calculation for moves between vsx, float, and altivec.
Don't return a low cost for moves between special regs.  Don't
use hard coded register numbers.
(TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS): Define.
(rs6000_ira_change_pseudo_allocno_class): New function.
* config/rs6000/rs6000.md (movsi_internal1, mov<mode>_internal),
(movdi_internal32, movdi_internal64): Remove '*' from vsx register
alternatives.
(movsi_internal1): Don't disparage vector alternatives.
(mov<mode>_internal): Likewise, excepting alternative that
will be split.
* config/rs6000/vsx.md (vsx_splat_<mode>_reg): Don't disparage
we <- b alternative.

From-SVN: r271022

5 years agocompiler: avoid copy for string([]byte) conversion used in string comparison
Cherry Zhang [Wed, 8 May 2019 23:06:52 +0000 (23:06 +0000)]
compiler: avoid copy for string([]byte) conversion used in string comparison

    If a string([]byte) conversion is used immediately in a string
    comparison, we don't need to copy the backing store of the byte
    slice, as the string comparison doesn't hold any reference to
    it. Instead, just create a string header from the byte slice and
    pass it for comparison.

    A new type of expression, String_value_expression, is introduced,
    for constructing string headers.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/170894

* go.dg/cmpstring.go: New test.

From-SVN: r271021

5 years agolibgo: add Debugging section to README
Ian Lance Taylor [Wed, 8 May 2019 22:07:40 +0000 (22:07 +0000)]
libgo: add Debugging section to README

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176001

From-SVN: r271019

5 years agore PR fortran/90351 (-fc-prototypes does not dump prototypes for external procedures)
Thomas Koenig [Wed, 8 May 2019 21:55:13 +0000 (21:55 +0000)]
re PR fortran/90351 (-fc-prototypes does not dump prototypes for external procedures)

2019-05-08  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/90351
    PR fortran/90329
    * gfortran.dg/dump-parse-tree.c: Include version.h.
    (gfc_dump_external_c_prototypes): New function.
    (get_c_type_name): Select "char" as a name for a simple char.
    Adjust to handling external functions. Also handle complex.
    (write_decl): Add argument bind_c. Adjust for dumping of external
    procedures.
    (write_proc): Likewise.
    (write_interop_decl): Add bind_c argument to call of write_proc.
    * gfortran.h: Add prototype for gfc_dump_external_c_prototypes.
    * lang.opt: Add -fc-prototypes-external flag.
    * parse.c (gfc_parse_file): Move dumping of BIND(C) prototypes.
    Call gfc_dump_external_c_prototypes if option is set.
    * invoke.texi: Document -fc-prototypes-external.

From-SVN: r271018

5 years agocompiler: generate memmove for non-pointer slice copy
Ian Lance Taylor [Wed, 8 May 2019 20:08:32 +0000 (20:08 +0000)]
compiler: generate memmove for non-pointer slice copy

    The builtin copy function is lowered to runtime functions
    slicecopy, stringslicecopy, or typedslicecopy. The first two are
    basically thin wrappers of memmove. Instead of making a runtime
    call, we can just use __builtin_memmove. This gives the compiler
    backend opportunities for further optimizations.

    Move the lowering of builtin copy function to flatten phase for
    the ease of rewriting.

    Also do this optimization for the copy part of append(s1, s2...).

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/170005

From-SVN: r271017

5 years agoruntime: use builtin memmove directly
Cherry Zhang [Wed, 8 May 2019 17:40:45 +0000 (17:40 +0000)]
runtime: use builtin memmove directly

    We can use the intrinsic memmove directly, without going through
    C.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/170004

* go-gcc.cc (Gcc_backend::Gcc_backend): Define memmove builtin.

From-SVN: r271016

5 years ago[C++ PATCH] Kill DECL_SAVED_FUNCTION_DATA
Nathan Sidwell [Wed, 8 May 2019 17:32:30 +0000 (17:32 +0000)]
[C++ PATCH] Kill DECL_SAVED_FUNCTION_DATA

https://gcc.gnu.org/ml/gcc-patches/2019-05/msg00377.html
Kill DECL_SAVED_FUNCTION_DATA .
* cp-tree.h (language_function): Remove x_auto_return_pattern.
(current_function_auto_return_pattern): Delete.
(lang_decl_fn): Replace saved_language_function with
saved_auto_return type.
(DECL_SAVED_FUNCTION_DATA): Delete.
(DECL_SAVED_AUTO_RETURN_TYPE): New.
(FNDECL_USED_AUTO): Correct documentation.
* decl.c (duplicate_decls): Adjust AUTO return handling.
(start_preparsed_function): Replace
current_function_auto_return_pattern with
DECL_SAVED_AUTO_RETURN_TYPE.  Remove DECL_SAVED_FUNCTION_DATA
zapping.
(finish_function): Likewise.
(save_function_data): Delete.
(fndecl_declared_return_type): Reimplement.
* mangle.c (write_unqualified_name): Use DECL_SAVED_AUTO_RETURN_TYPE.
* method.c (make_thunk, make_alias_for): Likewise.
* parser.c (cp_parser_jump_statement): Likewise.
* pt.c (do_auto_deduction): Likewise.
* typeck.c (check_return_expr): Likewise.

From-SVN: r271015

5 years agocompiler: remove trailing spaces
Ian Lance Taylor [Wed, 8 May 2019 17:08:18 +0000 (17:08 +0000)]
compiler: remove trailing spaces

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/175557

From-SVN: r271014

5 years agore PR c++/59813 (tail-call elimination didn't fire for left-shift of char to cout)
Jakub Jelinek [Wed, 8 May 2019 17:06:46 +0000 (19:06 +0200)]
re PR c++/59813 (tail-call elimination didn't fire for left-shift of char to cout)

PR c++/59813
PR tree-optimization/89060
* tree-ssa-live.h (live_vars_map): New typedef.
(compute_live_vars, live_vars_at_stmt, destroy_live_vars): Declare.
* tree-ssa-live.c: Include gimple-walk.h and cfganal.h.
(struct compute_live_vars_data): New type.
(compute_live_vars_visit, compute_live_vars_1, compute_live_vars,
live_vars_at_stmt, destroy_live_vars): New functions.
* tree-tailcall.c: Include tree-ssa-live.h.
(live_vars, live_vars_vec): New global variables.
(find_tail_calls): Perform variable life analysis before punting.
(tree_optimize_tail_calls_1): Clean up live_vars and live_vars_vec.
* tree-inline.h (struct copy_body_data): Add eh_landing_pad_dest
member.
* tree-inline.c (add_clobbers_to_eh_landing_pad): Remove BB argument.
Perform variable life analysis to select variables that really need
clobbers added.
(copy_edges_for_bb): Don't call add_clobbers_to_eh_landing_pad here,
instead set id->eh_landing_pad_dest and assert it is the same.
(copy_cfg_body): Call it here if id->eh_landing_pad_dest is non-NULL.

* gcc.dg/tree-ssa/pr89060.c: New test.

From-SVN: r271013

5 years ago[arm][PR88167] Fix __builtin_return_address returns invalid address
Mihail Ionescu [Wed, 8 May 2019 14:36:15 +0000 (14:36 +0000)]
[arm][PR88167] Fix __builtin_return_address returns invalid address

This patch fixes a problem with the thumb1 prologue code where the link
register could be unconditionally used as a scratch register even if the
return value was still live at the end of the prologue.

Additionally, the patch improves the code generated when we are not
using many low call-saved registers to make use of any unused call
clobbered registers to help with the saving of high registers that
cannot be pushed directly (quite rare in normal code as the register
allocator correctly prefers low registers).

2019-05-08  Mihail Ionescu  <mihail.ionescu@arm.com>
    Richard Earnshaw  <rearnsha@arm.com>

gcc:

PR target/88167
* config/arm/arm.c (thumb1_prologue_unused_call_clobbered_lo_regs): New
function.
(thumb1_epilogue_unused_call_clobbered_lo_regs): New function.
(thumb1_compute_save_core_reg_mask): Don't force a spare work
register if both the epilogue and prologue can use call-clobbered
regs.
(thumb1_unexpanded_epilogue): Use
thumb1_epilogue_unused_call_clobbered_lo_regs.  Reverse the logic for
picking temporaries for restoring high regs to match that of the
prologue where possible.
(thumb1_expand_prologue): Add any usable call-clobbered low registers to
the list of work registers.  Detect if the return address is still live
at the end of the prologue and avoid using it for a work register if so.
If the return address is not live, add LR to the list of pushable regs
after the first pass.

gcc/testsuite:

PR target/88167
* gcc.target/arm/pr88167-1.c: New test.
* gcc.target/arm/pr88167-2.c: New test.

Co-Authored-By: Richard Earnshaw <rearnsha@arm.com>
From-SVN: r271012

5 years agore PR libstdc++/90277 (Debug Mode test failures)
François Dumont [Wed, 8 May 2019 13:03:32 +0000 (13:03 +0000)]
re PR libstdc++/90277 (Debug Mode test failures)

2019-05-08  François Dumont  <fdumont@gcc.gnu.org>

PR libstdc++/90277
* testsuite/23_containers/unordered_multiset/insert/24061-multiset.cc
(test01): Reserve for number of insertions to avoid rehash during test.
* testsuite/23_containers/unordered_multimap/insert/24061-multimap.cc
(test01): Likewise.
* testsuite/23_containers/unordered_multimap/insert/24061-multimap.cc
(test01): Likewise.
(test02): Likewise.
(test03): Likewise.

From-SVN: r271011

5 years agore PR tree-optimization/90078 (ICE with deep templates caused by overflow)
Bin Cheng [Wed, 8 May 2019 11:37:45 +0000 (11:37 +0000)]
re PR tree-optimization/90078 (ICE with deep templates caused by overflow)

PR tree-optimization/90078
* tree-ssa-loop-ivopts.c (INFTY): Increase value for infinite cost.
(struct comp_cost): Promote type of members to int64_t.
(infinite_cost): Don't set complexity in initialization.
(comp_cost::operator +,-,+=,-+,/=,*=): Assert when cost computation
overflows to infinite_cost.
(adjust_setup_cost): Promote type of parameter and cost computation
to int64_t.
(struct ainc_cost_data, struct iv_ca): Promote type of member to
int64_t.
(get_scaled_computation_cost_at, determine_iv_cost): Promote type of
cost computation to int64_t.
(determine_group_iv_costs, iv_ca_dump, find_optimal_iv_set): Use
int64_t's format specifier in dump.

gcc/testsuite
* g++.dg/tree-ssa/pr90078.C: New test.

From-SVN: r271008

5 years agore PR tree-optimization/90240 (ICE in try_improve_iv_set, at tree-ssa-loop-ivopts...
Bin Cheng [Wed, 8 May 2019 11:24:38 +0000 (11:24 +0000)]
re PR tree-optimization/90240 (ICE in try_improve_iv_set, at tree-ssa-loop-ivopts.c:6694)

PR tree-optimization/90240
* tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at): Scale cost
with respect to scaling factor pre-computed for each basic block.
(try_improve_iv_set): Return bool if best_cost equals to iv_ca cost.
(find_optimal_iv_set_1): Free iv_ca set if it has infinite_cost.
(COST_SCALING_FACTOR_BOUND, determine_scaling_factor): New.
(tree_ssa_iv_optimize_loop): Call determine_scaling_factor.  Extend
live range for array of loop's basic blocks.  Cleanup aux field of
loop's basic blocks.

gcc/testsuite
* gfortran.dg/graphite/pr90240.f: New test.

From-SVN: r271007

5 years agoEnable support for bfloat16 which will be in Future Cooper Lake.
Hongtao Liu [Wed, 8 May 2019 10:21:40 +0000 (10:21 +0000)]
Enable support for bfloat16 which will be in Future Cooper Lake.

There are 3 instructions for AVX512BF16: VCVTNE2PS2BF16, VCVTNEPS2BF16 and
DPBF16PS instructions, which are Vector Neural Network Instructions
supporting:

- VCVTNE2PS2BF16: Convert Two Packed Single Data to One Packed BF16 Data.
- VCVTNEPS2BF16: Convert Packed Single Data to Packed BF16 Data.
- VDPBF16PS: Dot Product of BF16 Pairs Accumulated into Packed Single Precision.

2019-05-07  Wei Xiao  <wei3.xiao@intel.com>

* common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512BF16_SET
OPTION_MASK_ISA_AVX512BF16_UNSET, OPTION_MASK_ISA2_AVX512BW_UNSET): New.
(OPTION_MASK_ISA2_AVX512F_UNSET): Add OPTION_MASK_ISA_AVX512BF16_UNSET.
(ix86_handle_option): Handle -mavx512bf16.
* config.gcc: Add avx512bf16vlintrin.h and avx512bf16intrin.h
to extra_headers.
* config/i386/avx512bf16vlintrin.h: New.
* config/i386/avx512bf16intrin.h: New.
* config/i386/cpuid.h (bit_AVX512BF16): New.
* config/i386/driver-i386.c (host_detect_local_cpu): Detect BF16.
* config/i386/i386-builtin-types.def: Add new types.
* config/i386/i386-builtin.def: Add new builtins.
* config/i386/i386-c.c (ix86_target_macros_internal): Define
__AVX512BF16__.
* config/i386/i386-option.c (ix86_target_string): Add -mavx512bf16.
(ix86_option_override_internal): Handle BF16.
(ix86_valid_target_attribute_inner_p): Ditto.
* config/i386/i386-expand.c (ix86_expand_args_builtin): Ditto.
* config/i386/i386-builtin.c (enum processor_features): Add
F_AVX512BF16.
(static const _isa_names_table isa_names_table): Ditto.
* config/i386/i386.h (TARGET_AVX512BF16, TARGET_AVX512BF16_P): New.
(PTA_AVX512BF16): Ditto.
* config/i386/i386.opt: Add -mavx512bf16.
* config/i386/immintrin.h: Include avx512bf16intrin.h
and avx512bf16vlintrin.h.
* config/i386/sse.md (avx512f_cvtne2ps2bf16_<mode><mask_name>,
avx512f_cvtneps2bf16_<mode><mask_name>,
avx512f_dpbf16ps_<mode><mask_half_name>): New define_insn patterns.
* config/i386/subst.md (mask_half): Add new subst.
* doc/invoke.texi: Document -mavx512bf16.

2019-05-07  Wei Xiao  <wei3.xiao@intel.com>

* gcc.target/i386/avx512bf16-vcvtne2ps2bf16-1.c: New test.
* gcc.target/i386/avx512bf16-vcvtneps2bf16-1.c: New test.
* gcc.target/i386/avx512bf16-vdpbf16ps-1.c: New test.
* gcc.target/i386/avx512bf16vl-vcvtne2ps2bf16-1.c: New test.
* gcc.target/i386/avx512bf16vl-vcvtneps2bf16-1.c: New test.
* gcc.target/i386/avx512bf16vl-vdpbf16ps-1.c: New test.
* gcc.target/i386/builtin_target.c: Handle avx512bf16.
* gcc.target/i386/sse-12.c: Add -mavx512bf16.
* gcc.target/i386/sse-13.c: Ditto.
* gcc.target/i386/sse-14.c: Ditto.
* gcc.target/i386/sse-22.c: Ditto.
* gcc.target/i386/sse-23.c: Ditto.
* g++.dg/other/i386-2.C: Ditto.
* g++.dg/other/i386-3.C: Ditto.

2019-05-07  Hongtao Liu  <hongtao.liu@intel.com>

* config/i386/cpuinfo.c (get_available_features): Detect BF16.
* config/i386/cpuinfo.h (enum processor_features): Add
FEATURE_AVX512BF16.

From-SVN: r271006

5 years agoAddress compiler diagnostics in libgomp.oacc-c-c++-common/pr87835.c
Thomas Schwinge [Wed, 8 May 2019 10:01:30 +0000 (12:01 +0200)]
Address compiler diagnostics in libgomp.oacc-c-c++-common/pr87835.c

    source-gcc/libgomp/testsuite/libgomp.oacc-c-c++-common/pr87835.c: In function 'main':
    source-gcc/libgomp/testsuite/libgomp.oacc-c-c++-common/pr87835.c:45: warning: ignoring #pragma loop gang [-Wunknown-pragmas]
       45 |     #pragma loop gang
          |
    source-gcc/libgomp/testsuite/libgomp.oacc-c-c++-common/pr87835.c:19:7: warning: unused variable 'b' [-Wunused-variable]
       19 |   int b[n];
          |       ^

libgomp/
PR target/87835
* testsuite/libgomp.oacc-c-c++-common/pr87835.c: Update.

From-SVN: r271004

5 years ago* standard.ads.h: New file.
Arnaud Charlet [Wed, 8 May 2019 09:57:15 +0000 (09:57 +0000)]
* standard.ads.h: New file.

From-SVN: r271003

5 years agore PR other/90381 (New test case gcc.dg/tree-ssa/pr88676-2.c fails with its introduct...
Li Jia He [Wed, 8 May 2019 07:52:26 +0000 (07:52 +0000)]
re PR other/90381 (New test case gcc.dg/tree-ssa/pr88676-2.c fails with its introduction in r270934)

PR other/90381
* gcc.dg/tree-ssa/pr88676-2.c: Add 'target le' option to limit the
test case to run on the little endian machine.

From-SVN: r271002

5 years agore PR tree-optimization/90356 (Missed optimization for variables initialized to 0.0)
Jakub Jelinek [Wed, 8 May 2019 07:21:48 +0000 (09:21 +0200)]
re PR tree-optimization/90356 (Missed optimization for variables initialized to 0.0)

PR tree-optimization/90356
* match.pd ((X +/- 0.0) +/- 0.0): Optimize into X +/- 0.0 if possible.

* gcc.dg/tree-ssa/pr90356-1.c: New test.
* gcc.dg/tree-ssa/pr90356-2.c: New test.
* gcc.dg/tree-ssa/pr90356-3.c: New test.
* gcc.dg/tree-ssa/pr90356-4.c: New test.

From-SVN: r271001

5 years agoreflect: correctly handle direct interface typed receiver in Value.call
Ian Lance Taylor [Wed, 8 May 2019 04:39:19 +0000 (04:39 +0000)]
reflect: correctly handle direct interface typed receiver in Value.call

    A direct interface type's value method takes value receiver now.
    Don't pass pointer to the method function.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/175798

From-SVN: r271000

5 years agocompiler: don't add pointer twice to value method of direct interface type
Ian Lance Taylor [Wed, 8 May 2019 04:29:46 +0000 (04:29 +0000)]
compiler: don't add pointer twice to value method of direct interface type

    For a direct interface type T with a value method M, its pointer
    type (*T)'s method table includes a stub method of M which takes
    a (*T) as the receiver instead of a T. However, for the "typ"
    field of the method table entry, we added another layer of
    indirection, which makes it appear to take a **T, which is wrong.
    This causes problems when using reflect.Type.Method to get the
    method. This CL fixes the second, incorrect, indirection.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/175837

From-SVN: r270999

5 years agoDaily bump.
GCC Administrator [Wed, 8 May 2019 00:16:19 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r270997

5 years agocompiler: add an option to emit optimization diagnostics
Cherry Zhang [Wed, 8 May 2019 00:14:17 +0000 (00:14 +0000)]
compiler: add an option to emit optimization diagnostics

    Add a -fgo-debug-optimization option to emit optimization
    diagnostics. This can be used for testing optimizations. Apply
    this to the range clear optimizations of maps and arrays.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/170002

gcc/go:

* lang.opt (-fgo-debug-optimization): New option.
* go-c.h (struct go_create_gogo_args): Add debug_optimization
field.
* go-lang.c (go_langhook_init): Set debug_optimization field.
* gccgo.texi (Invoking gccgo): Document -fgo-debug-optimization.

gcc/testsuite:

* go.dg/arrayclear.go: New test.
* go.dg/mapclear.go: New test.

From-SVN: r270993

5 years agoUpdate .po files.
Joseph Myers [Wed, 8 May 2019 00:05:06 +0000 (01:05 +0100)]
Update .po files.

* be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, hr.po, id.po,
ja.po, nl.po, ru.po, sr.po, sv.po, tr.po, uk.po, vi.po, zh_CN.po,
zh_TW.po: Update.

From-SVN: r270991

5 years agoImprove API docs for Filesystem TS and Networking TS
Jonathan Wakely [Tue, 7 May 2019 23:22:01 +0000 (00:22 +0100)]
Improve API docs for Filesystem TS and Networking TS

* include/experimental/bits/fs_path.h: Improve docs.
* include/experimental/bits/net.h: Fix wrong header name in comment.
Do not document implementation details.
* include/experimental/netfwd: Fix doxygen grouping.

From-SVN: r270990

5 years agoImprove API docs for std::pair
Jonathan Wakely [Tue, 7 May 2019 22:46:56 +0000 (23:46 +0100)]
Improve API docs for std::pair

* include/bits/stl_pair.h: Improve docs.
* include/std/tuple: Likewise.

From-SVN: r270989

5 years agoImprove API docs for <chrono> and <ratio>
Jonathan Wakely [Tue, 7 May 2019 22:46:53 +0000 (23:46 +0100)]
Improve API docs for <chrono> and <ratio>

* doc/doxygen/doxygroups.cc (std::literals): Add documentation for
inline namespace.
* include/std/chrono: Improve docs.
* include/std/ratio: Do not document implementation details.
* testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Adjust dg-error
line numbers.
* testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.

From-SVN: r270988

5 years agoPR libstdc++/89102 implement new common_type rules (P0435R1, P0548R1)
Jonathan Wakely [Tue, 7 May 2019 22:46:39 +0000 (23:46 +0100)]
PR libstdc++/89102 implement new common_type rules (P0435R1, P0548R1)

This change ensures that std::common_type<> is a complete type (LWG
2408), and that std::common_type<T>, std::common_type<cv T1, cv T2>, and
std::common_type<T1, T2, R...> will use program-defined specializations
for std::common_type<T1, T2> (LWG 2465).

The implementation of common_type<T1, T2, R...> is changed to use
void_t, and the specializations for duration and time_point are modified
to also use void_t instead of depending on implementation details of
common_type.

PR libstdc++/89102
* doc/xml/manual/intro.xml: Document DR 2408 and 2465 changes.
* include/std/chrono (__duration_common_type_wrapper): Replace with ...
(__duration_common_type): New helper.
(common_type<chrono::duration<R1, P2>, chrono::duration<R2, P2>>): Use
__duration_common_type.
(__timepoint_common_type_wrapper): Replace with ...
(__timepoint_common_type): New helper.
(common_type<chrono::time_point<C, D2>, chrono::time_point<C, D2>>):
Use __time_point_common_type.
* include/std/type_traits (common_type<>): Define, as per LWG 2408.
(__common_type_impl): If either argument is transformed by decay,
use the common_type of the decayed types.
(__common_type_impl<_Tp, _Up, _Tp, _Up>): If the types are already
decayed, use __do_common_type_impl to get the common_type.
(common_type<_Tp>): Use common_type<_Tp, _Tp>.
(__do_member_type_wrapper, __member_type_wrapper)
(__expanded_common_type_wrapper): Remove.
(__common_type_pack, __common_type_fold): New helpers.
(common_type<_Tp, _Up, _Vp...>): Use new helpers instead of
__member_type_wrapper and __expanded_common_type_wrapper.
* testsuite/20_util/common_type/requirements/explicit_instantiation.cc:
Test zero-length template argument list.
* testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc:
Test single argument cases and argument types that should decay.
* testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc:
Adjust expected error.
* testsuite/20_util/duration/literals/range_neg.cc: Use zero for
dg-error lineno.
* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.

From-SVN: r270987

5 years agoPR c++/90171 - reorganize usual_deallocation_fn_p
Jason Merrill [Tue, 7 May 2019 22:37:24 +0000 (18:37 -0400)]
PR c++/90171 - reorganize usual_deallocation_fn_p

When fixing 90171 it struck me as undesirable to have so many separate
functions that all needed to know about the definition of a usual
deallocation function.  So this patch condenses them into one.  I left
destroying_delete_p because it is used by other files as well.

* call.c (struct dealloc_info): New.
(usual_deallocation_fn_p): Take a dealloc_info*.
(aligned_deallocation_fn_p, sized_deallocation_fn_p): Remove.
(build_op_delete_call): Adjust.

From-SVN: r270986

5 years agoPR c++/86485 - -Wmaybe-unused with empty class ?:
Jason Merrill [Tue, 7 May 2019 22:37:19 +0000 (18:37 -0400)]
PR c++/86485 - -Wmaybe-unused with empty class ?:

* typeck.c (build_static_cast_1): Use cp_build_addr_expr.

For GCC 9 I fixed this bug with a patch to gimplify_cond_expr, but this
function was also doing the wrong thing.

Using build_address does not push the ADDR_EXPR down into the arms of a
COND_EXPR, which we need for proper handling of conversion of an lvalue ?:
to another reference type.

From-SVN: r270985

5 years agoA non-type template parm with a placeholder type is type-dependent.
Jason Merrill [Tue, 7 May 2019 22:37:14 +0000 (18:37 -0400)]
A non-type template parm with a placeholder type is type-dependent.

* pt.c (type_dependent_expression_p): A non-type template parm with
a placeholder type is type-dependent.

From-SVN: r270984

5 years agors6000: Remove reload leftovers
Segher Boessenkool [Tue, 7 May 2019 22:25:05 +0000 (00:25 +0200)]
rs6000: Remove reload leftovers

There are a few things left in the rs6000 port that are unused now
that we do not support old reload anymore.  This removes those.

* config/rs6000/rs6000-protos.h (rs6000_legitimize_reload_address_ptr):
Delete declaration.
* config/rs6000/rs6000.c (rs6000_legitimize_reload_address): Delete.
(rs6000_debug_legitimize_reload_address): Delete.
(rs6000_legitimize_reload_address_ptr): Delete.
(rs6000_option_override_internal): Adjust.
(mem_operand_gpr): Adjust comment.
(legitimate_lo_sum_address_p): Ditto.
(rs6000_legitimize_reload_address): Delete.
(rs6000_debug_legitimize_reload_address): Delete.
* config/rs6000/rs6000.h (LEGITIMIZE_RELOAD_ADDRESS): Delete.

From-SVN: r270983

5 years agore PR middle-end/89765 (Multiple problems with vec-insert implementation on PowerPC)
Kelvin Nilsen [Tue, 7 May 2019 21:40:46 +0000 (21:40 +0000)]
re PR middle-end/89765 (Multiple problems with vec-insert implementation on PowerPC)

gcc/ChangeLog:

2019-05-07  Kelvin Nilsen  <kelvin@gcc.gnu.org>

PR target/89765
* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
In handling of ALTIVEC_BUILTIN_VEC_INSERT, use modular arithmetic
to compute vector element selector for both constant and variable
operands.

gcc/testsuite/ChangeLog:

2019-05-07  Kelvin Nilsen  <kelvin@gcc.gnu.org>

PR target/89765
* gcc.target/powerpc/pr89765-mc.c: New test.
* gcc.target/powerpc/vsx-builtin-10c.c: New test.
* gcc.target/powerpc/vsx-builtin-10d.c: New test.
* gcc.target/powerpc/vsx-builtin-11c.c: New test.
* gcc.target/powerpc/vsx-builtin-11d.c: New test.
* gcc.target/powerpc/vsx-builtin-12c.c: New test.
* gcc.target/powerpc/vsx-builtin-12d.c: New test.
* gcc.target/powerpc/vsx-builtin-13c.c: New test.
* gcc.target/powerpc/vsx-builtin-13d.c: New test.
* gcc.target/powerpc/vsx-builtin-14c.c: New test.
* gcc.target/powerpc/vsx-builtin-14d.c: New test.
* gcc.target/powerpc/vsx-builtin-15c.c: New test.
* gcc.target/powerpc/vsx-builtin-15d.c: New test.
* gcc.target/powerpc/vsx-builtin-16c.c: New test.
* gcc.target/powerpc/vsx-builtin-16d.c: New test.
* gcc.target/powerpc/vsx-builtin-17c.c: New test.
* gcc.target/powerpc/vsx-builtin-17d.c: New test.
* gcc.target/powerpc/vsx-builtin-18c.c: New test.
* gcc.target/powerpc/vsx-builtin-18d.c: New test.
* gcc.target/powerpc/vsx-builtin-19c.c: New test.
* gcc.target/powerpc/vsx-builtin-19d.c: New test.
* gcc.target/powerpc/vsx-builtin-20c.c: New test.
* gcc.target/powerpc/vsx-builtin-20d.c: New test.
* gcc.target/powerpc/vsx-builtin-9c.c: New test.
* gcc.target/powerpc/vsx-builtin-9d.c: New test.

From-SVN: r270982

5 years agoi386.md (cvt_mnemonic): New mode attribute.
Uros Bizjak [Tue, 7 May 2019 21:36:42 +0000 (23:36 +0200)]
i386.md (cvt_mnemonic): New mode attribute.

* config/i386/i386.md (cvt_mnemonic): New mode attribute.
(ashr<mode>3_cvt): Merge insn pattern from ashrsi3_cvt and
ashrdi3_cvt using SWI48 mode iterator.

From-SVN: r270981

5 years ago[libcpp] Reimplement mkdeps data structures
Nathan Sidwell [Tue, 7 May 2019 18:13:57 +0000 (18:13 +0000)]
[libcpp] Reimplement mkdeps data structures

https://gcc.gnu.org/ml/gcc-patches/2019-05/msg00323.html
* files.c (_cpp_stack_file): Empty filenames aren't dependencies.
* mkdeps.c (deps_add_dep): Assert not empty.

From-SVN: r270978

5 years agoResign as IA-64 maintainer.
Jim Wilson [Tue, 7 May 2019 17:46:51 +0000 (17:46 +0000)]
Resign as IA-64 maintainer.

* MAINTAINERS: Remove myself as IA-64 maintainer.

From-SVN: r270977

5 years agoThis patch adds support to vectorize sum of abslolute differences (SAD_EXPR)
Alejandro Martinez [Tue, 7 May 2019 16:34:20 +0000 (16:34 +0000)]
This patch adds support to vectorize sum of abslolute differences (SAD_EXPR)
using SVE.

Given this input code:

int
sum_abs (uint8_t *restrict x, uint8_t *restrict y, int n)
{
  int sum = 0;

  for (int i = 0; i < n; i++)
    {
      sum += __builtin_abs (x[i] - y[i]);
    }

  return sum;
}

The resulting SVE code is:

0000000000000000 <sum_abs>:
   0: 7100005f  cmp w2, #0x0
   4: 5400026d  b.le 50 <sum_abs+0x50>
   8: d2800003  mov x3, #0x0                    // #0
   c: 93407c42  sxtw x2, w2
  10: 2538c002  mov z2.b, #0
  14: 25221fe0  whilelo p0.b, xzr, x2
  18: 2538c023  mov z3.b, #1
  1c: 2518e3e1  ptrue p1.b
  20: a4034000  ld1b {z0.b}, p0/z, [x0, x3]
  24: a4034021  ld1b {z1.b}, p0/z, [x1, x3]
  28: 0430e3e3  incb x3
  2c: 0520c021  sel z1.b, p0, z1.b, z0.b
  30: 25221c60  whilelo p0.b, x3, x2
  34: 040d0420  uabd z0.b, p1/m, z0.b, z1.b
  38: 44830402  udot z2.s, z0.b, z3.b
  3c: 54ffff21  b.ne 20 <sum_abs+0x20>  // b.any
  40: 2598e3e0  ptrue p0.s
  44: 04812042  uaddv d2, p0, z2.s
  48: 1e260040  fmov w0, s2
  4c: d65f03c0  ret
  50: 1e2703e2  fmov s2, wzr
  54: 1e260040  fmov w0, s2
  58: d65f03c0  ret

Notice how udot is used inside a fully masked loop.

gcc/Changelog:

2019-05-07  Alejandro Martinez  <alejandro.martinezvicente@arm.com>

* config/aarch64/aarch64-sve.md (<su>abd<mode>_3): New define_expand.
(aarch64_<su>abd<mode>_3): Likewise.
(*aarch64_<su>abd<mode>_3): New define_insn.
(<sur>sad<vsi2qi>): New define_expand.
* config/aarch64/iterators.md: Added MAX_OPP attribute.
* tree-vect-loop.c (use_mask_by_cond_expr_p): Add SAD_EXPR.
(build_vect_cond_expr): Likewise.

gcc/testsuite/Changelog:

2019-05-07  Alejandro Martinez  <alejandro.martinezvicente@arm.com>

* gcc.target/aarch64/sve/sad_1.c: New test for sum of absolute
differences.

From-SVN: r270975

5 years agocfgexpand.c (asm_clobber_reg_is_valid): Reject clobbers outside of accessible_reg_set.
Uros Bizjak [Tue, 7 May 2019 15:42:42 +0000 (17:42 +0200)]
cfgexpand.c (asm_clobber_reg_is_valid): Reject clobbers outside of accessible_reg_set.

* cfgexpand.c (asm_clobber_reg_is_valid): Reject
clobbers outside of accessible_reg_set.
* config/i386/i386.c (ix86_conditional_register_usage):
Disable register sets by clearing corresponding bits in
accessible_reg_set.  Do not set corresponding bits in fixed_regs,
call_used_regs and don't clear corresponding reg_names array members.

testsuite/ChangeLog:

* gcc.target/i386/asm-7.c: New test.
* gcc.target/i386/asm-1.c: Update expected error string.
* gcc.target/i386/pr62120.c: Ditto.

From-SVN: r270955

5 years agoFix incorrect DR numbers in libstdc++ manual
Jonathan Wakely [Tue, 7 May 2019 15:30:52 +0000 (16:30 +0100)]
Fix incorrect DR numbers in libstdc++ manual

* doc/xml/manual/intro.xml: Fix DR 2537 and DR 2566 confusion.

From-SVN: r270954

5 years agoMake allocator propagation more consistent for operator+(basic_string) (P1165R1)
Nina Dinka Ranns [Tue, 7 May 2019 15:30:46 +0000 (15:30 +0000)]
Make allocator propagation more consistent for operator+(basic_string) (P1165R1)

2019-05-01  Nina Dinka Ranns  <dinka.ranns@gmail.com>

Make allocator propagation more consistent for
operator+(basic_string) (P1165R1)
* include/bits/basic_string.h
(operator+(basic_string&&, basic_string&&): Changed resulting
allocator to always be the one from the first parameter.
* include/bits/basic_string.tcc
(operator+(const _CharT*, const basic_string&)): Changed
resulting allocator to be SOCCC on the second parameter's allocator.
(operator+(_CharT, const basic_string&)): Likewise.
* testsuite/21_strings/basic_string/allocator/char/operator_plus.cc:
New.
* testsuite/21_strings/basic_string/allocator/wchar_t/operator_plus.cc:
New.

From-SVN: r270953

5 years agoImprove API docs for std::regex
Jonathan Wakely [Tue, 7 May 2019 15:30:40 +0000 (16:30 +0100)]
Improve API docs for std::regex

* include/bits/regex.h: Improve docs.
* include/bits/regex.tcc: Do not document implementation details.

From-SVN: r270952

5 years agoAdd test for std::hash<std::error_code>
Jonathan Wakely [Tue, 7 May 2019 15:30:29 +0000 (16:30 +0100)]
Add test for std::hash<std::error_code>

Copied from 19_diagnostics/error_condition/hash.cc added recently.

* testsuite/19_diagnostics/error_code/hash.cc: New test.

From-SVN: r270951

5 years agoFix make install-gcc-specs with empty GCC_SPECS_FILES
Rainer Orth [Tue, 7 May 2019 15:19:26 +0000 (15:19 +0000)]
Fix make install-gcc-specs with empty GCC_SPECS_FILES

* gcc-interface/Makefile.in (install-gcc-specs): Use foreach.
Honor DESTDIR.

From-SVN: r270947

5 years agotree-vect-stmts.c (vect_is_simple_cond): When vectype is not specified still compute...
Richard Biener [Tue, 7 May 2019 13:07:48 +0000 (13:07 +0000)]
tree-vect-stmts.c (vect_is_simple_cond): When vectype is not specified still compute a comp_vectype for invariant compares.

2019-05-07  Richard Biener  <rguenther@suse.de>

* tree-vect-stmts.c (vect_is_simple_cond): When vectype is
not specified still compute a comp_vectype for invariant
compares.

From-SVN: r270945

5 years agore PR tree-optimization/90316 (large compile time increase in opt / alias stmt walkin...
Richard Biener [Tue, 7 May 2019 13:03:19 +0000 (13:03 +0000)]
re PR tree-optimization/90316 (large compile time increase in opt / alias stmt walking for Go example)

2019-05-07  Richard Biener  <rguenther@suse.de>

PR tree-optimization/90316
* tree-ssa-pre.c (translate_vuse_through_block): When
same_valid is NULL do not bother to search for a virtual
PHI continuation.
(phi_translate_1): When operands changed we cannot keep
the same value-number so do not bother to ask whether
that's possible from translate_vuse_through_block.

From-SVN: r270944

5 years ago[libcpp] Reimplement mkdeps data structures
Nathan Sidwell [Tue, 7 May 2019 12:39:59 +0000 (12:39 +0000)]
[libcpp] Reimplement mkdeps data structures

https://gcc.gnu.org/ml/gcc-patches/2019-05/msg00293.html
* include/mkdeps.h (deps_write): Add PHONY arg.
(deps_phony_targets): Delete.
* init.c (cpp_finish): Just call deps_write.
* mkdeps.c (struct mkdeps): Add local vector class.  Reimplement
vector handling.
(munge): Munge to static buffer.
(apply_vpath): Adjust vector handling.
(deps_init, deps_free): Use new, delete.
(deps_add_target): Do not munge here.  Record quoting low water mark.
(deps_add_dep): Do not munge here.
(deps_add_vpath): Adjust vector handling.
(make_write_name): New.  Munge on demand here.
(make_write_vec): New.
(deps_phony_targets): Delete.
(make_write): New.
(deps_write): Forward to deps_Write.
(deps_save, deps_restore): Adjust vector handling.

From-SVN: r270943

5 years agoFix bitmap registration of overheads.
Martin Liska [Tue, 7 May 2019 12:15:45 +0000 (14:15 +0200)]
Fix bitmap registration of overheads.

2019-05-07  Martin Liska  <mliska@suse.cz>

* bitmap.c (bitmap_register): Come up with
alloc_descriptor_max_uid and assign it for
a new bitmap.
(register_overhead): Use get_descriptor as
a descriptor.
(release_overhead): New.
(bitmap_elem_to_freelist): Call it.
(bitmap_elt_clear_from): Likewise.
(bitmap_obstack_free): Likewise.
(bitmap_move): Sensitively release memory.
* bitmap.h (struct GTY): Add alloc_descriptor and padding.
(bitmap_initialize): Initialize alloc_descriptor to zero.
* tree-ssa-pre.c (do_hoist_insertion): Use bitmap_move.

From-SVN: r270942

5 years agotree-vect-slp.c (vect_build_slp_tree_2): Bump size whenever we build a SLP node.
Richard Biener [Tue, 7 May 2019 11:47:48 +0000 (11:47 +0000)]
tree-vect-slp.c (vect_build_slp_tree_2): Bump size whenever we build a SLP node.

2019-05-07  Richard Biener  <rguenther@suse.de>

* tree-vect-slp.c (vect_build_slp_tree_2): Bump size whenever
we build a SLP node.  Remove max_size and limiting.
(vect_analyze_slp_instance): Record and dump size of the SLP graph.

From-SVN: r270941

5 years agore PR tree-optimization/90316 (large compile time increase in opt / alias stmt walkin...
Richard Biener [Tue, 7 May 2019 11:17:00 +0000 (11:17 +0000)]
re PR tree-optimization/90316 (large compile time increase in opt / alias stmt walking for Go example)

2019-05-07  Richard Biener  <rguenther@suse.de>

PR tree-optimization/90316
* tree-ssa-alias.h (get_continuation_for_phi): Take walking
limit by reference.
(walk_non_aliased_vuses): Take walking limit argument.
* tree-ssa-alias.c (maybe_skip_until): Take limit and abort
walking if it is reached instead of just counting.
(get_continuation_for_phi): Likewise.
(walk_non_aliased_vuses): Likewise, instead of leaving counter
limiting to the callback.
* tree-ssa-sccvn.c (vn_reference_lookup_2): Adjust.
(vn_reference_lookup_3): Likewise.
(vn_reference_lookup_pieces): Likewise.
(vn_reference_lookup): Likewise.
* tree-ssa-pre.c (translate_vuse_through_block): Limit walking.
* tree-ssa-scopedtables.c (vuse_eq): Adjust.
(avail_exprs_stack::lookup_avail_expr): Likewise.

From-SVN: r270940

5 years agoCheck if Solaris ld supports -z relax=transtls
Rainer Orth [Tue, 7 May 2019 10:38:45 +0000 (10:38 +0000)]
Check if Solaris ld supports -z relax=transtls

* m4/druntime/os.m4 (DRUNTIME_OS_LINK_SPEC): Only use -z
relax=transtls if linker supports it.
* configure.ac (enable_libphobos, LIBPHOBOS_SUPPORTED): Move down.
(x86_64-*-solaris2.* | i?86-*-solaris2.*): Only
mark supported with either gld or ld -z relax=transtls.
* configure: Regenerate.

From-SVN: r270939

5 years agotree-ssa-alias.c (aliasing_component_refs_p): Continue looking for comparaible types...
Jan Hubicka [Tue, 7 May 2019 09:36:05 +0000 (09:36 +0000)]
tree-ssa-alias.c (aliasing_component_refs_p): Continue looking for comparaible types in the second direction even if...

* tree-ssa-alias.c (aliasing_component_refs_p): Continue looking
for comparaible types in the second direction even if first one
hits incomparable type.

From-SVN: r270938

5 years agore PR lto/90369 (error: could not unlink output file)
Richard Biener [Tue, 7 May 2019 08:52:33 +0000 (08:52 +0000)]
re PR lto/90369 (error: could not unlink output file)

2019-05-07  Richard Biener  <rguenther@suse.de>

PR lto/90369
* lto-wrapper.c (debug_objcopy): Use the original filename
including archive offset for the filename used for -save-temps.

From-SVN: r270937

5 years agoFix Solaris bootstrap: lto-common.c, lto-dump.c format mismatches
Rainer Orth [Tue, 7 May 2019 07:44:55 +0000 (07:44 +0000)]
Fix Solaris bootstrap: lto-common.c, lto-dump.c format mismatches

* lto-common.c (lto_file_read): Print section->start as int64_t,
section->len as uint64_t.
* lto-dump.c (symbol_entry::dump): Print sz as uint64_t.

From-SVN: r270935

5 years agoFix a typo in two_value_replacement function
Li Jia He [Tue, 7 May 2019 05:39:01 +0000 (05:39 +0000)]
Fix a typo in two_value_replacement function

GCC revision 267634 implemented two_value_replacement function.
However, a typo occurred during the parameter check, which caused
us to miss some optimizations.

The intent of the code might be to check that the input parameters
are const int and their difference is one.  However, when I read
the code, I found that it is wrong to detect whether an input data
plus one is equal to itself.  This could be a typo.

2019-05-07  Li Jia He  <helijia@linux.ibm.com>

* tree-ssa-phiopt.c (two_value_replacement): Fix a typo in parameter
detection.
* gcc.dg/tree-ssa/pr37508.c: Add the no-ssa-phiopt option to skip phi
optimization.
* gcc.dg/tree-ssa/pr88676-2.c: New testcase.

From-SVN: r270934

5 years agoDaily bump.
GCC Administrator [Tue, 7 May 2019 00:17:00 +0000 (00:17 +0000)]
Daily bump.

From-SVN: r270933

5 years agors6000: Renumber the registers
Segher Boessenkool [Mon, 6 May 2019 23:50:42 +0000 (01:50 +0200)]
rs6000: Renumber the registers

This renumbers the registers.

It moves the VRs to 64..95, right after the GPRs and the FPRS.  This
means that the VSRs (which are aliases to the FPRs and the VRs, in
that order) are consecutive now.

It removes MQ, which has been just a stub for ages (it is a leftover
from RIOS, old POWER).

It moves the CR fields to 100..107, which is a bit easier to read
than the 68..75 is was before.

The rest fills the holes.  It should be easy to move anything else
after this series, so the exact order isn't very important anymore,
we aren't stuck with it if we dislike it.

Many things still want the GPRs to be at 0..31, and some things want
the FPRs at 32..63.  I don't think we'll ever want to change that,
so I left it be.

Small things...  It removes DWARF_FRAME_REGISTERS, it used to save
1000 or so words of memory, but it has been just a handful for a
while, and now it is one.  Some whitespace fixes.  Testing showed one
or two places where register allocation was different (not worse, not
better, just different).

* config/rs6000/rs6000.md (FIRST_ALTIVEC_REGNO, LAST_ALTIVEC_REGNO)
(LR_REGNO, CTR_REGNO, CA_REGNO, ARG_POINTER_REGNUM, CR0_REGNO)
(CR1_REGNO, CR2_REGNO, CR3_REGNO, CR4_REGNO, CR5_REGNO, CR6_REGNO)
(CR7_REGNO, MAX_CR_REGNO, VRSAVE_REGNO, VSCR_REGNO)
(FRAME_POINTER_REGNUM): Change numbering.
* config/rs6000/rs6000.c (rs6000_reg_names): Adjust.
(alt_reg_names): Adjust.
(rs6000_conditional_register_usage): Don't mark hard register 64 as
fixed.
* config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Adjust.
(DWARF_FRAME_REGISTERS): Delete.
(DWARF2_FRAME_REG_OUT): Fix whitespace.
(FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS):
Adjust.
(REG_ALLOC_ORDER): Adjust.
(FRAME_POINTER_REGNUM, ARG_POINTER_REGNUM): Adjust.
(REG_CLASS_CONTENTS): Adjust.
(RETURN_ADDR_RTX): Change comment.
(REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P): Use ARG_POINTER_REGNUM
instead of 67.
(REGISTER_NAMES): Adjust.
(ADDITIONAL_REGISTER_NAMES): Adjust.
* config/rs6000/darwin.h (REGISTER_NAMES): Adjust.

From-SVN: r270929

5 years agore PR fortran/90290 (-std=f2008 should reject non-constant stop and error stop codes)
Steven G. Kargl [Mon, 6 May 2019 23:24:32 +0000 (23:24 +0000)]
re PR fortran/90290 (-std=f2008 should reject non-constant stop and error stop codes)

2019-05-06  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/90290
* match.c (gfc_match_stopcode): Check F2008 condition on stop code.

2019-05-06  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/90290
* gfortran.dg/pr90290.f90: New test.

From-SVN: r270928

5 years agors6000: Remove TM regs
Segher Boessenkool [Mon, 6 May 2019 22:04:19 +0000 (00:04 +0200)]
rs6000: Remove TM regs

We do not need to expose the TM registers in debug info.  It isn't
actually useful there, because none of the things that can modify
these registers (other than explicit moves) are marked.

We also do not need the registers for GCC itself internally.  This
patch deletes them.

* config/rs6000/rs6000.md (TFHAR_REGNO, TFIAR_REGNO, TEXASR_REGNO):
Delete.
* config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Adjust.
(DWARF_FRAME_REGISTERS): Adjust.
(FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS):
Adjust.
(REG_ALLOC_ORDER): Adjust.
(enum reg_class): Delete SPR_REGS.
(REG_CLASS_NAMES): Delete SPR_REGS.
(REG_CLASS_CONTENTS): Delete SPR_REGS.  Adjust for deleted TM regs.
(REGISTER_NAMES): Adjust.
(ADDITIONAL_REGISTER_NAMES): Adjust.
* config/rs6000/darwin.h (REGISTER_NAMES): Adjust.
* config/rs6000/htm.md (htm_mfspr_<mode>, htm_mtspr_<mode>): Adjust.
* config/rs6000/predicates.md (htm_spr_reg_operand): Delete.
* config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Adjust.
(htm_spr_regno): Delete.
(htm_expand_builtin): Adjust: the HTM builtins now have one fewer
argument.
(rs6000_dbx_register_number): Adjust.

From-SVN: r270927

5 years agors6000: Delete PRE_GCC3_DWARF_FRAME_REGISTERS
Segher Boessenkool [Mon, 6 May 2019 22:02:24 +0000 (00:02 +0200)]
rs6000: Delete PRE_GCC3_DWARF_FRAME_REGISTERS

We don't need this.

* config/rs6000/rs6000.h (PRE_GCC3_DWARF_FRAME_REGISTERS): Delete.

From-SVN: r270926

5 years agors6000: rs6000_dbx_register_number for fp/ap/mq
Segher Boessenkool [Mon, 6 May 2019 22:01:27 +0000 (00:01 +0200)]
rs6000: rs6000_dbx_register_number for fp/ap/mq

The frame pointer and the argument pointer aren't real registers.  MQ
was a register on old POWER.  All three are still used as arguments to
rs6000_dbx_register_number during initialisation.  If we handle them
explicitly we can do a gcc_unreachable to catch other unexpected
registers.

* config/rs6000/rs6000.c (rs6000_dbx_register_number): Handle
FRAME_POINTER_REGNUM, ARG_POINTER_REGNUM, and 64 (which was MQ).

From-SVN: r270925

5 years agore PR tree-optimization/88709 (Improve store-merging)
Jakub Jelinek [Mon, 6 May 2019 21:50:14 +0000 (23:50 +0200)]
re PR tree-optimization/88709 (Improve store-merging)

PR tree-optimization/88709
PR tree-optimization/90271
* params.def (PARAM_STORE_MERGING_MAX_SIZE): New parameter.
* gimple-ssa-store-merging.c (encode_tree_to_bitpos): Handle
non-clobber CONSTRUCTORs with no elts.  Remove useless tmp_int
variable.
(imm_store_chain_info::coalesce_immediate_stores): Punt if the size
of the store merging group is larger than
PARAM_STORE_MERGING_MAX_SIZE parameter.
(split_group): Add bzero_first argument.  If set, always emit first
the first store which must be = {} of the whole area and then for the
rest of the stores consider all zero bytes as paddings.
(imm_store_chain_info::output_merged_store): Check if first store
is = {} of the whole area and if yes, determine which setting of
bzero_first for split_group gives smaller number of stores.  Adjust
split_group callers.
(lhs_valid_for_store_merging_p): Allow decls.
(rhs_valid_for_store_merging_p): Allow non-clobber CONTRUCTORs with
no elts.
(pass_store_merging::process_store): Likewise.

* gcc.dg/store_merging_26.c: New test.
* gcc.dg/store_merging_27.c: New test.
* gcc.dg/store_merging_28.c: New test.
* gcc.dg/store_merging_29.c: New test.

From-SVN: r270924

5 years agore PR target/89424 (__builtin_vec_ext_v1ti (v, i) results in ICE with variable i...
Kelvin Nilsen [Mon, 6 May 2019 17:00:46 +0000 (17:00 +0000)]
re PR target/89424 (__builtin_vec_ext_v1ti (v, i) results in ICE with variable i (RS6000))

gcc/ChangeLog:

2019-05-06  Kelvin Nilsen  <kelvin@gcc.gnu.org>

PR target/89424
* config/rs6000/rs6000.c (rs6000_expand_vector_extract): Add
handling of V1TImode.

gcc/testsuite/ChangeLog:

2019-05-06  Kelvin Nilsen  <kelvin@gcc.gnu.org>

PR target/89424
* gcc.target/powerpc/pr89424-0.c: New test.
* gcc.target/powerpc/vsx-builtin-13a.c: Define macro PR89424 to
enable testing of newly patched capability.
* gcc.target/powerpc/vsx-builtin-13b.c: Likewise.
* gcc.target/powerpc/vsx-builtin-20a.c: Likewise.
* gcc.target/powerpc/vsx-builtin-20b.c: Likewise.

From-SVN: r270918