gcc.git
5 years agoDaily bump.
GCC Administrator [Wed, 10 Apr 2019 00:16:21 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r270245

5 years agoc-ada-spec.c (print_destructor): Deal with deleting destructors.
Eric Botcazou [Tue, 9 Apr 2019 19:29:17 +0000 (19:29 +0000)]
c-ada-spec.c (print_destructor): Deal with deleting destructors.

* c-ada-spec.c (print_destructor): Deal with deleting destructors.
(dump_ada_declaration) <FUNCTION_DECL>: Likewise.

From-SVN: r270239

5 years agoAdd comments and style fixes to <variant>
Jonathan Wakely [Tue, 9 Apr 2019 18:50:48 +0000 (19:50 +0100)]
Add comments and style fixes to <variant>

* include/std/variant: Adjust whitespace. Add comments.
(_Multi_array): Leave primary template undefined.
(_Multi_array<_Tp>): Define partial specialization for base case of
recursion.
(__gen_vtable_impl, __gen_vtable): Remove redundant && from type
which is always a reference.
(__gen_vtable::_S_apply()): Remove function, inline body into
default member initializer.
* testsuite/20_util/variant/visit.cc: Test with noncopyable types.

From-SVN: r270238

5 years agoFix std::visit to support arbitrary callables
Jonathan Wakely [Tue, 9 Apr 2019 18:50:43 +0000 (19:50 +0100)]
Fix std::visit to support arbitrary callables

The __visitor_result_type helper didn't use std::invoke and so didn't
compile when the visitor was a pointer-to-member rather than a function
object. Use std::invoke_result instead.

* include/std/variant (__variant_idx_cookie): Add member type.
(__visitor_result_type): Remove.
(__do_visit): Use invoke_result instead of __visitor_result_type.
* testsuite/20_util/variant/visit.cc: New test.

From-SVN: r270237

5 years agoPR libstdc++/90008 remove unused capture from variant rel ops
Jonathan Wakely [Tue, 9 Apr 2019 18:50:39 +0000 (19:50 +0100)]
PR libstdc++/90008 remove unused capture from variant rel ops

PR libstdc++/90008
* include/std/variant (_VARIANT_RELATION_FUNCTION_TEMPLATE): Remove
unused capture.
* testsuite/20_util/variant/90008.cc: New test.

From-SVN: r270236

5 years ago* gcc.target/i386/ifcvt-onecmpl-abs-1.c
Uros Bizjak [Tue, 9 Apr 2019 18:16:14 +0000 (20:16 +0200)]
* gcc.target/i386/ifcvt-onecmpl-abs-1.c
(dg-options): Use -O2 -fdump-rtl-ce1.
(dg-final): Scan ce1 RTL dump instead of asm dump.

From-SVN: r270234

5 years agoAdd PSTL internal namespace qualifications
Thomas Rodgers [Tue, 9 Apr 2019 15:45:26 +0000 (15:45 +0000)]
Add PSTL internal namespace qualifications

* include/pstl/algorithm_impl.h: Add namespace qualification.
* include/pstl/execution_defs.h: Add namespace qualification.
* include/pstl/execution_impl.h: Add namespace qualification.
* include/pstl/numeric_impl.h: Add namespace qualification.
* include/pstl/parallel_backend_tbb.h: Add namespace qualification.
* include/pstl/unseq_backend_simd.h: Add namespace qualification.
* include/pstl/parallel_backend_utils.h: Include <cassert>.

From-SVN: r270231

5 years agore PR translation/90011 (trailing space in diagnostic)
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

5 years agoHi there,
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

5 years agore PR translation/90011 (trailing space in diagnostic)
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

5 years agore PR middle-end/89998 (ICE: verify_gimple failed in printf-return-value)
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

5 years agoCome up with bootstrap-lto-lean config.
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

5 years agoSVE fallout from PR90006
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

5 years agore PR target/90015 (riscv: typo "intterupt" in diagnostic)
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

5 years agocompiler: sort packages in export data more deterministically
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

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

From-SVN: r270219

5 years agoFix visit<R> for variant.
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

5 years agotypeck2.c (digest_init_r): Don't condition the object slicing warning on flag_checking.
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

5 years agolibgo: update to Go 1.12.2
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

5 years ago[AArch64] Add tsv110 pipeline scheduling
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

5 years agore PR tree-optimization/90006 (gcc loops indefinitely around vect_get_constant_vector...
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

5 years agoLOCAL_PATCHES: Add revision.
Martin Liska [Mon, 8 Apr 2019 13:09:26 +0000 (15:09 +0200)]
LOCAL_PATCHES: Add revision.

From-SVN: r270209

5 years agoAdd missing libsanitizer extra patch (r259664) (PR sanitizer/89941).
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

5 years agoThe fma_forest, fma_root_node and func_fma_steering classes lack a copy constructor.
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

5 years agore PR rtl-optimization/89865 (FAIL: gcc.target/i386/pr49095.c scan-assembler-times...
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

5 years agore PR rtl-optimization/89865 (FAIL: gcc.target/i386/pr49095.c scan-assembler-times...
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

5 years agoAdd data_file to GCOV interm. format (PR gcov-profile/89961).
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

5 years agore PR middle-end/89725 (ICE in get_fnname_from_decl, at varasm.c:1723)
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

5 years agoFix expected scanned pattern.
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

5 years agore PR c++/89914 (ICE in nothrow_spec_p, at cp/except.c:1238)
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

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