Jakub Jelinek [Tue, 9 Apr 2019 13:19:16 +0000 (15:19 +0200)]
re PR translation/90011 (trailing space in diagnostic)
PR translation/90011
* typeck2.c (check_narrowing): Remove trailing space from diagnostics.
From-SVN: r270229
Matthew Malcomson [Tue, 9 Apr 2019 11:39:59 +0000 (11:39 +0000)]
Hi there,
The "*neon_mov<mode>" patterns for 128 bit sized quantities uses the "Dn"
constraint to match vmov.f32 and vmov.i<vec-width> patterns.
This constraint boils down to using the `neon_immediate_valid` function.
Once the constraint has matched, the output C statement asserts that function
passes.
The output C statement calls `neon_immediate_valid` with the mode taken from the
iterator, while the constraint takes the mode from the operand.
This can cause a discrepency when the operand is a CONST_INT, as the constraint
passes VOIDmode which `neon_immediate_valid` treats as DImode, while the C
statement passes the mode of the iterator which can be TImode.
When this happens, the `neon_immediate_valid` can fail in the second call (if
e.g. the CONST_INT is a valid immediate in DImode but not TImode) which would
trigger the assertion.
The testcase added with this patch triggers this when compiled with an arm cross
compiler using the command line below.
gcc -march=armv8-a -c neon-immediate-timode.c -O1 -mfloat-abi=hard -mfpu=neon-fp-armv8
This patch splits the original "Dn" constraint into three new constraints, "DN"
for TImode CONST_INT, "Dn" for DImode CONST_INT, and "Dm" for CONST_VECTOR.
Splitting things up this way requires using one extra alternative in the
"*neon_mov<mode>" patterns, but makes it clear from the constraint what mode is
being used.
We also remove the behaviour of treating VOIDmode as DImode in
`neon_valid_immediate` since the original "Dn" constraint was the only place
that functionality was used. VOIDmode is now never passed to that function.
An assertion has been added to the function to ensure this problem is caught
earlier on.
Bootstrapped on arm-none-linux-gnueabihf
Regtested on cross-compiler arm-none-eabi
gcc/ChangeLog:
2019-04-09 Matthew Malcomson <matthew.malcomson@arm.com>
PR target/90024
* config/arm/arm.c (neon_valid_immediate): Disallow VOIDmode parameter.
* config/arm/constraints.md (Dm, DN, Dn): Split previous Dn constraint
into three.
* config/arm/neon.md (*neon_mov<mode>): Account for TImode and DImode
differences directly.
(*smax<mode>3_neon, vashl<mode>3, vashr<mode>3_imm): Use Dm constraint.
gcc/testsuite/ChangeLog:
2019-04-09 Matthew Malcomson <matthew.malcomson@arm.com>
PR target/90024
* gcc.dg/torture/neon-immediate-timode.c: New test.
From-SVN: r270226
Jakub Jelinek [Tue, 9 Apr 2019 10:27:14 +0000 (12:27 +0200)]
re PR translation/90011 (trailing space in diagnostic)
PR translation/90011
* ipa-devirt.c (compare_virtual_tables): Remove two trailing spaces
from diagnostics.
* config/arm/freebsd.h (LINK_SPEC): Remove trailing space from -p
diagnostics.
* config/riscv/freebsd.h (LINK_SPEC): Likewise.
* config/aarch64/aarch64-freebsd.h (FBSD_TARGET_LINK_SPEC): Likewise.
* config/darwin.h (DRIVER_SELF_SPECS, ASM_FINAL_SPEC): Remove
trailing space from -gsplit-dwarf diagnostics.
From-SVN: r270225
Jakub Jelinek [Tue, 9 Apr 2019 10:26:13 +0000 (12:26 +0200)]
re PR middle-end/89998 (ICE: verify_gimple failed in printf-return-value)
PR tree-optimization/89998
* gimple-ssa-sprintf.c (try_substitute_return_value): Use lhs type
instead of integer_type_node if possible, don't add ranges if return
type is not compatible with int.
* gimple-fold.c (gimple_fold_builtin_sprintf,
gimple_fold_builtin_snprintf): Use lhs type instead of hardcoded
integer_type_node.
* gcc.c-torture/compile/pr89998-1.c: New test.
* gcc.c-torture/compile/pr89998-2.c: New test.
From-SVN: r270224
Martin Liska [Tue, 9 Apr 2019 08:49:14 +0000 (10:49 +0200)]
Come up with bootstrap-lto-lean config.
2019-04-09 Martin Liska <mliska@suse.cz>
* Makefile.in: Regenerate.
* Makefile.tpl: Pass GENERATOR_CFLAGS
in all stages.
2019-04-09 Martin Liska <mliska@suse.cz>
* bootstrap-lto-lean.mk: New file.
2019-04-09 Martin Liska <mliska@suse.cz>
* Makefile.in: Use GENERATOR_CFLAGS for all generators.
* doc/install.texi: Document the new config.
From-SVN: r270223
Richard Sandiford [Tue, 9 Apr 2019 07:50:51 +0000 (07:50 +0000)]
SVE fallout from PR90006
2019-04-08 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* tree-vect-data-refs.c (vect_get_smallest_scalar_type): Always
use gimple_expr_type for load and store calls. Skip over the
condition argument in a conditional internal function.
Protect use of TREE_INT_CST_LOW.
From-SVN: r270222
Jakub Jelinek [Tue, 9 Apr 2019 06:38:07 +0000 (08:38 +0200)]
re PR target/90015 (riscv: typo "intterupt" in diagnostic)
PR target/90015
* config/riscv/riscv.c (riscv_get_interrupt_type): Fix comment typo.
(riscv_merge_decl_attributes): Fix typo in diagnostics. Remove
trailing period from it too.
* gcc.target/riscv/interrupt-conflict-mode.c (foo): Adjust expected
diagnostics.
From-SVN: r270221
Ian Lance Taylor [Tue, 9 Apr 2019 04:36:51 +0000 (04:36 +0000)]
compiler: sort packages in export data more deterministically
We can have multiple packages with the same name, so also sort by pkgpath.
To avoid an inconsistent sort, sort by symbol and pointer address if
we somehow get two different packages with the same name and pkgpath.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/171032
From-SVN: r270220
GCC Administrator [Tue, 9 Apr 2019 00:16:18 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r270219
Ville Voutilainen [Mon, 8 Apr 2019 19:45:48 +0000 (22:45 +0300)]
Fix visit<R> for variant.
* include/std/variant (__do_visit): Add a template parameter
for enforcing same return types for visit.
(__gen_vtable_impl): Likewise.
(_S_apply_single_alt): Adjust.
(__visit_invoke_impl): New. Handle casting to void.
(__do_visit_invoke): New. Enforces same return types.
(__do_visit_invoke_r): New. Converts return types.
(__visit_invoke): Adjust.
(__gen_vtable): Add a template parameter for enforcing
same return types for visit.
* testsuite/20_util/variant/visit_r.cc: Add a test for a visitor with
different return types.
* testsuite/20_util/variant/visit_neg.cc: New. Ensures that
visitors with different return types don't accidentally
compile with regular visitation.
From-SVN: r270216
Marek Polacek [Mon, 8 Apr 2019 19:31:00 +0000 (19:31 +0000)]
typeck2.c (digest_init_r): Don't condition the object slicing warning on flag_checking.
* typeck2.c (digest_init_r): Don't condition the object slicing warning
on flag_checking.
From-SVN: r270215
Ian Lance Taylor [Mon, 8 Apr 2019 18:36:25 +0000 (18:36 +0000)]
libgo: update to Go 1.12.2
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/170706
From-SVN: r270214
wu yuan [Mon, 8 Apr 2019 17:08:32 +0000 (17:08 +0000)]
[AArch64] Add tsv110 pipeline scheduling
Committed on behalf of Wu Yuan:
2019-04-04 wu yuan <wuyuan5@huawei.com>
* config/aarch64/aarch64-cores.def (tsv1100): Change scheduling model.
* config/aarch64/aarch64.md : Add "tsv110.md"
* config/aarch64/tsv110.md: New file.
From-SVN: r270212
Richard Biener [Mon, 8 Apr 2019 13:54:02 +0000 (13:54 +0000)]
re PR tree-optimization/90006 (gcc loops indefinitely around vect_get_constant_vectors on -O2 -ftree-slp-vectorize -fno-math-errno)
2019-04-08 Richard Biener <rguenther@suse.de>
PR tree-optimization/90006
* tree-vect-data-refs.c (vect_get_smallest_scalar_type): Handle
calls like lrint.
* gcc.dg/vect/bb-slp-pr90006.c: New testcase.
From-SVN: r270210
Martin Liska [Mon, 8 Apr 2019 13:09:26 +0000 (15:09 +0200)]
LOCAL_PATCHES: Add revision.
From-SVN: r270209
Martin Liska [Mon, 8 Apr 2019 13:08:30 +0000 (15:08 +0200)]
Add missing libsanitizer extra patch (r259664) (PR sanitizer/89941).
2019-04-08 Martin Liska <mliska@suse.cz>
PR sanitizer/89941
* sanitizer_common/sanitizer_platform_limits_linux.cc (defined):
Reapply patch from r259664.
* sanitizer_common/sanitizer_platform_limits_posix.h (defined):
Likewise.
From-SVN: r270208
Andrea Corallo [Mon, 8 Apr 2019 12:59:24 +0000 (12:59 +0000)]
The fma_forest, fma_root_node and func_fma_steering classes lack a copy constructor.
The fma_forest, fma_root_node and func_fma_steering classes lack a
copy constructor. However, they contain pointers to allocated memory
so this omission can be regarded as poor style. We don't need to copy
such objects, so declare the copy constructor private to inhibit
accidental copying.
2019-04-08 Andrea Corallo <andrea.corallo@arm.com>
PR target/83033
* config/aarch64/cortex-a57-fma-steering.c (fma_forest): Prohibit copy
construction.
(fma_root_node): Likewise.
(func_fma_steering): Likewise.
From-SVN: r270207
Jakub Jelinek [Mon, 8 Apr 2019 12:36:58 +0000 (14:36 +0200)]
re PR rtl-optimization/89865 (FAIL: gcc.target/i386/pr49095.c scan-assembler-times \\\\), % 45)
PR rtl-optimization/89865
* config/i386/i386.md: Add peepholes for z = x; x ^= y; x != z.
* gcc.target/i386/pr49095.c: Don't expect any RMW sequences.
From-SVN: r270206
Jakub Jelinek [Mon, 8 Apr 2019 12:35:22 +0000 (14:35 +0200)]
re PR rtl-optimization/89865 (FAIL: gcc.target/i386/pr49095.c scan-assembler-times \\\\), % 45)
PR rtl-optimization/89865
* config/i386/i386.md
(SWI12 peephole for mem {+,-,&,|,^}= x; mem != 0): Fix up operand
numbers not to clash with the additional operands[4].
(peepholes for mem {+,-,&,|,^}= x; mem != 0): New peephole2s
with extra register copy in the middle.
* gcc.target/i386/pr49095.c: Adjust number of expected RMW spots
on ia32.
From-SVN: r270205
Martin Liska [Mon, 8 Apr 2019 12:16:15 +0000 (14:16 +0200)]
Add data_file to GCOV interm. format (PR gcov-profile/89961).
2019-04-08 Martin Liska <mliska@suse.cz>
PR gcov-profile/89961
* doc/gcov.texi: Document data_file.
* gcov.c (generate_results): Add data_info into JSON output.
From-SVN: r270204
Bin Cheng [Mon, 8 Apr 2019 11:52:18 +0000 (11:52 +0000)]
re PR middle-end/89725 (ICE in get_fnname_from_decl, at varasm.c:1723)
2019-04-01 Bin Cheng <bin.cheng@linux.alibaba.com>
PR tree-optimization/89725
* tree-chrec.c (chrec_contains_symbols): New parameter. Handle outer
loop's chrec as invariant symbol.
* tree-chrec.h (chrec_contains_symbols): New parameter.
* tree-data-ref.c (analyze_miv_subscript): Pass new argument.
(build_classic_dist_vector_1, add_other_self_distances): Bypass access
function of loops not in DDR's loop_nest.
* tree-data-ref.h (index_in_loop_nest): Add unreachable check.
* gcc.dg/tree-ssa/pr89725.c: New test.
From-SVN: r270203
Martin Liska [Mon, 8 Apr 2019 08:42:00 +0000 (10:42 +0200)]
Fix expected scanned pattern.
2019-04-08 Martin Liska <mliska@suse.cz>
* gcc.target/riscv/arch-1.c: Fix expected scanned pattern.
From-SVN: r270202
Paolo Carlini [Mon, 8 Apr 2019 08:13:50 +0000 (08:13 +0000)]
re PR c++/89914 (ICE in nothrow_spec_p, at cp/except.c:1238)
/cp
2019-04-08 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/89914
* semantics.c (trait_expr_value): Don't use TYPE_NOTHROW_P
when maybe_instantiate_noexcept fails.
(classtype_has_nothrow_assign_or_copy_p): Likewise.
* method.c (implicitly_declare_fn): Avoid passing error_mark_node
to build_exception_variant.
/testsuite
2019-04-08 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/89914
* g++.dg/ext/has_nothrow_constructor-3.C: New.
From-SVN: r270201
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
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
GCC Administrator [Mon, 8 Apr 2019 00:16:15 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r270195
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
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
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
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
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
GCC Administrator [Sun, 7 Apr 2019 00:16:16 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r270187
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
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
GCC Administrator [Sat, 6 Apr 2019 00:16:17 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r270181
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
GCC Administrator [Fri, 5 Apr 2019 00:16:13 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r270158
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
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
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
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
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
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
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
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
Christophe Lyon [Thu, 4 Apr 2019 07:48:56 +0000 (09:48 +0200)]
Fix typo in ChangeLog
From-SVN: r270143
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
GCC Administrator [Thu, 4 Apr 2019 00:16:12 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r270141
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
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
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
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
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
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
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
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
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
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
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
Jonathan Wakely [Wed, 3 Apr 2019 10:11:30 +0000 (11:11 +0100)]
Fix previous ChangeLog entry
From-SVN: r270121
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
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
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
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
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
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
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
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
GCC Administrator [Wed, 3 Apr 2019 00:16:11 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r270110
Jeff Law [Tue, 2 Apr 2019 19:45:14 +0000 (13:45 -0600)]
* gcc.target/visium/bit_shift.c: xfail.
From-SVN: r270105
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
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
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
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
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
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
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
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
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
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
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