gcc.git
5 years ago[testsuite,libstdc++-v3] Fix 27_io/filesystem/iterators/caching.cc
Christophe Lyon [Mon, 8 Apr 2019 07:17:30 +0000 (07:17 +0000)]
[testsuite,libstdc++-v3] Fix 27_io/filesystem/iterators/caching.cc

2019-04-08  Christophe Lyon  <christophe.lyon@linaro.org>

* testsuite/27_io/filesystem/iterators/caching.cc: Add
dg-require-filesystem-ts.

From-SVN: r270199

5 years agore PR target/89623 (Can't build mips-wrs-vxworks cross-compiler)
Chenghua Xu [Mon, 8 Apr 2019 06:37:00 +0000 (06:37 +0000)]
re PR target/89623 (Can't build mips-wrs-vxworks cross-compiler)

2019-04-08  Chenghua Xu  <paul.hua.gm@gmail.com>

gcc/
PR target/89623
* config/mips/mips.opt (LOONGSON_EXT2): Use Var instead of
Mask.

From-SVN: r270198

5 years agoDaily bump.
GCC Administrator [Mon, 8 Apr 2019 00:16:15 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r270195

5 years agore PR fortran/89904 (ICE in gfortran starting with r270045)
Harald Anlauf [Sun, 7 Apr 2019 19:42:05 +0000 (19:42 +0000)]
re PR fortran/89904 (ICE in gfortran starting with r270045)

2019-04-07  Harald Anlauf  <anlauf@gmx.de>

PR fortran/89904
* ChangeLog: Correct ChangeLog entry.

From-SVN: r270192

5 years agoChangeLog: Fix whitespace.
Uros Bizjak [Sun, 7 Apr 2019 19:30:22 +0000 (21:30 +0200)]
ChangeLog: Fix whitespace.

* ChangeLog: Fix whitespace.
* testsuite/ChangeLog: Ditto.

From-SVN: r270191

5 years agore PR target/89945 (ICE in gen_lowpart_general, at rtlhooks.c:63)
Uros Bizjak [Sun, 7 Apr 2019 19:19:08 +0000 (21:19 +0200)]
re PR target/89945 (ICE in gen_lowpart_general, at rtlhooks.c:63)

PR target/89945
* config/i386/i386.md (anddi_1 to andsi_1_zext splitter):
Avoid calling gen_lowpart with SYMBOL_REF and LABEL_REF operand.

testsuite/ChangeLog:

PR target/89945
* gcc.target/i386/pr89945.c: New test.

From-SVN: r270190

5 years agoRegenerate libiberty/functions.texi
Alan Modra [Sun, 7 Apr 2019 11:30:35 +0000 (21:00 +0930)]
Regenerate libiberty/functions.texi

This patch just picks up changes made in r231983 (git 2afaef0360)
and r268793 (git 0f7c25df5f).

* functions.texi: Regenerate.

From-SVN: r270189

5 years agoc-ada-spec.c (is_float128): New predicate extracted from...
Eric Botcazou [Sun, 7 Apr 2019 10:34:19 +0000 (10:34 +0000)]
c-ada-spec.c (is_float128): New predicate extracted from...

c-family/
* c-ada-spec.c (is_float128): New predicate extracted from...
(dump_ada_node) <COMPLEX_TYPE>: Use it to recognize __cfloat128.
<REAL_TYPE>: ...here.  Call it.
ada/
* libgnat/i-cexten.ads (CFloat_128): New type.

From-SVN: r270188

5 years agoDaily bump.
GCC Administrator [Sun, 7 Apr 2019 00:16:16 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r270187

5 years agore PR fortran/87352 (Large stack usage with new gfortran)
Thomas Koenig [Sat, 6 Apr 2019 22:10:28 +0000 (22:10 +0000)]
re PR fortran/87352 (Large stack usage with new gfortran)

2019-04-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/87352
* gfortran.h (gfc_component): Add finalized field.
* class.c (finalize_component): If the component is already
finalized, return early.  Set component->finalized on exit.

2019-04-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/87352
* gfortran.dg/finalize_28.f90: Adjust count of __builtin_free.
* gfortran.dg/finalize_33.f90: Likewise.
* gfortran.dg/finalize_34.f90: New test.

From-SVN: r270184

5 years agore PR fortran/89981 (gfortran -pedantic rejects code in 8.3.1 that is accepted with...
Thomas Koenig [Sat, 6 Apr 2019 14:16:01 +0000 (14:16 +0000)]
re PR fortran/89981 (gfortran -pedantic rejects code in 8.3.1 that is accepted with 8.3.0)

2019-04-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/89981
* resolve.c (resolve_global_procedure): If the global symbol is an
ENTRY, also look up its name among the entries.

2019-04-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/89981
* gfortran.dg/entry_22.f90: New test.

From-SVN: r270182

5 years agoDaily bump.
GCC Administrator [Sat, 6 Apr 2019 00:16:17 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r270181

5 years agoPR c++/87145 - bogus error converting class type in template arg list.
Marek Polacek [Fri, 5 Apr 2019 21:22:40 +0000 (21:22 +0000)]
PR c++/87145 - bogus error converting class type in template arg list.

* pt.c (convert_nontype_argument): Don't call
build_converted_constant_expr if it could involve calling a conversion
function with a instantiation-dependent constructor as its argument.

* g++.dg/cpp0x/constexpr-conv3.C: New test.
* g++.dg/cpp0x/constexpr-conv4.C: New test.

From-SVN: r270178

5 years agoPR bootstrap/89980 - pointer initialization with empty string folded to zero
Martin Sebor [Fri, 5 Apr 2019 19:49:38 +0000 (13:49 -0600)]
PR bootstrap/89980 - pointer initialization with empty string folded to zero

gcc/cp/ChangeLog:

PR bootstrap/89980
* decl.c (reshape_init_array_1): Avoid treating empty strings
as zeros in array initializers.
Use trivial_type_p () instead of TYPE_HAS_TRIVIAL_DFLT().

gcc/testsuite/ChangeLog:

PR bootstrap/89980
* g++.dg/init/array52.C: New test.

From-SVN: r270177

5 years agoImplement std::visit<R> for C++2a (P0655R1)
Jonathan Wakely [Fri, 5 Apr 2019 18:06:02 +0000 (19:06 +0100)]
Implement std::visit<R> for C++2a (P0655R1)

* doc/xml/manual/status_cxx2020.xml: Update status.
* include/std/variant (visit<R>): Define for C++2a (P0655R1).
* testsuite/20_util/variant/visit_r.cc: New test.

From-SVN: r270176

5 years agoUse hidden friends for directory iterator comparisons
Jonathan Wakely [Fri, 5 Apr 2019 16:56:31 +0000 (17:56 +0100)]
Use hidden friends for directory iterator comparisons

The equality operators for directory iterators are not explicitly
specified in the standard, they're only required to meet the iterator
requirements. This means we don't need to declare them at namespace
scope and can implement them as hidden friends.

Also add 'noexcept' to directory_iterator's dereference operators.

* include/bits/fs_dir.h (directory_iterator::operator*)
(directory_iterator::operator->): Add noexcept.
(operator==, operator!=): Replace namespace-scope equality operators
for directory iterators with hidden friends.

From-SVN: r270175

5 years agoPR libstdc++/89986 export directory_iterator::increment
Jonathan Wakely [Fri, 5 Apr 2019 16:56:27 +0000 (17:56 +0100)]
PR libstdc++/89986 export directory_iterator::increment

PR libstdc++/89986
* config/abi/pre/gnu.ver: Add missing exports.
* testsuite/27_io/filesystem/iterators/directory_iterator.cc: Test
increment member.

From-SVN: r270174

5 years agoShare all recursive_directory_iterator state [LWG 2708]
Jonathan Wakely [Fri, 5 Apr 2019 16:56:23 +0000 (17:56 +0100)]
Share all recursive_directory_iterator state [LWG 2708]

Implement the proposed resolution of LWG 2708 by moving the _M_options
and _M_pending members out of the recursive_directory_iterator into the
shared _Dir_stack object. Because _Dir_stack is an opaque type, the
member functions that access the _M_options and _M_pending variables
cannot be inline. Move them into the library.

As a drive-by fix, add noexcept to the non-throwing member functions of
recursive_directory_iterator.

* config/abi/pre/gnu.ver: Export new symbols.
* include/bits/fs_dir.h (recursive_directory_iterator::options())
(recursive_directory_iterator::recursion_pending())
(recursive_directory_iterator::disable_recursion_pending()): Remove
inline definitions. Make noexcept.
(recursive_directory_iterator::depth())
(recursive_directory_iterator::operator*())
(recursive_directory_iterator::operator->()): Make noexcept.
(recursive_directory_iterator::_M_options)
(recursive_directory_iterator::_M_pending): Remove data members.
* src/c++17/fs_path.cc (_Dir_stack): Add constructor and data members.
(recursive_directory_iterator::recursive_directory_iterator): Remove
ctor-initializer. Use new constructor for _Dir_stack.
(recursive_directory_iterator::options())
(recursive_directory_iterator::recursion_pending())
(recursive_directory_iterator::disable_recursion_pending()): Add
non-inline definitions.
(recursive_directory_iterator::depth()): Make noexcept.
(recursive_directory_iterator::increment(error_code&))
(recursive_directory_iterator::pop(error_code&)): Adjust to new
location of options and recursion_pending members.
* testsuite/27_io/filesystem/iterators/recursion_pending.cc: New test.
* testsuite/util/testsuite_fs.h (__gnu_test::scoped_file): Add
user-declared move constructor and assignment operator, to make the
type move-only.

From-SVN: r270173

5 years agoFix directory_iterator handling of DT_UNKNOWN
Jonathan Wakely [Fri, 5 Apr 2019 16:56:18 +0000 (17:56 +0100)]
Fix directory_iterator handling of DT_UNKNOWN

We need to handle DT_UNKNOWN earlier, not only during directory
recursion, so that the cached file_type value in the directory_entry
won't be used.

* src/c++17/fs_dir.cc (_Dir::advance(bool, error_code&)): Handle
d_type == DT_UNKNOWN immediately.
(_Dir::should_recurse(bool, error_code&)): Remove file_type::unknown
handling here.
* testsuite/27_io/filesystem/iterators/caching.cc: New test.

From-SVN: r270172

5 years agoMake filesystem::path safe for self assignment
Jonathan Wakely [Fri, 5 Apr 2019 16:56:14 +0000 (17:56 +0100)]
Make filesystem::path safe for self assignment

The standard says "If *this and p are the same object, has no effect."
Previously we ended up clearing the path.

* include/bits/fs_path.h (path::operator=(path&&)): Check for self
assignment.
* src/c++17/fs_path.cc (path::operator=(const path&)): Likewise.
* testsuite/27_io/filesystem/path/assign/copy.cc: Test self
assignment.

From-SVN: r270171

5 years agoPR libstdc++/87431 re-adjust never-valueless optimizations
Jonathan Wakely [Fri, 5 Apr 2019 16:56:09 +0000 (17:56 +0100)]
PR libstdc++/87431 re-adjust never-valueless optimizations

Avoid creating arbitrarily large objects on the stack when emplacing
trivially copyable objects into a variant. Currently we provide the
strong exception-safety guarantee for all trivially copyable types, by
constructing a second variant and then doing a non-throwing move
assignment from the temporary. This patch restricts that behaviour to
trivially copyable types that are no larger than 256 bytes. For larger
types the object will be emplaced directly into the variant, and if its
initialization throws then the variant becomes valueless.

Also implement Antony Polukhin's suggestion to whitelist specific types
that are not trivially copyable but can be efficiently move-assigned.
Emplacing those types will never cause a variant to become valueless.
The whitelisted types are: std::shared_ptr, std::weak_ptr,
std::unique_ptr, std::function, and std::any. Additionally,
std::basic_string, std::vector, and __gnu_debug::vector are whitelisted
if their allocator traits give them a non-throwing move assignment
operator. Specifically, this means std::string is whitelisted, but
std::pmr::string is not.

As part of this patch, additional if-constexpr branches are added for
the cases where the initialization is known to be non-throwing (so the
overhead of the try-catch block can be avoided) and where a scalar is
being produced by a potentially-throwing conversion operator (so that
the overhead of constructing and move-assigning a variant is avoided).
These changes should have no semantic effect, just better codegen.

PR libstdc++/87431 (again)
* include/bits/basic_string.h (__variant::_Never_valueless_alt):
Define partial specialization for basic_string.
* include/bits/shared_ptr.h (_Never_valueless_alt): Likewise for
shared_ptr and weak_ptr.
* include/bits/std_function.h (_Never_valueless_alt): Likewise for
function.
* include/bits/stl_vector.h (_Never_valueless_alt): Likewise for
vector.
* include/bits/unique_ptr.h (_Never_valueless_alt): Likewise for
unique_ptr.
* include/debug/vector (_Never_valueless_alt): Likewise for debug
vector.
* include/std/any (_Never_valueless_alt): Define explicit
specialization for any.
* include/std/variant (_Never_valueless_alt): Define primary template.
(__never_valueless): Use _Never_valueless_alt instead of
is_trivially_copyable.
(variant::emplace<N>(Args&&...)): Add special case for non-throwing
initializations to avoid try-catch overhead. Add special case for
scalars produced by potentially-throwing conversions. Use
_Never_valueless_alt instead of is_trivially_copyable for the
remaining strong exception-safety cases.
(variant::emplace<N>(initializer_list<U>, Args&&...)): Likewise.
* testsuite/20_util/variant/87431.cc: Run both test functions.
* testsuite/20_util/variant/exception_safety.cc: New test.
* testsuite/20_util/variant/run.cc: Use pmr::string instead of string,
so the variant becomes valueless.

From-SVN: r270170

5 years agoGuard notes for -Waddress-of-packed-member on warning emission (PR c/89985)
David Malcolm [Fri, 5 Apr 2019 15:15:37 +0000 (15:15 +0000)]
Guard notes for -Waddress-of-packed-member on warning emission (PR c/89985)

gcc/c-family/ChangeLog:
PR c/89985
* c-warn.c (check_address_or_pointer_of_packed_member): Add
auto_diagnostic_group.  Guard inform calls by result of
warning_at call.

gcc/testsuite/ChangeLog:
PR c/89985
* c-c++-common/pr89985.c: New test.

From-SVN: r270169

5 years ago[testsuite] PR71598: Fix testcases again
Christophe Lyon [Fri, 5 Apr 2019 15:10:12 +0000 (15:10 +0000)]
[testsuite] PR71598: Fix testcases again

2019-04-05  Christophe Lyon  <christophe.lyon@linaro.org>

PR c/71598
* gcc.dg/torture/pr71598-1.c: dg-prune arm linker messages about
size of enums.
* gcc.dg/torture/pr71598-2.c: Likewise.

From-SVN: r270168

5 years agosched-deps.c (sched_macro_fuse_insns): Check return value of targetm.fixed_condition_...
Joern Rennecke [Fri, 5 Apr 2019 15:01:01 +0000 (15:01 +0000)]
sched-deps.c (sched_macro_fuse_insns): Check return value of targetm.fixed_condition_code_regs.

        * sched-deps.c (sched_macro_fuse_insns): Check return value of
        targetm.fixed_condition_code_regs.

From-SVN: r270167

5 years agoPR c++/89973 - -Waddress-of-packed-member ICE with invalid conversion.
Marek Polacek [Fri, 5 Apr 2019 14:56:53 +0000 (14:56 +0000)]
PR c++/89973 - -Waddress-of-packed-member ICE with invalid conversion.

PR c++/89973 - -Waddress-of-packed-member ICE with invalid conversion.
* c-warn.c (check_address_or_pointer_of_packed_member): Check the type
of RHS.

* g++.dg/warn/Waddress-of-packed-member2.C: New test.

From-SVN: r270166

5 years agore PR debug/89892 (gcc generates wrong debug information at -O2)
Richard Biener [Fri, 5 Apr 2019 11:55:45 +0000 (11:55 +0000)]
re PR debug/89892 (gcc generates wrong debug information at -O2)

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

PR debug/89892
PR debug/89905
* tree-cfgcleanup.c (remove_forwarder_block): Always move
debug bind stmts but reset them if they are not valid at the
destination.

* gcc.dg/guality/pr89892.c: New testcase.
* gcc.dg/guality/pr89905.c: Likewise.
* gcc.dg/guality/loop-1.c: Likewise.

From-SVN: r270165

5 years agoFix ChangeLog entries.
Martin Liska [Fri, 5 Apr 2019 09:04:41 +0000 (09:04 +0000)]
Fix ChangeLog entries.

contrib/ChangeLog:

2019-04-03  Martin Liska  <mliska@suse.cz>

PR translation/89936
* check-internal-format-escaping.py: Properly detect wrong
apostrophes.

gcc/ChangeLog:

2019-04-03  Martin Liska  <mliska@suse.cz>

PR translation/89936
* collect-utils.c (collect_execute): Use %< and %>, or %qs in
order to wrap keywords or arguments.
* collect2.c (main): Likewise.
(scan_prog_file): Likewise.
(scan_libraries): Likewise.
* common/config/riscv/riscv-common.c (riscv_subset_list::parsing_subset_version): Likewise.
(riscv_subset_list::parse_std_ext): Likewise.
* config/aarch64/aarch64.c (aarch64_override_options_internal): Likewise.
* config/arm/arm.c (arm_option_override): Likewise.
* config/cris/cris.c (cris_print_operand): Likewise.
* config/darwin-c.c (darwin_pragma_options): Likewise.
(darwin_pragma_unused): Likewise.
(darwin_pragma_ms_struct): Likewise.
* config/ft32/ft32.c (ft32_print_operand): Likewise.
* config/i386/i386.c (print_reg): Likewise.
(ix86_print_operand): Likewise.
* config/i386/xm-djgpp.h: Likewise.
* config/iq2000/iq2000.c (iq2000_print_operand): Likewise.
* config/m32c/m32c.c (m32c_option_override): Likewise.
* config/msp430/msp430.c (msp430_option_override): Likewise.
* config/nds32/nds32.c (nds32_option_override): Likewise.
* config/nvptx/mkoffload.c (main): Likewise.
* config/rx/rx.c (rx_print_operand): Likewise.
(valid_psw_flag): Likewise.
* config/vms/vms-c.c (vms_pragma_member_alignment): Likewise.
(vms_pragma_nomember_alignment): Likewise.
(vms_pragma_extern_model): Likewise.
* lto-wrapper.c (compile_offload_image): Likewise.
* omp-offload.c (oacc_parse_default_dims): Likewise.
* symtab.c (symtab_node::verify_base): Likewise.
* tlink.c (recompile_files): Likewise.
(start_tweaking): Likewise.
* tree-profile.c (parse_profile_filter): Likewise.

gcc/objc/ChangeLog:

2019-04-03  Martin Liska  <mliska@suse.cz>

PR translation/89936
* objc-act.c (objc_add_property_declaration): Use %< and %>, or %qs in
order to wrap keywords or arguments.
(objc_add_synthesize_declaration_for_property): Likewise.

From-SVN: r270164

5 years agoRemove usage of apostrophes in error and warning messages (PR translation/89935).
Martin Liska [Fri, 5 Apr 2019 08:37:44 +0000 (10:37 +0200)]
Remove usage of apostrophes in error and warning messages (PR translation/89935).

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

PR translation/89935
* check-internal-format-escaping.py: Properly detect wrong
apostrophes.
2019-04-05  Martin Liska  <mliska@suse.cz>

PR translation/89935
* collect-utils.c (collect_execute): Use %< and %>, or %qs in
order to wrap keywords or arguments.
* collect2.c (main): Likewise.
(scan_prog_file): Likewise.
(scan_libraries): Likewise.
* common/config/riscv/riscv-common.c (riscv_subset_list::parsing_subset_version): Likewise.
(riscv_subset_list::parse_std_ext): Likewise.
* config/aarch64/aarch64.c (aarch64_override_options_internal): Likewise.
* config/arm/arm.c (arm_option_override): Likewise.
* config/cris/cris.c (cris_print_operand): Likewise.
* config/darwin-c.c (darwin_pragma_options): Likewise.
(darwin_pragma_unused): Likewise.
(darwin_pragma_ms_struct): Likewise.
* config/ft32/ft32.c (ft32_print_operand): Likewise.
* config/i386/i386.c (print_reg): Likewise.
(ix86_print_operand): Likewise.
* config/i386/xm-djgpp.h: Likewise.
* config/iq2000/iq2000.c (iq2000_print_operand): Likewise.
* config/m32c/m32c.c (m32c_option_override): Likewise.
* config/msp430/msp430.c (msp430_option_override): Likewise.
* config/nds32/nds32.c (nds32_option_override): Likewise.
* config/nvptx/mkoffload.c (main): Likewise.
* config/rx/rx.c (rx_print_operand): Likewise.
(valid_psw_flag): Likewise.
* config/vms/vms-c.c (vms_pragma_member_alignment): Likewise.
(vms_pragma_nomember_alignment): Likewise.
(vms_pragma_extern_model): Likewise.
* lto-wrapper.c (compile_offload_image): Likewise.
* omp-offload.c (oacc_parse_default_dims): Likewise.
* symtab.c (symtab_node::verify_base): Likewise.
* tlink.c (recompile_files): Likewise.
(start_tweaking): Likewise.
* tree-profile.c (parse_profile_filter): Likewise.
2019-04-05  Martin Liska  <mliska@suse.cz>

PR translation/89935
* objc-act.c (objc_add_property_declaration): Use %< and %>, or %qs in
order to wrap keywords or arguments.
(objc_add_synthesize_declaration_for_property): Likewise.

From-SVN: r270163

5 years agoMake FMA code cope with redundant negates (PR89956)
Richard Sandiford [Fri, 5 Apr 2019 07:31:12 +0000 (07:31 +0000)]
Make FMA code cope with redundant negates (PR89956)

This patch fixes a case in which, due to forced missed optimisations
in earlier passes, we have:

    _1 = a * b
    _2 = -_1
    _3 = -_1
    _4 = _2 + _3

and treated _4 as two FNMA candidates, once via _2 and once via _3.

2019-04-05  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
PR tree-optimization/89956
* tree-ssa-math-opts.c (convert_mult_to_fma): Protect against
multiple negates of the same value.

gcc/testsuite/
PR tree-optimization/89956
* gfortran.dg/pr89956.f90: New test.

From-SVN: r270162

5 years agoPR c++/89948 - ICE with break in statement-expr.
Jason Merrill [Fri, 5 Apr 2019 02:52:23 +0000 (22:52 -0400)]
PR c++/89948 - ICE with break in statement-expr.

* constexpr.c (cxx_eval_statement_list): Jumping out of a
statement-expr is non-constant.

From-SVN: r270161

5 years agoPR c++/89966 - error with non-type auto tparm.
Jason Merrill [Fri, 5 Apr 2019 02:50:52 +0000 (22:50 -0400)]
PR c++/89966 - error with non-type auto tparm.

My patch for PR 86932 broke this testcase by passing tf_partial to
coerce_template_template_parms, which prevented do_auto_deduction from
actually replacing the auto.

* pt.c (do_auto_deduction): Clear tf_partial.

From-SVN: r270160

5 years agoPR c++/86986 - ICE with TTP with parameter pack.
Jason Merrill [Fri, 5 Apr 2019 02:50:18 +0000 (22:50 -0400)]
PR c++/86986 - ICE with TTP with parameter pack.

Three separate issues were breaking this testcase.  One, we were trying to
look at the type of a template template parameter to see if it's a valid
non-type template parameter.  Two, we were treating a parameter pack named
in the type of a template parameter pack of a TTP pack as being one of the
packs expanded by the outer pack.  Three, we weren't supplying all the
necessary levels of template arguments when TTP matching.

* pt.c (coerce_template_parameter_pack): Only look at the type of a
non-type parameter pack.
(fixed_parameter_pack_p_1): Don't recurse into the type of a
non-type parameter pack.
(coerce_template_template_parms): Call add_outermost_template_args.

From-SVN: r270159

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

From-SVN: r270158

5 years agoPR c++/89974 - ICE on a definition of a non-type specialization on a struct object...
Martin Sebor [Thu, 4 Apr 2019 23:10:23 +0000 (23:10 +0000)]
PR c++/89974 - ICE on a definition of a non-type specialization on a struct object with pointer to member function

PR c++/89974 - ICE on a definition of a non-type specialization on a struct object with pointer to member function
PR c++/89878 - same specializations on a zero-initialized struct object as a non-type parameter treated as distinct
PR c++/89833 - sorry, unimplemented: string literal in function template signature
PR c++/47488 - sorry, unimplemented: string literal in function template signature

gcc/cp/ChangeLog:

PR c++/89974
PR c++/89878
PR c++/89833
PR c++/47488
* decl.c (reshape_init_array_1): Strip trailing zero-initializers
from arrays of trivial type and known size.
* mangle.c (write_expression): Convert braced initializer lists
to STRING_CSTs.
(write_expression): Trim trailing zero-initializers from arrays
of trivial type.
(write_template_arg_literal): Mangle strings the same as braced
initializer lists.

gcc/testsuite/ChangeLog:

PR c++/89974
PR c++/89878
PR c++/89833
PR c++/47488
* gcc/testsuite/g++.dg/abi/mangle69.C: New test.
* gcc/testsuite/g++.dg/abi/mangle70.C: New test.
* gcc/testsuite/g++.dg/abi/mangle71.C: New test.
* gcc/testsuite/g++.dg/abi/mangle72.C: New test.
* gcc/testsuite/g++.dg/cpp0x/constexpr-array19.C: New test.
* gcc/testsuite/g++.dg/cpp2a/nontype-class15.C: New test.
* gcc/testsuite/g++.dg/cpp2a/nontype-class16.C: New test.
* gcc/testsuite/g++.dg/init/array51.C: New test.

From-SVN: r270155

5 years agoPR middle-end/89957 - ICE calling strnlen with an int128_t bound in a known range
Martin Sebor [Thu, 4 Apr 2019 22:38:10 +0000 (22:38 +0000)]
PR middle-end/89957 - ICE calling strnlen with an int128_t bound in a known range

PR middle-end/89957 - ICE calling strnlen with an int128_t bound in a known range
PR middle-end/89911 - [9 Regression] ICE in get_attr_nonstring_decl

gcc/ChangeLog:

PR middle-end/89957
PR middle-end/89911
* builtins.c (expand_builtin_strnlen): Make sure wi::ltu_p operands
have the same precision since the function crashes otherwise.
* calls.c (maybe_warn_nonstring_arg): Avoid assuming strnlen() call
has non-zero arguments.

gcc/testsuite/ChangeLog:

PR middle-end/89957
PR middle-end/89911
* gcc.dg/Wstringop-overflow-13.c: New test.

From-SVN: r270154

5 years agoPR middle-end/89934 - ICE on a call with fewer arguments to strncpy declared without...
Martin Sebor [Thu, 4 Apr 2019 21:59:49 +0000 (21:59 +0000)]
PR middle-end/89934 - ICE on a call with fewer arguments to strncpy declared without prototype

gcc/ChangeLog:

PR middle-end/89934
* gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Bail
out if the number of arguments is less than expected.

gcc/testsuite/ChangeLog:

PR middle-end/89934
* gcc.dg/Wrestrict-19.c: New test.
* gcc.dg/Wrestrict-5.c: Add comment.  Remove unused code.

From-SVN: r270152

5 years agore PR target/89399 (ICE: RTL check: expected code 'set', 'clobber' or 'clobber_high...
Jeff Law [Thu, 4 Apr 2019 20:52:16 +0000 (14:52 -0600)]
re PR target/89399 (ICE: RTL check: expected code 'set', 'clobber' or 'clobber_high', have 'parallel' in combine_reaching_defs, at ree.c:783)

PR rtl-optimization/89399
* ree.c (combine_set_extension): Use single_set rather than
digging into PATTERN for items on the candidate list.
(combine_reaching_defs): Likewise.

PR rtl-optimization/89399
* gcc.c-torture/compile/pr89399.c: New test.

From-SVN: r270151

5 years agore PR fortran/89904 (ICE in gfortran starting with r270045)
Harald Anlauf [Thu, 4 Apr 2019 20:38:33 +0000 (20:38 +0000)]
re PR fortran/89904 (ICE in gfortran starting with r270045)

2019-04-04  Harald Anlauf  <anlauf@gmx.de>

PR fortran/89004
* check.c (gfc_check_transfer): Reject procedures as actual
arguments for SOURCE and MOLD of TRANSFER intrinsic.

PR fortran/89004
* gfortran.dg/pr85797.f90: Adjust testcase.

From-SVN: r270150

5 years agore PR c++/65619 (friend declaration with template template parameter not recognized)
Paolo Carlini [Thu, 4 Apr 2019 15:49:30 +0000 (15:49 +0000)]
re PR c++/65619 (friend declaration with template template parameter not recognized)

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

PR c++/65619
* g++.dg/template/friend67.C: New.

From-SVN: r270146

5 years agore PR c++/61327 (Problem with friend template object)
Paolo Carlini [Thu, 4 Apr 2019 15:38:05 +0000 (15:38 +0000)]
re PR c++/61327 (Problem with friend template object)

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

PR c++/61327
* g++.dg/cpp0x/friend4.C: New.
* g++.dg/cpp0x/friend5.C: Likewise.

From-SVN: r270145

5 years agore PR c++/56643 (Failure to match noexcept specifier of friend template function...
Paolo Carlini [Thu, 4 Apr 2019 15:15:59 +0000 (15:15 +0000)]
re PR c++/56643 (Failure to match noexcept specifier of friend template function in template class)

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

PR c++/56643
* g++.dg/cpp0x/noexcept40.C: New.

From-SVN: r270144

5 years agoFix typo in ChangeLog
Christophe Lyon [Thu, 4 Apr 2019 07:48:56 +0000 (09:48 +0200)]
Fix typo in ChangeLog

From-SVN: r270143

5 years agoDF usage in loop-invariant.c (PR46590)
Richard Sandiford [Thu, 4 Apr 2019 07:35:34 +0000 (07:35 +0000)]
DF usage in loop-invariant.c (PR46590)

- df_live is already present at -O2, so we only need to add it and
  mark all blocks dirty for -O

- df_process_deferred_rescans should be enough to force a rescan of
  blocks affected by moving invariants, but calling it in find_defs
  means that we don't do any rescans for the final loop

2019-04-04  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
PR rtl-optimization/46590
* loop-invariant.c (find_defs): Move df_remove_problem and
df_process_deferred_rescans to move_invariants.
Move df_live_add_problem and df_live_set_all_dirty calls
to move_invariants.
(move_invariants): Likewise.
(move_loop_invariants): Likewise, making the df_live calls
conditional on -O.  Remove the problem again if we added it
locally.

From-SVN: r270142

5 years agoDaily bump.
GCC Administrator [Thu, 4 Apr 2019 00:16:12 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r270141

5 years agoPR c++/81866 - ICE with member template and default targ.
Jason Merrill [Wed, 3 Apr 2019 21:51:36 +0000 (17:51 -0400)]
PR c++/81866 - ICE with member template and default targ.

This testcase manages to find a way to look up the partial instantiation of
B for the default argument of C before we've created the partial
instantiation of B as part of the normal instantiation of the members of A.
Which we can deal with, but we were getting confused because the partial
instantiation was stored with a RECORD_TYPE specialization rather than
TEMPLATE_DECL.

* pt.c (tsubst_template_decl): Handle getting a type from
retrieve_specialization.

From-SVN: r270138

5 years ago[multiple changes]
Dominique d'Humieres [Wed, 3 Apr 2019 21:32:13 +0000 (23:32 +0200)]
[multiple changes]

2019-04-03  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/68567
* expr.c (gfc_reduce_init_expr): Add extra check to avoid
dereferencing a null pointer.

2019-04-03  Dominique d'Humieres  <dominiq@gcc.gnu.org>

PR fortran/68567
* gfortran.dg/parameter_array_error_1.f90: New test.

From-SVN: r270137

5 years agoPR c++/86586 - -fcompare-debug=-Wsign-compare.
Jason Merrill [Wed, 3 Apr 2019 20:12:00 +0000 (16:12 -0400)]
PR c++/86586 - -fcompare-debug=-Wsign-compare.

This patch limits constexpr folding for -Wsign-compare to only cases that we
would warn for without considering constant values, avoiding the folding in
the testcase in question.

gcc/c-family/
* c-warn.c (warn_for_sign_compare): Call fold_for_warn.
gcc/cp/
* typeck.c (cp_build_binary_op): Don't fold for -Wsign-compare.

From-SVN: r270136

5 years agoPR c++/89331 - ICE with offsetof in incomplete class.
Jason Merrill [Wed, 3 Apr 2019 20:09:17 +0000 (16:09 -0400)]
PR c++/89331 - ICE with offsetof in incomplete class.

We were aborting when build_base_path returned an error because of the
derived class not being complete yet, which wasn't considered by the assert.
Fixed by checking for complete type first.  The semantics.c change avoids
a duplicate error message.

* semantics.c (finish_offsetof): Handle error_mark_node.
* typeck.c (build_class_member_access_expr): Call
complete_type_or_maybe_complain before converting to base.

From-SVN: r270135

5 years agore PR tree-optimization/89730 (-flive-patching=inline-only-static should grant always...
Qing Zhao [Wed, 3 Apr 2019 19:00:25 +0000 (19:00 +0000)]
re PR tree-optimization/89730 (-flive-patching=inline-only-static should grant always_inline attribute for extern function)

2019-04-03  qing zhao  <qing.zhao@oracle.com>

PR tree-optimization/89730
* ipa-inline.c (can_inline_edge_p): Delete the checking for
-flive-patching=inline-only-static.
(can_inline_edge_by_limits_p): Add the checking for
-flive-patching=inline-only-static and grant always_inline
even when -flive-patching=inline-only-static is specified.

* gcc.dg/live-patching-4.c: New test.

From-SVN: r270134

5 years agogo-torture.exp: Only add lto to TORTURE_OPTIONS if it is supported.
Clément Chigot [Wed, 3 Apr 2019 18:21:38 +0000 (18:21 +0000)]
go-torture.exp: Only add lto to TORTURE_OPTIONS if it is supported.

* lib/go-torture.exp: Only add lto to TORTURE_OPTIONS if it is
supported.

From-SVN: r270133

5 years agoFix typo in comment
Jonathan Wakely [Wed, 3 Apr 2019 17:56:41 +0000 (18:56 +0100)]
Fix typo in comment

* files.c (search_path_exhausted): Fix typo in comment.

From-SVN: r270132

5 years agore PR rtl-optimization/81025 (gcc ICE while building glibc for MIPS soft-float multi...
Jeff Law [Wed, 3 Apr 2019 16:03:37 +0000 (10:03 -0600)]
re PR rtl-optimization/81025 (gcc ICE while building glibc for MIPS soft-float multi-lib variant)

        PR rtl-optimization/81025
        * reorg.c (skip_consecutive_labels): Do not skip past a BARRIER.

From-SVN: r270129

5 years ago[testsuite] PR71598: Fix testcases
Christophe Lyon [Wed, 3 Apr 2019 13:17:04 +0000 (13:17 +0000)]
[testsuite] PR71598: Fix testcases

2019-04-13  Christophe Lyon  <christophe.lyon@linaro.org>

PR c/71598
* gcc.dg/torture/pr71598-1.c: Skip if short_enums target.
* gcc.dg/torture/pr71598-2.c: Skip if not short_enums target.

From-SVN: r270126

5 years agore PR rtl-optimization/84101 (-O3 and -ftree-vectorize trying too hard for function...
Richard Biener [Wed, 3 Apr 2019 12:30:16 +0000 (12:30 +0000)]
re PR rtl-optimization/84101 (-O3 and -ftree-vectorize trying too hard for function returning trivial pair-of-uint64_t-structure)

2019-04-03  Richard Biener  <rguenther@suse.de>

PR tree-optimization/84101
* tree-vect-stmts.c: Include explow.h for hard_function_value,
regs.h for hard_regno_nregs.
(cfun_returns): New helper.
(vect_model_store_cost): When vectorizing a store to a decl
we return and the function ABI returns in a multi-reg location
account for the possible spilling that will happen.

* gcc.target/i386/pr84101.c: New testcase.

From-SVN: r270123

5 years agoS/390: Reject long disp for vector load/store early
Andreas Krebbel [Wed, 3 Apr 2019 11:26:09 +0000 (11:26 +0000)]
S/390: Reject long disp for vector load/store early

The vector memory instructions only support short displacements.
Reject invalid displacements early to prevent plenty of lay
instructions to be generated later which then cannot be merged
properly.

gcc/ChangeLog:

2019-04-03  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/s390.c (s390_legitimate_address_p): Reject long
displacement addresses for vector mode operands.

From-SVN: r270122

5 years agoFix previous ChangeLog entry
Jonathan Wakely [Wed, 3 Apr 2019 10:11:30 +0000 (11:11 +0100)]
Fix previous ChangeLog entry

From-SVN: r270121

5 years ago[ARC] Restore blink first when optimizing for speed.
Claudiu Zissulescu [Wed, 3 Apr 2019 10:08:04 +0000 (12:08 +0200)]
[ARC] Restore blink first when optimizing for speed.

When not optimizing for size, we can restore first blink, hence the return
instruction will be executed faster.

gcc/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.c (GMASK_LEN): Define.
(arc_restore_callee_saves): Restore first blink when
!optimize_size.

From-SVN: r270120

5 years ago[GCC, DOCS, AArch64] Add missing documenation for mbranch-protection
Sudakshina Das [Wed, 3 Apr 2019 10:02:23 +0000 (10:02 +0000)]
[GCC, DOCS, AArch64] Add missing documenation for mbranch-protection

This patch add the missing documentation bits for -mbranch-protection in both
extend.texi and invoke.texi.

*** gcc/ChangeLog ***

2019-04-03  Sudakshina Das  <sudi.das@arm.com>

* doc/extend.texi: Add deprecated comment on sign-return-address
function attribute and add mbranch-protection.
* doc/invoke.texi: Add bti to the options for mbranch-protection.

From-SVN: r270119

5 years ago[ARC]PR 88409: miscompilation due to missing cc clobber in longlong.h macros
Vineet Gupta [Wed, 3 Apr 2019 09:53:03 +0000 (09:53 +0000)]
[ARC]PR 88409: miscompilation due to missing cc clobber in longlong.h macros

simple test such as below was failing.

| void main(int argc, char *argv[])
| {
|    size_t total_time = 115424;                       // expected 115.424
|    double secs = (double)total_time/(double)1000;
|    printf("%s %d %lf\n", "secs", total_time, secs);  // prints 113.504
|    printf("%d\n", (size_t)secs);
| }

The printf eventually called into glibc stdlib/divrem.c:__mpn_divrem()
which uses the __arc__ specific inline asm macros from longlong.h which
were causing miscompilation.

include/
2019-03-28  Vineet Gupta <vgupta@synopsys.com>

        PR 89877

        * longlong.h [__arc__] (add_ssaaaa): Add cc clobber
        (sub_ddmmss): Likewise.

Signed-off-by: Claudiu Zissulescu <claziss@gmail.com>
From-SVN: r270118

5 years agoPR libstdc++/85184 remove debug assertions from std::variant
Jonathan Wakely [Wed, 3 Apr 2019 09:47:51 +0000 (10:47 +0100)]
PR libstdc++/85184 remove debug assertions from std::variant

The __glibcxx_assert macro should be used to check preconditions that
users must meet, not to check postconditions that the implementation
must meet. We have tests to verify std::variant meets its
postconditions, users shouldn't pay for those checks at runtime.

PR libstdc++/85184
* include/std/variant (_Copy_assign_base, _Move_assign_base, variant):
Remove assertions.
(variant::emplace<_Tp>): Remove result of emplace<N> directly.

From-SVN: r270117

5 years agoDefine std::hash specializations for C++17 PMR strings
Jonathan Wakely [Wed, 3 Apr 2019 09:47:47 +0000 (10:47 +0100)]
Define std::hash specializations for C++17 PMR strings

These hash specializations should have been added when the pmr::string
and related typedefs were added.

* include/std/string (__hash_string_base): New class template defining
operator() for hashing strings.
(hash<pmr::string>, hash<pmr::u8string>, hash<pmr::u16string>)
(hash<pmr::u32string>, hash<pmr::wstring>): Define for C++17.
* testsuite/21_strings/basic_string/hash/hash.cc: New test.
* testsuite/21_strings/basic_string/hash/hash_char8_t.cc: New test.

From-SVN: r270116

5 years agore PR fortran/89375 (fortran/expr.c:4723:5: warning: logical ‘or’ of equal expression...
Dominique d'Humieres [Wed, 3 Apr 2019 09:00:27 +0000 (11:00 +0200)]
re PR fortran/89375 (fortran/expr.c:4723:5: warning: logical â€˜or’ of equal expressions [-Wlogical-op])

2019-04-03  Dominique d'Humieres  <dominiq@gcc.gnu.org>

PR fortran/89375
* expr.c (comp_pointer): Remove redundant condition.

From-SVN: r270115

5 years agore PR lto/89896 (-flto=4 is confused by presence of 'all.c' in a local directory...
Richard Biener [Wed, 3 Apr 2019 08:46:00 +0000 (08:46 +0000)]
re PR lto/89896 (-flto=4 is confused by presence of 'all.c' in a local directory. -flto=1 is not.)

2019-04-03  Richard Biener  <rguenther@suse.de>

PR lto/89896
* lto-wrapper.c (run_gcc): Avoid implicit rules making
the all target phony.

From-SVN: r270112

5 years agoPR c++/89917 - ICE with lambda in variadic mem-init.
Jason Merrill [Wed, 3 Apr 2019 04:48:45 +0000 (00:48 -0400)]
PR c++/89917 - ICE with lambda in variadic mem-init.

A mem-initializer is not a type, and we don't want to turn autos within it
into packs.

* pt.c (make_pack_expansion): Change type_pack_expansion_p to false.

From-SVN: r270111

5 years agoDaily bump.
GCC Administrator [Wed, 3 Apr 2019 00:16:11 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r270110

5 years ago* gcc.target/visium/bit_shift.c: xfail.
Jeff Law [Tue, 2 Apr 2019 19:45:14 +0000 (13:45 -0600)]
* gcc.target/visium/bit_shift.c: xfail.

From-SVN: r270105

5 years agore PR target/89902 (ICE: in extract_insn, at recog.c:2310: unrecognizable insn with...
Uros Bizjak [Tue, 2 Apr 2019 17:05:59 +0000 (19:05 +0200)]
re PR target/89902 (ICE: in extract_insn, at recog.c:2310: unrecognizable insn with -mavx512bitalg)

PR target/89902
PR target/89903
* config/i386/i386.c (dimode_scalar_to_vector_candidate_p):
Return false for variable DImode shifts.
(dimode_scalar_chain::compute_convert_gain): Do not handle
register count operand in variable DImode shifts.
(dimode_scalar_chain::make_vector_copies): Remove support to copy
count argument of a variable shift instruction to a vector register.
(dimode_scalar_chain::convert_reg): Remove support to convert
count argument of a variable shift instruction.

testsuite/ChangeLog:

PR target/89902
PR target/89903
* gcc.target/i386/pr70799-4.c: Remove.
* gcc.target/i386/pr70799-5.c: Remove.
* gcc.target/i386/pr89902.c: New test.
* gcc.target/i386/pr89903.c: Ditto.

From-SVN: r270102

5 years agosel-sched: skip outer loop in get_all_loop_exits (PR 84206)
Andrey Belevantsev [Tue, 2 Apr 2019 15:45:57 +0000 (18:45 +0300)]
sel-sched: skip outer loop in get_all_loop_exits (PR 84206)

2019-04-02  Andrey Belevantsev  <abel@ispras.ru>

PR rtl-optimization/84206
* sel-sched-ir.h (get_all_loop_exits): Avoid the outer loop when
iterating over loop headers.

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

From-SVN: r270096

5 years agosel-sched: fixup reset of first_insn (PR 85876)
Andrey Belevantsev [Tue, 2 Apr 2019 15:39:22 +0000 (18:39 +0300)]
sel-sched: fixup reset of first_insn (PR 85876)

2019-04-02  Andrey Belevantsev  <abel@ispras.ru>

PR rtl-optimization/85876
* sel-sched.c (code_motion_path_driver): Avoid unwinding first_insn
beyond the original fence.

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

From-SVN: r270095

5 years agoObsolete Cell Broadband Engine SPU target support
Ulrich Weigand [Tue, 2 Apr 2019 14:08:06 +0000 (14:08 +0000)]
Obsolete Cell Broadband Engine SPU target support

gcc/ChangeLog:
2019-04-02  Ulrich Weigand  <uweigand@de.ibm.com>

        * config.gcc: Mark spu* targets as deprecated/obsolete.

From-SVN: r270092

5 years agoS/390: arch13: vector float-int conversion builtins
Andreas Krebbel [Tue, 2 Apr 2019 11:10:13 +0000 (11:10 +0000)]
S/390: arch13: vector float-int conversion builtins

gcc/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/s390-builtin-types.def: New builtin function type
definitions. Remove unused types.
* config/s390/s390-builtins.def (s390_vcdgb, s390_vcdlgb)
(s390_vcgdb, s390_vclgdb): Remove low-level builtin definitions.
(s390_vec_float, s390_vec_signed, s390_vec_unsigned): New
overloaded builtins.
(s390_vcefb, s390_vcdgb, s390_vcelfb, s390_vcdlgb, s390_vcfeb)
(s390_vcgdb, s390_vclfeb, s390_vclgdb): New low-level builtins.
* config/s390/vecintrin.h (vec_float): New builtin macro definition.
(vec_double, vec_signed, vec_unsigned): Define to use the new
overloaded builtins.
* config/s390/vx-builtins.md ("vec_double_s64", "vec_double_u64"):
Remove expanders.

gcc/testsuite/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* gcc.target/s390/zvector/vec-double-compile.c: New test.
* gcc.target/s390/zvector/vec-float-compile.c: New test.
* gcc.target/s390/zvector/vec-signed-compile.c: New test.
* gcc.target/s390/zvector/vec-unsigned-compile.c: New test.

From-SVN: r270091

5 years agoS/390: arch13: vector string search builtins
Andreas Krebbel [Tue, 2 Apr 2019 11:08:54 +0000 (11:08 +0000)]
S/390: arch13: vector string search builtins

gcc/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/s390-builtin-types.def: New builtin function type
definitions.
* config/s390/s390-builtins.def (s390_vec_search_string_cc)
(s390_vec_search_string_until_zero_cc): New overloaded builtins.
(s390_vstrsb, s390_vstrsh, s390_vstrsf, s390_vstrszb)
(s390_vstrszh, s390_vstrszf): New low-level builtins.
* config/s390/s390.md (UNSPEC_VEC_VSTRS, UNSPEC_VEC_VSTRSCC): New
constant definitions.
* config/s390/vecintrin.h (vec_search_string_cc)
(vec_search_string_until_zero_cc): New builtin name definitions.
* config/s390/vx-builtins.md ("vstrs<mode>", "vstrsz<mode>"): New
expanders.
("vec_vstrs<mode>"): New insn definition.

gcc/testsuite/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* gcc.target/s390/zvector/vec-search-string-cc-1.c: New test.
* gcc.target/s390/zvector/vec-search-string-cc-compile.c: New test.
* gcc.target/s390/zvector/vec-search-string-until-zero-cc-1.c: New test.
* gcc.target/s390/zvector/vec-search-string-until-zero-cc-compile.c: New test.

From-SVN: r270090

5 years agoS/390: arch13: vector shift double by bit builtins
Andreas Krebbel [Tue, 2 Apr 2019 11:07:44 +0000 (11:07 +0000)]
S/390: arch13: vector shift double by bit builtins

gcc/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/s390-builtin-types.def: Add new builtin function
types.
* config/s390/s390-builtins.def (s390_vec_sldb, s390_vec_srdb):
New overloaded builtins.
(s390_vec_sldb, s390_vec_srdb): New low-level builtins.  and
s390_vsrd.
* config/s390/s390.md (UNSPEC_VEC_SLDB): Rename to ...
(UNSPEC_VEC_SLDBYTE): ... this.
(UNSPEC_VEC_SLDBIT, UNSPEC_VEC_SRDBIT): New constant definitions.
* config/s390/vecintrin.h (vec_sldb, vec_srdb): New builtin name
definitions.
* config/s390/vx-builtins.md ("vec_sld<mode>", "vec_sldw<mode>"):
Rename UNSPEC_VEC_SLDB to UNSPEC_VEC_SLDBYTE.
("vec_sldb<mode>", "vec_srdb<mode>"): New insn definitions.

gcc/testsuite/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* gcc.target/s390/zvector/vec-shift-left-double-by-bit-1.c: New test.
* gcc.target/s390/zvector/vec-shift-right-double-by-bit-1.c: New test.

From-SVN: r270089

5 years agoS/390: arch13: vector load byte reversed element and replicate
Andreas Krebbel [Tue, 2 Apr 2019 11:06:30 +0000 (11:06 +0000)]
S/390: arch13: vector load byte reversed element and replicate

gcc/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

("*vec_splats_bswap_vec<mode>", "*vec_splats_bswap_elem<mode>"):
New insn definition.
* config/s390/vx-builtins.md (V_HW_HSD): Move to ...
* config/s390/vector.md (V_HW_HSD): ... here.

gcc/testsuite/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* gcc.target/s390/zvector/replicate-bswap-1.c: New test.
* gcc.target/s390/zvector/replicate-bswap-2.c: New test.

From-SVN: r270088

5 years agotestsuite: do not try to add -m32 (PR 89916)
Alexander Monakov [Tue, 2 Apr 2019 11:04:22 +0000 (14:04 +0300)]
testsuite: do not try to add -m32 (PR 89916)

PR testsuite/89916
* gcc.dg/pr86928.c: Do not attempt to add -m32.

From-SVN: r270087

5 years agoS/390: arch13: vector load/store byte reversed element for builtins
Andreas Krebbel [Tue, 2 Apr 2019 11:03:40 +0000 (11:03 +0000)]
S/390: arch13: vector load/store byte reversed element for builtins

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/vecintrin.h: Map vec_vster low-level builtins to vec_vler.
* config/s390/vx-builtins.md ("*vec_insert_and_zero_bswap<mode>")
("*vec_set_bswap_elem<mode>", "*vec_set_bswap_vec<mode>")
("*vec_extract_bswap_vec<mode>", "*vec_extract_bswap_elem<mode>"):
New insn definitions.

gcc/testsuite/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* gcc.target/s390/zvector/bswap-and-replicate-1.c: New test.
* gcc.target/s390/zvector/get-element-bswap-1.c: New test.
* gcc.target/s390/zvector/get-element-bswap-2.c: New test.
* gcc.target/s390/zvector/get-element-bswap-3.c: New test.
* gcc.target/s390/zvector/get-element-bswap-4.c: New test.
* gcc.target/s390/zvector/set-element-bswap-1.c: New test.
* gcc.target/s390/zvector/set-element-bswap-2.c: New test.
* gcc.target/s390/zvector/set-element-bswap-3.c: New test.

From-SVN: r270086

5 years agoS/390: arch13: vec_reve element order reversal builtins
Andreas Krebbel [Tue, 2 Apr 2019 11:02:22 +0000 (11:02 +0000)]
S/390: arch13: vec_reve element order reversal builtins

gcc/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/s390-builtin-types.def: Add new builtin function type.
* config/s390/s390-builtins.def: Add overloaded builtin
s390_vec_reve and low-level builtins for s390_vler and s390_vster.
* config/s390/s390.md (UNSPEC_VEC_ELTSWAP): New constant definition.
* config/s390/vecintrin.h (vec_reve): New builtin name definition.
* config/s390/vx-builtins.md (V_HW_HSD): New mode iterator.
("eltswap<mode>"): New expander.
("*eltswapv16qi", "*eltswap<mode>", "*eltswap<mode>_emu"): New
insn definitions.

gcc/testsuite/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* gcc.target/s390/zvector/vec-reve-load-byte-z14.c: New test.
* gcc.target/s390/zvector/vec-reve-load-byte.c: New test.
* gcc.target/s390/zvector/vec-reve-load-halfword-z14.c: New test.
* gcc.target/s390/zvector/vec-reve-load-halfword.c: New test.
* gcc.target/s390/zvector/vec-reve-store-byte-z14.c: New test.
* gcc.target/s390/zvector/vec-reve-store-byte.c: New test.

From-SVN: r270085

5 years agoS/390: arch13: vec_revb vector byte swap builtin
Andreas Krebbel [Tue, 2 Apr 2019 11:01:06 +0000 (11:01 +0000)]
S/390: arch13: vec_revb vector byte swap builtin

gcc/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/s390-builtin-types.def: Add new builtin function types.
* config/s390/s390-builtins.def: Add overloaded builtin
s390_vec_revb. Add low-level builtins for vlbr and vstbr
instructions.
* config/s390/vecintrin.h (vec_revb): New builtin name definition.
* config/s390/vector.md (VT_HW_HSDT): New mode iterator.
("bswap<mode>"): New expander.
("*bswap<mode>", "*bswap<mode>_emu"): New insn definitions.

gcc/testsuite/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* gcc.target/s390/zvector/vec-revb-load-double-z14.c: New test.
* gcc.target/s390/zvector/vec-revb-load-double.c: New test.
* gcc.target/s390/zvector/vec-revb-store-double-z14.c: New test.
* gcc.target/s390/zvector/vec-revb-store-double.c: New test.

From-SVN: r270084

5 years agoS/390: arch13: New vector builtins - preparation
Andreas Krebbel [Tue, 2 Apr 2019 10:59:30 +0000 (10:59 +0000)]
S/390: arch13: New vector builtins - preparation

gcc/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/s390-builtins.def (B_VXE2): New builtin flag definition.
* config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Increment
vector builtin version number in __VEC__.

From-SVN: r270083

5 years agoS/390: arch13: Support 32 bit fp-int scalar converts
Andreas Krebbel [Tue, 2 Apr 2019 10:58:33 +0000 (10:58 +0000)]
S/390: arch13: Support 32 bit fp-int scalar converts

gcc/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/s390.md (VX_CONV_BFP, VX_CONV_INT): New mode
iterators.
(SFSI): New mode attribute.
("*fixuns_truncdfdi2_vx", "*fix_truncdfdi2_bfp_z13")
("*floatunsdidf2_z13", ): Add support for 32 bit conversions and
rename to ...
("*fixuns_trunc<VX_CONV_BFP:mode><VX_CONV_INT:mode>2_z13")
("*fix_trunc<VX_CONV_BFP:mode><VX_CONV_INT:mode>2_bfp_z13")
("*floatuns<VX_CONV_INT:mode><VX_CONV_BFP:mode>2_z13"): ... these.
("floatsi<mode>2"): Add wcefb instruction.

From-SVN: r270082

5 years agoS/390: arch13: Support 32 bit fp-int vector converts
Andreas Krebbel [Tue, 2 Apr 2019 10:57:39 +0000 (10:57 +0000)]
S/390: arch13: Support 32 bit fp-int vector converts

gcc/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/s390.md ("xde"): Extend mode attribute to vector
types.
* config/s390/vector.md (VX_VEC_CONV_BFP, VX_VEC_CONV_INT): New
mode iterators.
("floatv2div2df2", "floatunsv2div2df2", "fix_truncv2dfv2di2")
("fixuns_truncv2dfv2di2"): Enhance with mode iterator to also
support 32 bit fp-int conversions. Rename to ...
("float<VX_VEC_CONV_INT:mode><VX_VEC_CONV_BFP:mode>2")
("floatuns<VX_VEC_CONV_INT:mode><VX_VEC_CONV_BFP:mode>2")
("fix_trunc<VX_VEC_CONV_BFP:mode><VX_VEC_CONV_INT:mode>2")
("fixuns_trunc<VX_VEC_CONV_BFP:mode><VX_VEC_CONV_INT:mode>2"):
... to these.

gcc/testsuite/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* gcc.target/s390/arch13/fp-signedint-convert-1.c: New test.
* gcc.target/s390/arch13/fp-unsignedint-convert-1.c: New test.

From-SVN: r270081

5 years agoS/390: arch13: Add support for new select instruction
Andreas Krebbel [Tue, 2 Apr 2019 10:56:34 +0000 (10:56 +0000)]
S/390: arch13: Add support for new select instruction

Compared to the load on condition instructions we already have the new
select instruction allows to have a THEN and and ELSE source operand -
but only for register to register loads.

gcc/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/s390.c (s390_rtx_costs): Do not add extra costs for
if-then-else constructs if we can use the select instruction.
* config/s390/s390.md ("*mov<mode>cc"): Add the new instructions.

gcc/testsuite/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* gcc.target/s390/arch13/sel-1.c: New test.

From-SVN: r270080

5 years agoS/390: arch13: Support new popcount instruction
Andreas Krebbel [Tue, 2 Apr 2019 10:55:26 +0000 (10:55 +0000)]
S/390: arch13: Support new popcount instruction
 variant.

The new arch13 popcount instruction counts bits in the entire 64 bit
register instead of just in 8 bit portions.

gcc/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/s390.md ("*popcountdi_arch13_cc")
("*popcountdi_arch13_cconly", "*popcountdi_arch13"): New insn
definition.
("*popcount<mode>", "popcountdi2", "popcountsi2", "popcounthi2"):
Append _z196 to make it ...
("*popcount<mode>_z196", "popcountdi2_z196", "popcountsi2_z196")
("popcounthi2_z196"): ... this.
("popcountdi2_z196"): Remove TARGET_64BIT from the insn condition.
("popcountdi2", "popcountsi2", "popcounthi2"): New expanders.

gcc/testsuite/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* gcc.target/s390/arch13/popcount-1.c: New test.

From-SVN: r270079

5 years agoS/390: arch13: Support new bit operations
Andreas Krebbel [Tue, 2 Apr 2019 10:51:53 +0000 (10:51 +0000)]
S/390: arch13: Support new bit operations

Make use of the new bit operation instructions when generating code
for the arch13 level.

gcc/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/s390.c (s390_canonicalize_comparison): Convert
certain compares for arch13 in order to make use of the condition
code result produced by the new instructions.
(s390_rtx_costs): Adjust the costs for nnrk, nngrk, nork, nogrk,
nxrk, and nxgrk instruction patterns.
* config/s390/s390.md (ANDOR, bitops_name, inv_bitops_name)
(inv_no): Add new code iterator together with some attributes.
("*andc_split_<mode>"): Disable splitter for arch13.
("*<ANDOR:bitops_name>c<GPR:mode>_cc")
("*<ANDOR:bitops_name>c<GPR:mode>_cconly")
("*<ANDOR:bitops_name>c<GPR:mode>")
("*n<ANDOR:inv_bitops_name><GPR:mode>_cc")
("*n<ANDOR:inv_bitops_name><mode>_cconly")
("*n<ANDOR:inv_bitops_name><mode>", "*nxor<GPR:mode>_cc")
("*nxor<mode>_cconly", "*nxor<mode>"): New insn definitions.

gcc/testsuite/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* gcc.target/s390/arch13/bitops-1.c: New test.
* gcc.target/s390/arch13/bitops-2.c: New test.
* gcc.target/s390/md/andc-splitter-1.c: Add -march=z14 build
option and adjust line numbers.
* gcc.target/s390/md/andc-splitter-2.c: Likewise.

From-SVN: r270078

5 years agoS/390: arch13: Add arch13 as architecture option
Andreas Krebbel [Tue, 2 Apr 2019 10:50:03 +0000 (10:50 +0000)]
S/390: arch13: Add arch13 as architecture option

This patch enables the command line options and provides the proper
macros for checking.

gcc/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* common/config/s390/s390-common.c (processor_flags_table): New
entry for arch13.
* config.gcc: Support arch13 with the --with-arch= configure flag.
* config/s390/driver-native.c (s390_host_detect_local_cpu):
* config/s390/s390-opts.h (enum processor_type): Add PROCESSOR_ARCH13.
* config/s390/s390.c (s390_get_sched_attrmask)
(s390_get_unit_mask): Add PROCESSOR_ARCH13.
* config/s390/s390.h (enum processor_flags): Add PF_VXE2 and PF_ARCH13.
* config/s390/s390.md (TARGET_CPU_ARCH13, TARGET_CPU_ARCH13_P)
(TARGET_CPU_VXE2, TARGET_CPU_VXE2_P, TARGET_ARCH13)
(TARGET_ARCH13_P, TARGET_VXE2, TARGET_VXE2_P): New macro
definitions.
* config/s390/s390.opt: Support arch13 as processor type in
command line options.

gcc/testsuite/ChangeLog:

2019-04-02  Andreas Krebbel  <krebbel@linux.ibm.com>

* gcc.target/s390/s390.exp: Run tests in arch13 subdir.
* lib/target-supports.exp (check_effective_target_s390_vxe2): New
runtime check for the vxe2 hardware feature on IBM Z.

From-SVN: r270077

5 years agoFix param description of graphite-max-arrays-per-scop (PR translation/89912).
Martin Liska [Tue, 2 Apr 2019 07:55:30 +0000 (09:55 +0200)]
Fix param description of graphite-max-arrays-per-scop (PR translation/89912).

2019-04-02  Martin Liska  <mliska@suse.cz>

PR translation/89912
* params.def (PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP):
Fix param description of graphite-max-arrays-per-scop.

From-SVN: r270076

5 years agolinux64.h (ASAN_REJECT_SPEC): New macro.
Eric Botcazou [Tue, 2 Apr 2019 07:40:30 +0000 (07:40 +0000)]
linux64.h (ASAN_REJECT_SPEC): New macro.

* config/sparc/linux64.h (ASAN_REJECT_SPEC): New macro.
(ASAN_CC1_SPEC): Use it in 64-bit mode.
* config/sparc/sol2.h (ASAN_REJECT_SPEC): Remove superfluous colon.

From-SVN: r270075

5 years agore PR d/89823 (Composed message only partially translatable)
Iain Buclaw [Tue, 2 Apr 2019 05:23:20 +0000 (05:23 +0000)]
re PR d/89823 (Composed message only partially translatable)

gcc/po/ChangeLog:

2019-04-02  Iain Buclaw  <ibuclaw@gdcproject.org>

PR d/89823
* EXCLUDES: Update list of d/dmd sources.
* gcc.pot: Regenerated.

From-SVN: r270074

5 years agoDaily bump.
GCC Administrator [Tue, 2 Apr 2019 00:16:22 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r270072

5 years ago* fr.po, sv.po: Update.
Joseph Myers [Mon, 1 Apr 2019 21:42:32 +0000 (22:42 +0100)]
* fr.po, sv.po: Update.

From-SVN: r270069

5 years agoPR c++/86946 - ICE with function call in template argument.
Jason Merrill [Mon, 1 Apr 2019 20:43:13 +0000 (16:43 -0400)]
PR c++/86946 - ICE with function call in template argument.

DR 1321 clarified that two dependent names are equivalent if the names are
the same, even if the result of name lookup is different.  We need to
implement that in hashing like we already do in comparison and mangling.

* pt.c (iterative_hash_template_arg) [CALL_EXPR]: Use
dependent_name.

From-SVN: r270068

5 years agoCheck avx2_available in check_avx2_available
H.J. Lu [Mon, 1 Apr 2019 18:34:00 +0000 (18:34 +0000)]
Check avx2_available in check_avx2_available

check_avx2_available should check avx2_available, instead of avx_available.
Otherwise, check_avx2_available may use result from check_avx_available.

PR testsuite/89907
* lib/target-supports.exp (check_avx2_available): Replace
avx_available with avx2_available.

From-SVN: r270066

5 years agosel-sched: correct reset of reset_sched_cycles_p (PR 85412)
Andrey Belevantsev [Mon, 1 Apr 2019 18:05:08 +0000 (21:05 +0300)]
sel-sched: correct reset of reset_sched_cycles_p (PR 85412)

2019-04-01  Andrey Belevantsev  <abel@ispras.ru>

PR rtl-optimization/85412
* sel-sched.c (sel_sched_region): Assign reset_sched_cycles_p before
sel_sched_region_1, not after.

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

From-SVN: r270065

5 years agore PR c++/62207 (ICE: tree check: expected tree that contains 'decl minimal' structur...
Paolo Carlini [Mon, 1 Apr 2019 17:09:47 +0000 (17:09 +0000)]
re PR c++/62207 (ICE: tree check: expected tree that contains 'decl minimal' structure, have 'overload' in tsubst_copy, at cp/pt.c)

/cp
2019-04-01  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/62207
* pt.c (tsubst_copy): Deal with lookup_name not returing a variable.

/testsuite
2019-04-01  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/62207
* g++.dg/template/crash130.C: New.
* g++.dg/template/crash131.C: Likewise.

From-SVN: r270064

5 years agoPR c/89685 - ICE on attribute copy with a compound expression
Martin Sebor [Mon, 1 Apr 2019 17:04:10 +0000 (17:04 +0000)]
PR c/89685 - ICE on attribute copy with a compound expression

gcc/c-family/ChangeLog:

PR c/89685
* c-attribs.c (handle_copy_attribute): Handle references and
non-constant expressions.

gcc/testsuite/ChangeLog:

PR c/89685
* gcc.dg/attr-copy-8.c: New test.
* g++.dg/ext/attr-copy-2.C: New test.

From-SVN: r270062

5 years agosel-sched: update liveness in redirect_edge_and_branch hooks (PR 86928)
Andrey Belevantsev [Mon, 1 Apr 2019 16:32:24 +0000 (19:32 +0300)]
sel-sched: update liveness in redirect_edge_and_branch hooks (PR 86928)

2019-04-01  Andrey Belevantsev  <abel@ispras.ru>

PR rtl-optimization/86928
* sel-sched-ir.c (sel_redirect_edge_and_branch_force): Invoke
compute_live if necessary.
(sel_redirect_edge_and_branch): Likewise.

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

From-SVN: r270061

5 years agore PR rtl-optimization/89865 (FAIL: gcc.target/i386/pr49095.c scan-assembler-times...
Vladimir Makarov [Mon, 1 Apr 2019 16:18:30 +0000 (16:18 +0000)]
re PR rtl-optimization/89865 (FAIL: gcc.target/i386/pr49095.c scan-assembler-times \\\\), % 45)

2019-04-01  Vladimir Makarov  <vmakarov@redhat.com>

PR rtl-optimization/89865
* ira-costs.c (process_bb_node_for_hard_reg_moves): Skip hard
register if it is a part of small class.

From-SVN: r270060

5 years agosel-sched: remove assert in merge_fences (PR 87273)
Andrey Belevantsev [Mon, 1 Apr 2019 15:20:13 +0000 (18:20 +0300)]
sel-sched: remove assert in merge_fences (PR 87273)

2019-04-01  Andrey Belevantsev  <abel@ispras.ru>

PR rtl-optimization/87273
* sel-sched-ir.c (merge_fences): Remove assert.

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

From-SVN: r270059

5 years agore PR d/88462 (All D execution tests FAIL on Solaris/SPARC)
Iain Buclaw [Mon, 1 Apr 2019 14:44:04 +0000 (14:44 +0000)]
re PR d/88462 (All D execution tests FAIL on Solaris/SPARC)

    PR d/88462
libphobos: Fix abort in pthread_mutex_init on Solaris.

Merges upstream druntime d57fa1ff.

Reviewed-on: https://github.com/dlang/druntime/pull/2534

From-SVN: r270057

5 years agoUse single-visitation in variant assignment and swap and relops.
Ville Voutilainen [Mon, 1 Apr 2019 13:57:41 +0000 (16:57 +0300)]
Use single-visitation in variant assignment and swap and relops.

Also use indices instead of types when checking whether
variants hold the same thing.
* include/std/variant (__do_visit): Add a template parameter
for index visitation, invoke with indices if index visitation
is used.
(__variant_idx_cookie): New.
(__visit_with_index): Likewise.
(_Copy_assign_base::operator=): Do single-visitation with
an index visitor.
(_Move_assign_base::operator=): Likewise.
(_Extra_visit_slot_needed): Adjust.
(__visit_invoke): Call with indices if it's an index visitor.
(relops): Do single-visitation with an index visitor.
(swap): Likewise.
(__visitor_result_type): New.

From-SVN: r270056