Jonathan Wakely [Wed, 9 Oct 2019 12:55:39 +0000 (13:55 +0100)]
PR libstdc++/78552 only construct std::locale for C locale once
PR libstdc++/78552
* src/c++98/locale_init.cc (locale::classic()): Do not construct a new
locale object for every call.
(locale::_S_initialize_once()): Construct C locale here.
From-SVN: r276758
Thomas Schwinge [Wed, 9 Oct 2019 11:31:14 +0000 (13:31 +0200)]
[PR92036] Add 'libgomp.oacc-c-c++-common/data-firstprivate-1.c'
libgomp/
PR middle-end/92036
* testsuite/libgomp.oacc-c-c++-common/data-firstprivate-1.c: New
file.
From-SVN: r276757
Georg-Johann Lay [Wed, 9 Oct 2019 09:05:04 +0000 (09:05 +0000)]
avr-mmcu.texi: Re-generate because config/avr/avr-devices.c was changed in r269487.
* doc/avr-mmcu.texi: Re-generate because config/avr/avr-devices.c
was changed in r269487.
From-SVN: r276756
Georg-Johann Lay [Wed, 9 Oct 2019 08:49:08 +0000 (08:49 +0000)]
* config/avr/avr.md: Fix typo in a comment.
From-SVN: r276755
Tobias Burnus [Wed, 9 Oct 2019 08:37:44 +0000 (08:37 +0000)]
re PR testsuite/91884 (libgomp testsuite: (not) using a specific driver for C++, Fortran)
2019-10-09 Tobias Burnus <tobias@codesourcery.com>
PR testsuite/91884
* testsuite/libgomp.fortran/fortran.exp: Conditionally
add -lquadmath.
* testsuite/libgomp.oacc-fortran/fortran.exp: Ditto.
From-SVN: r276754
Jakub Jelinek [Wed, 9 Oct 2019 07:33:02 +0000 (09:33 +0200)]
re PR libgomp/92028 (OpenACC 'host_data' execution test regressions with nvptx offloading)
PR libgomp/92028
* target.c (gomp_map_vars_internal): Readd the previous
GOMP_MAP_USE_DEVICE_PTR handling code in the first loop,
though do that just in the !not_found_cnt case.
From-SVN: r276753
Richard Biener [Wed, 9 Oct 2019 07:02:22 +0000 (07:02 +0000)]
tree-vectorizer.h (_stmt_vec_info::reduc_vectype_in): New.
2019-10-08 Richard Biener <rguenther@suse.de>
* tree-vectorizer.h (_stmt_vec_info::reduc_vectype_in): New.
(_stmt_vec_info::force_single_cycle): Likewise.
(STMT_VINFO_FORCE_SINGLE_CYCLE): New.
(STMT_VINFO_REDUC_VECTYPE_IN): Likewise.
* tree-vect-loop.c (vectorizable_reduction): Set
STMT_VINFO_REDUC_VECTYPE_IN and STMT_VINFO_FORCE_SINGLE_CYCLE.
(vect_transform_reduction): Use them to remove redundant code.
(vect_transform_cycle_phi): Likewise.
From-SVN: r276752
Alexandre Oliva [Wed, 9 Oct 2019 01:14:02 +0000 (01:14 +0000)]
use call-clobbered reg to disalign the stack
Some x86 tests of stack realignment, that disaligned the stack with
pushes and pops, failed when the compiler was configured to tune for a
target that preferred to accumulate outgoing arguments: the stack
space is reserved before the asm push, the call sequence overwrites
the saved register, and then the asm pop restores the overwritten
value. Since that's a call-preserved register in 32-bit mode, it
should be preserved unchanged, but isn't.
Merely changing the register to a call-clobbered one would be enough,
but the tests would remain fragile and prone to failure due to other
optimizations, so I arranged for the compiler to be made aware of the
register used for the push and the pop, so it won't use it for
something else, and forced the function to use a frame pointer, so
that it won't use stack pointer offsets for local variables: the
offsets would likely be wrong between the asm push and pop.
for gcc/testsuite/ChangeLog
* gcc.target/i386/
20060512-1.c (sse2_test): Use a
call-clobbered register variable for stack-disaligning push
and pop. Require a frame pointer.
* gcc.target/i386/
20060512-3.c (sse2_test): Likewise.
From-SVN: r276751
GCC Administrator [Wed, 9 Oct 2019 00:16:22 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r276750
Martin Sebor [Tue, 8 Oct 2019 22:12:54 +0000 (22:12 +0000)]
PR c++/92001 - missing -Wclass-memaccess with array as first argument to memset
gcc/cp/ChangeLog:
PR c++/92001
* call.c (maybe_warn_class_memaccess): Handle arrays.
gcc/testsuite/ChangeLog:
PR c++/92001
* g++.dg/Wclass-memaccess-5.C: New test.
From-SVN: r276725
Dmitrij Pochepko [Tue, 8 Oct 2019 21:53:03 +0000 (21:53 +0000)]
re PR tree-optimization/90836 (Missing popcount pattern matching)
2019-10-08 Dmitrij Pochepko <dmitrij.pochepko@bell-sw.com>
PR tree-optimization/90836
* lib/target-supports.exp (check_effective_target_popcount)
(check_effective_target_popcountll): New effective targets.
* gcc.dg/tree-ssa/popcount4.c: New test.
* gcc.dg/tree-ssa/popcount4l.c: New test.
* gcc.dg/tree-ssa/popcount4ll.c: New test.
From-SVN: r276722
Dmitrij Pochepko [Tue, 8 Oct 2019 21:50:05 +0000 (21:50 +0000)]
re PR tree-optimization/90836 (Missing popcount pattern matching)
2019-10-08 Dmitrij Pochepko <dmitrij.pochepko@bell-sw.com>
PR tree-optimization/90836
* gcc/match.pd (popcount): New pattern.
From-SVN: r276721
Martin Sebor [Tue, 8 Oct 2019 19:48:27 +0000 (19:48 +0000)]
PR middle-end/92026 - gcc.dg/Wstringop-overflow-18.c FAIL
PR middle-end/92026 - gcc.dg/Wstringop-overflow-18.c FAIL
PR middle-end/92014 - bogus warning: writing 8 bytes into a region of size 1 in timezone/zic.c
gcc/ChangeLog:
* tree-ssa-strlen.c (count_nonzero_bytes): Avoid recursing for MEM_REF
again once nbytes has been set. Set the access size when not yet set.
gcc/testsuite/ChangeLog:
PR middle-end/92014
* gcc.dg/Wstringop-overflow-19.c: New test.
From-SVN: r276711
Iain Sandoe [Tue, 8 Oct 2019 19:24:22 +0000 (19:24 +0000)]
[Darwin] Remove code deprecated in 4.x.
This removes some code that should be dead.
Given no reported problems from the warning since 4.6 this seems reasonable.
gcc/ChangeLog:
2019-10-08 Iain Sandoe <iain@sandoe.co.uk>
* config/darwin.c (machopic_select_section): Remove dead code for
old Objective-C section selection method, replace with unreachable.
From-SVN: r276709
Iain Sandoe [Tue, 8 Oct 2019 19:09:04 +0000 (19:09 +0000)]
[Darwin, machopic 2/n] Compute and cache indirection rules.
This caches a check for the requirement to indirect a symbol in the Darwin
ABI, and uses it where needed. We also ensure that we place the indirection
pointers into the non-lazy symbol pointers section. Other placements have
occurred with various platform toolchains - but these seem to have been
unintentional so we match current platform toolchains.
gcc/ChangeLog:
2019-10-08 Iain Sandoe <iain@sandoe.co.uk>
* config/darwin.c (machopic_indirect_data_reference): Check for
required indirections before making direct access to defined
values.
(machopic_output_indirection): Place the indirected pointes for
required indirections into the non-lazy symbol pointers section.
(darwin_encode_section_info):
* config/darwin.h (MACHO_SYMBOL_FLAG_MUST_INDIRECT): New.
(MACHO_SYMBOL_MUST_INDIRECT_P): New.
From-SVN: r276708
Uros Bizjak [Tue, 8 Oct 2019 17:01:55 +0000 (19:01 +0200)]
re PR rtl-optimization/91994 (r276327 breaks -mvzeroupper)
PR target/91994
* config/i386/i386.c (x86_avx_u128_mode_needed): Use SSE_REG
instead of ALL_SSE_REG to check if function call preserves some
256-bit SSE registers.
From-SVN: r276707
Steven G. Kargl [Tue, 8 Oct 2019 16:31:16 +0000 (16:31 +0000)]
re PR fortran/91801 (ICE in gfc_simplify_reshape, at fortran/simplify.c:6733)
2019-10-08 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91801
* simplify.c (gfc_simplify_reshape): Convert a gcc_assert into a
gfc_error as a user can easily hit the condition.
2019-10-08 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91801
* gfortran.dg/pr91801.f90: New test.
From-SVN: r276706
Marek Polacek [Tue, 8 Oct 2019 16:26:39 +0000 (16:26 +0000)]
DR 685 - Integral promotion of enum ignores fixed underlying type.
* g++.dg/cpp0x/scoped_enum9.C: New test.
From-SVN: r276705
Martin Sebor [Tue, 8 Oct 2019 15:33:50 +0000 (15:33 +0000)]
re PR testsuite/92025 (gcc.dg/Wstringop-overflow-12.c XPASSes)
gcc/testsuite/ChangeLog:
PR tetsuite/92025
* gcc.dg/Wstringop-overflow-12.c: Remove xfail.
2019-10-08 Richard Biener <rguenther@suse.de>
From-SVN: r276703
Tulio Magno Quites Machado Filho [Tue, 8 Oct 2019 15:08:35 +0000 (15:08 +0000)]
Change the library search path when using --with-advance-toolchain
From: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
Remove all -L directories from LINK_OS_EXTRA_SPEC32 and
LINK_OS_EXTRA_SPEC64 so that user directories specified at
build time have higher preference over the advance toolchain libraries.
Set MD_STARTFILE_PREFIX to $prefix/lib/ and MD_STARTFILE_PREFIX_1 to
$at/lib/ so that a compiler library has preference over the Advance
Toolchain libraries.
* config.gcc: Move -L usage from LINK_OS_EXTRA_SPEC32 and
LINK_OS_EXTRA_SPEC64 to MD_STARTFILE_PREFIX and
MD_STARTFILE_PREFIX_1 when using --with-advance-toolchain.
From-SVN: r276702
Richard Biener [Tue, 8 Oct 2019 13:39:03 +0000 (13:39 +0000)]
tree-vectorizer.h (_stmt_vec_info::v_reduc_type): Remove.
2019-10-08 Richard Biener <rguenther@suse.de>
* tree-vectorizer.h (_stmt_vec_info::v_reduc_type): Remove.
(_stmt_vec_info::is_reduc_info): Add.
(STMT_VINFO_VEC_REDUCTION_TYPE): Remove.
(vectorizable_condition): Remove.
(vectorizable_shift): Likewise.
(vectorizable_reduction): Adjust.
(info_for_reduction): New.
* tree-vect-loop.c (vect_force_simple_reduction): Fold into...
(vect_analyze_scalar_cycles_1): ... here.
(vect_analyze_loop_operations): Adjust.
(needs_fold_left_reduction_p): Simplify for single caller.
(vect_is_simple_reduction): Likewise. Remove stmt restriction
for nested cycles not part of double reductions.
(vect_model_reduction_cost): Pass in the reduction type.
(info_for_reduction): New function.
(vect_create_epilog_for_reduction): Use it, access reduction
meta off the stmt info it returns. Use STMT_VINFO_REDUC_TYPE
instead of STMT_VINFO_VEC_REDUCTION_TYPE.
(vectorize_fold_left_reduction): Remove pointless assert.
(vectorizable_reduction): Analyze the full reduction when
visiting the outermost PHI. Simplify. Use STMT_VINFO_REDUC_TYPE
instead of STMT_VINFO_VEC_REDUCTION_TYPE. Direct reduction
stmt code-generation to vectorizable_* in most cases. Verify
code-generation only for cases handled by
vect_transform_reductuon.
(vect_transform_reduction): Use info_for_reduction to get at
reduction meta. Simplify.
(vect_transform_cycle_phi): Likewise.
(vectorizable_live_operation): Likewise.
* tree-vect-patterns.c (vect_reassociating_reduction_p): Look
at the PHI node for STMT_VINFO_REDUC_TYPE.
* tree-vect-slp.c (vect_schedule_slp_instance): Remove no
longer necessary code.
* tree-vect-stmts.c (vectorizable_shift): Make static again.
(vectorizable_condition): Likewise. Get at reduction related
info via info_for_reduction.
(vect_analyze_stmt): Adjust.
(vect_transform_stmt): Likewise.
* tree-vectorizer.c (vec_info::new_stmt_vec_info): Initialize
STMT_VINFO_REDUC_TYPE instead of STMT_VINFO_VEC_REDUCTION_TYPE.
* gcc.dg/vect/pr65947-1.c: Adjust.
* gcc.dg/vect/pr65947-13.c: Likewise.
* gcc.dg/vect/pr65947-14.c: Likewise.
* gcc.dg/vect/pr65947-4.c: Likewise.
* gcc.dg/vect/pr80631-1.c: Likewise.
* gcc.dg/vect/pr80631-2.c: Likewise.
From-SVN: r276700
Tobias Burnus [Tue, 8 Oct 2019 12:30:44 +0000 (12:30 +0000)]
Fortran - fix OpenMP 'target simd'
gcc/fortran/
* parse.c (parse_executable): Add missing ST_OMP_TARGET_SIMD.
libgomp/
* testsuite/libgomp.fortran/target-simd.f90: New.
From-SVN: r276698
Jonathan Wakely [Tue, 8 Oct 2019 11:01:44 +0000 (12:01 +0100)]
Add makefile target to update HTML files in source tree
Also remove the creation of the html/ext sub-directory, which has been
unused since revision r245258.
* doc/Makefile.am (doc-html-docbook-regenerate): New target.
(${docbook_outdir}/html): Do not create unused 'html/ext' directory.
* doc/Makefile.in: Regenerate.
* doc/xml/manual/documentation_hacking.xml: Document new target.
* doc/html/*: Regenerate.
From-SVN: r276695
Tobias Burnus [Tue, 8 Oct 2019 10:49:27 +0000 (10:49 +0000)]
Fortran - Improve OpenMP/OpenACC diagnostic
gcc/fortran/
* match.h (gfc_match_omp_eos_error): Renamed from gfc_match_omp_eos.
* openmp.c (gfc_match_omp_eos): Make static.
(gfc_match_omp_eos_error): New.
* parse.c (matchs, matchdo, matchds): Do as done for 'matcho' -
if error occurred after OpenMP/OpenACC directive matched, do not
try other directives.
(decode_oacc_directive, decode_omp_directive): Call new function
instead.
testsuite/
* gfortran.dg/goacc/continuation-free-form.f95: Update dg-error.
From-SVN: r276694
Jonathan Wakely [Tue, 8 Oct 2019 10:41:28 +0000 (11:41 +0100)]
Restore URL for Austern article on allocators
This reverts "Remove broken URL from libstdc++ manual" by restoring the
link, but using an archived copy from the Wayback Machine.
* doc/xml/manual/allocator.xml: Use archived copy of CUJ article.
* doc/html/*: Regenerate.
From-SVN: r276693
Thomas Schwinge [Tue, 8 Oct 2019 10:20:50 +0000 (12:20 +0200)]
Remove Cell Broadband Engine SPU targets
Follow-up to trunk 275343:
* MAINTAINERS: Add back Trevor Smigiel; move into Write After
Approval section.
From-SVN: r276692
Thomas Schwinge [Tue, 8 Oct 2019 10:20:41 +0000 (12:20 +0200)]
Extend 'libgfortran/runtime/minimal.c' per r274599 "PR fortran/68401 Improve allocation error message"
libgfortran/
PR fortran/68401
* runtime/minimal.c (os_error_at): New function.
From-SVN: r276691
Thomas Schwinge [Tue, 8 Oct 2019 10:20:31 +0000 (12:20 +0200)]
Revise 'libgfortran/runtime/minimal.c' to better conform to the original sources
libgfortran/
* runtime/minimal.c: Revise.
From-SVN: r276690
Tobias Burnus [Tue, 8 Oct 2019 09:35:56 +0000 (11:35 +0200)]
Remove '>>>' merge marker from changelog
From-SVN: r276689
Richard Sandiford [Tue, 8 Oct 2019 08:24:40 +0000 (08:24 +0000)]
[AArch64] Limit simd-abi-9.c function body test to LP64
On ILP32 targets, there's an extra UXTW instruction to extend
the incoming pointer before the load. It doesn't seem worth
complicating the test for that, since all we're checking is
that an optimisation takes place, and that optimisation isn't
related to pointer size.
2019-10-08 Richard Sandiford <richard.sandiford@arm.com>
gcc/testsuite/
* gcc.target/aarch64/torture/simd-abi-9.c: Require LP64 for
the function body test.
From-SVN: r276688
Joseph Myers [Tue, 8 Oct 2019 00:37:45 +0000 (01:37 +0100)]
Make C2X imply -fno-fp-int-builtin-inexact.
Since TS 18661-1 has been integrated into C2X, this patch makes C2X
imply -fno-fp-int-builtin-inexact.
Bootstrapped with no regressions on x86_64-pc-linux-gnu.
gcc:
* doc/invoke.texi (-ffp-int-builtin-inexact): Document
-fno-fp-int-builtin-inexact default for C2X.
gcc/c-family:
* c-opts.c (c_common_post_options): Set
-fno-fp-int-builtin-inexact for C2X.
gcc/testsuite:
* gcc.dg/torture/builtin-fp-int-inexact-c2x.c: New test.
From-SVN: r276686
GCC Administrator [Tue, 8 Oct 2019 00:16:15 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r276685
Prathamesh Kulkarni [Mon, 7 Oct 2019 23:44:49 +0000 (23:44 +0000)]
re PR tree-optimization/91532 ([SVE] Redundant predicated store in gcc.target/aarch64/fmla_2.c)
2019-10-07 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
Richard Biener <rguenther@suse.de>
PR tree-optimization/91532
* tree-if-conv.c: Include tree-ssa-dse.h.
(ifcvt_local_dce): Change param from bb to loop,
and call dse_classify_store.
(tree_if_conversion): Pass loop instead of loop->header as arg
to ifcvt_local_dce.
* tree-ssa-dse.c: Include tree-ssa-dse.h.
(delete_dead_or_redundant_assignment): Remove static qualifier from
declaration, and add prototype in tree-ssa-dse.h.
(dse_store_status): Move to tree-ssa-dse.h.
(dse_classify_store): Remove static qualifier and add new tree param
stop_at_vuse, and add prototype in tree-ssa-dse.h.
* tree-ssa-dse.h: New header.
Co-Authored-By: Richard Biener <rguenther@suse.de>
From-SVN: r276681
Jozef Lawrynowicz [Mon, 7 Oct 2019 21:22:04 +0000 (21:22 +0000)]
Revert: 2019-10-07 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* config/msp430/msp430.md: Revert: Group zero_extend* insns together.
From-SVN: r276680
Jozef Lawrynowicz [Mon, 7 Oct 2019 21:04:07 +0000 (21:04 +0000)]
msp430.md: Group zero_extend* insns together.
2019-10-07 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* config/msp430/msp430.md: Group zero_extend* insns together.
From-SVN: r276679
Iain Sandoe [Mon, 7 Oct 2019 20:21:50 +0000 (20:21 +0000)]
[Darwin, machopic 1/n] Consider visibility in indirections.
For weak, hidden vars the indirection should just be as normal, that
is that the indirections for such symbols should appear in the non-lazy
symbol pointers table, not in the .data section.
gcc/ChangeLog:
2019-10-07 Iain Sandoe <iain@sandoe.co.uk>
* config/darwin.c (machopic_output_indirection): Don't put
hidden symbol indirections into the .data section, use the
non-lazy symbol pointers section as normal.
(darwin_encode_section_info): Record if a symbol is hidden.
* config/darwin.h (MACHO_SYMBOL_FLAG_HIDDEN_VIS): New.
(MACHO_SYMBOL_HIDDEN_VIS_P): New.
From-SVN: r276675
Iain Sandoe [Mon, 7 Oct 2019 20:14:26 +0000 (20:14 +0000)]
[Darwin, machopic 0/n] Initial tidy of Mach-O symbol handling.
We want to improve the detection and caching of symbol-properties
so that (a) we can make the compiler's output match the platform
norms (b) we can improve efficiency by checking flags instead of
inspecting strings. (c) The fix for PR71767 was a largish hammer
and we want to reduce the number of symbols that are made linker-
visible.
This first patch is largely typographical changes with no functional
difference intended:
- Tries to ensure that there's no overlap between the symbols used in
the Mach-O case and those declared in the i386 or rs6000 port trees.
- Some improvement to comments.
- Makes the naming of the symbol flags consistent with other uses.
- Provides a predicate macro for each use.
gcc/ChangeLog:
2019-10-07 Iain Sandoe <iain@sandoe.co.uk>
* config/darwin.c (machopic_symbol_defined_p): Use symbol flag
predicates instead of accessing bits directly.
(machopic_indirect_call_target): Likewise.
(machopic_output_indirection): Likewise.
(darwin_encode_section_info): Improve description. Use renamed
symbol flags. Use predicate macros for variables and functions.
* config/darwin.h:
Rename MACHO_SYMBOL_VARIABLE to MACHO_SYMBOL_FLAG_VARIABLE.
Rename MACHO_SYMBOL_DEFINED to MACHO_SYMBOL_FLAG_DEFINED.
Rename MACHO_SYMBOL_STATIC to MACHO_SYMBOL_FLAG_STATIC.
(MACHO_SYMBOL_VARIABLE_P): New.
(MACHO_SYMBOL_DEFINED_P):New.
(MACHO_SYMBOL_STATIC_P): New.
* config/i386/darwin.h (MACHO_SYMBOL_FLAG_VARIABLE): Delete.
(SYMBOL_FLAG_SUBT_DEP): New.
* config/rs6000/darwin.h (SYMBOL_FLAG_SUBT_DEP): New.
From-SVN: r276674
Jozef Lawrynowicz [Mon, 7 Oct 2019 20:09:49 +0000 (20:09 +0000)]
msp430.c (msp430_file_end): s/msp_/msp430_/
2019-10-07 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* config/msp430/msp430.c (msp430_file_end): s/msp_/msp430_/
(msp430_expand_epilogue): Likewise.
* config/msp430/predicates.md: Likewise.
* config/msp430/msp430.md: Likewise.
Replace blocks of 8 spaces with tabs.
From-SVN: r276671
Jozef Lawrynowicz [Mon, 7 Oct 2019 20:05:30 +0000 (20:05 +0000)]
msp430-protos.h (msp430_split_addsi): New prototype.
2019-10-07 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* config/msp430/msp430-protos.h (msp430_split_addsi): New prototype.
* config/msp430/msp430.c (msp430_split_addsi): New.
* config/msp430/msp430.md: Call msp430_split_addsi () instead of using
a block of C code for splitting addsi.
From-SVN: r276670
Uros Bizjak [Mon, 7 Oct 2019 18:41:17 +0000 (20:41 +0200)]
i386-expand.c (ix86_expand_floorceildf_32, [...]): Reorder functions.
* config/i386/i386-expand.c (ix86_expand_floorceildf_32,
ix86_expand_rounddf_32): Reorder functions.
* config/i386/i386-protos.h: Update..
From-SVN: r276668
Jozef Lawrynowicz [Mon, 7 Oct 2019 15:58:19 +0000 (15:58 +0000)]
MSP430: Don't generate 430X insns when handling data in the lower memory region
gcc/ChangeLog:
2019-10-07 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* config.in: Regenerate.
* config/msp430/constraints.md: Fix docstring for "Ys" constraint.
Add new "Yx" constraint.
* config/msp430/driver-msp430.c (msp430_propagate_region_opt): New spec
function.
* config/msp430/msp430-protos.h (msp430_op_not_in_high_mem): New
prototype.
* config/msp430/msp430.c (msp430_option_override): Allow the lower
code/data region to be selected in the small memory model.
(msp430_section_attr): Don't warn if the "section" and "lower"
attributes are used together.
(msp430_handle_generic_attribute): Likewise.
(msp430_var_in_low_mem): New function.
(TARGET_ENCODE_SECTION_INFO): Define.
(msp430_encode_section_info): New function.
(gen_prefix): Return early in the small memory model.
Require TARGET_USE_LOWER_REGION_PREFIX to be set before adding the
".lower" prefix if -m{code,data}-region=lower have been passed.
(msp430_output_aligned_decl_common): Emit common symbols when
-mdata-region=lower is passed unless TARGET_USE_LOWER_REGION_PREFIX is
set.
(TARGET_ASM_FILE_END): Define.
(msp430_file_end): New function.
(msp430_do_not_relax_short_jumps): Allow relaxation when
function will be in the lower region.
(msp430_op_not_in_high_mem): New function.
(msp430_print_operand): Check "msp430_op_not_in_high_mem" for
the 'X' operand selector.
Clarify comment for 'x' operand selector.
* config/msp430/msp430.h (LINK_SPEC): Propagate
-m{code,data}-region to the linker via spec function
msp430_propagate_region_opt.
(msp430_propagate_region_opt): New prototype.
(EXTRA_SPEC_FUNCTIONS): Add msp430_propagate_region_opt.
(SYMBOL_FLAG_LOW_MEM): Define.
* config/msp430/msp430.md (addsipsi3): Add missing "%X" operand
selector.
(zero_extendqihi2): Fix operand number used by "%X" selector.
(zero_extendqisi2): Likewise.
(zero_extendhisi2): Likewise.
(movqi): Use "Yx" constraint in place of "%X" operand selector.
(movhi): Likewise.
(addqi3): Likewise.
(addhi3): Likewise.
(addsi3): Likewise.
(addhi3_cy): Likewise.
(addchi4_cy): Likewise.
(subqi3): Likewise.
(subhi3): Likewise.
(subsi3): Likewise.
(bic<mode>3): Likewise.
(and<mode>3): Likewise.
(ior<mode>3): Likewise.
(xor<mode>3): Likewise.
(slli_1): Add missing "%X" operand selector.
(slll_1): Likewise.
(slll_2): Likewise.
(srai_1): Likewise.
(sral_1): Likewise.
(sral_2): Likewise.
(srli_1): Likewise.
(srll_1): Likewise.
(cbranchqi4_real): Use "Yx" constraint in place of "%X" operand
selector.
(cbranchhi4_real): Likewise.
(cbranchqi4_reversed): Likewise.
(cbranchhi4_reversed): Likewise.
(*bitbranch<mode>4): Likewise.
(*bitbranch<mode>4_z): Remove unnecessary "%x" operand selector.
* config/msp430/msp430.opt (mcode-region=): Set default to
MSP430_REGION_LOWER. Improve docstring.
(mdata-region=): Likewise.
(muse-lower-region-prefix): New option.
* config/msp430/t-msp430 (MULTILIB_OPTIONS): Add
mdata-region=none multilib.
(MULTILIB_MATCHES): Set mdata-region={upper,either} to match
mdata-region=none multilib.
MULTILIB_EXCEPTIONS: Remove.
MULTILIB_REQUIRED: Define.
* configure: Regenerate.
* configure.ac: Define HAVE_AS_GNU_ATTRIBUTE and
HAVE_AS_MSPABI_ATTRIBUTE if GAS version >= 2.33.50.
* doc/extend.texi: Clarify comment for {upper,lower,either}
function attributes.
Add separate description for "lower" variable attribute.
gcc/testsuite/ChangeLog:
2019-10-07 Jozef Lawrynowicz <jozef.l@mittosystems.com>
* gcc.target/msp430/430x-insns.c: New test.
* gcc.target/msp430/data-attributes-2.c: Remove dg-warning
directives for conflicts between the "section" and "lower" attributes.
* gcc.target/msp430/msp430.exp
(check_effective_target_msp430_region_not_lower): New.
(check_effective_target_msp430_region_lower): New.
* gcc.target/msp430/object-attributes-430.c: New test.
* gcc.target/msp430/object-attributes-default.c: New test.
* gcc.target/msp430/object-attributes-mlarge-any-region.c: New test.
* gcc.target/msp430/object-attributes-mlarge.c: New test.
From-SVN: r276665
Jakub Jelinek [Mon, 7 Oct 2019 15:49:52 +0000 (17:49 +0200)]
* gcc.target/i386/pr71801.c (uuidcache_init): Fix up size of d array.
From-SVN: r276664
Jakub Jelinek [Mon, 7 Oct 2019 15:44:55 +0000 (17:44 +0200)]
* gcc.target/i386/pr71801.c (uuidcache_init): Fix up size of d array.
From-SVN: r276663
Paolo Carlini [Mon, 7 Oct 2019 15:37:52 +0000 (15:37 +0000)]
call.c (resolve_args): Use cp_expr_loc_or_input_loc in one place.
/cp
2019-10-07 Paolo Carlini <paolo.carlini@oracle.com>
* call.c (resolve_args): Use cp_expr_loc_or_input_loc in one place.
* decl.c (grokdeclarator): Use id_loc in one place.
* decl2.c (build_anon_union_vars): Use DECL_SOURCE_LOCATION.
* parser.c (cp_parser_delete_expression): Fix the location of the
returned expression.
(cp_parser_throw_expression): Likewise.
* pt.c (determine_specialization): Use DECL_SOURCE_LOCATION.
/testsuite
2019-10-07 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/diagnostic/not-a-function-template-1.C: New.
* g++.dg/template/crash107.C: Adjust expected location.
* g++.dg/template/dependent-expr1.C: Check locations.
* g++.dg/template/error17.C: Check location.
From-SVN: r276661
Ilya Leoshkevich [Mon, 7 Oct 2019 15:01:15 +0000 (15:01 +0000)]
Introduce can_vcond_compare_p function
z13 supports only non-signaling vector comparisons. This means we
cannot vectorize LT, LE, GT, GE and LTGT when compiling for z13.
However, we cannot express this restriction today: the code only checks
whether vcond$a$b optab exists, but this does not say anything about the
operation.
Introduce a function that checks whether back-end supports vector
comparisons with individual rtx codes by matching vcond expander's third
argument with a fake comparison with the corresponding rtx code.
gcc/ChangeLog:
2019-10-07 Ilya Leoshkevich <iii@linux.ibm.com>
PR target/77918
* optabs-tree.c (vcond_icode_p): New function.
(vcond_eq_icode_p): Likewise.
(expand_vec_cond_expr_p): Use vcond_icode_p and
vcond_eq_icode_p.
* optabs.c (can_vcond_compare_p): New function.
* optabs.h (can_vcond_compare_p): Likewise.
From-SVN: r276660
Ilya Leoshkevich [Mon, 7 Oct 2019 14:59:00 +0000 (14:59 +0000)]
Allow COND_EXPR and VEC_COND_EXPR condtions to trap
Right now gimplifier does not allow VEC_COND_EXPR's condition to trap
and introduces a temporary if this could happen, for example, generating
_5 = _4 > { 2.0e+0, 2.0e+0, 2.0e+0, 2.0e+0 };
_6 = VEC_COND_EXPR <_5, { -1, -1, -1, -1 }, { 0, 0, 0, 0 }>;
from GENERIC
VEC_COND_EXPR < (*b > { 2.0e+0, 2.0e+0, 2.0e+0, 2.0e+0 }) ,
{ -1, -1, -1, -1 } ,
{ 0, 0, 0, 0 } >
This is not necessary and makes the resulting GIMPLE harder to analyze.
Change the gimplifier so as to allow COND_EXPR and VEC_COND_EXPR
conditions to trap.
This patch takes special care to avoid introducing trapping comparisons
in GIMPLE_COND. They are not allowed, because they would require 3
outgoing edges (then, else and EH), which is awkward to say the least.
Therefore, computations of such conditions should live in their own basic
blocks.
gcc/ChangeLog:
2019-10-07 Ilya Leoshkevich <iii@linux.ibm.com>
PR target/77918
* gimple-expr.c (gimple_cond_get_ops_from_tree): Assert that the
caller passes a non-trapping condition.
(is_gimple_condexpr): Allow trapping conditions.
(is_gimple_condexpr_1): New helper function.
(is_gimple_condexpr_for_cond): New function, acts like old
is_gimple_condexpr.
* gimple-expr.h (is_gimple_condexpr_for_cond): New function.
* gimple.c (gimple_could_trap_p_1): Handle COND_EXPR and
VEC_COND_EXPR. Fix an issue with statements like i = (fp < 1.).
* gimplify.c (gimplify_cond_expr): Use
is_gimple_condexpr_for_cond.
(gimplify_expr): Allow is_gimple_condexpr_for_cond.
* tree-eh.c (operation_could_trap_p): Assert on COND_EXPR and
VEC_COND_EXPR.
(tree_could_trap_p): Handle COND_EXPR and VEC_COND_EXPR.
* tree-ssa-forwprop.c (forward_propagate_into_gimple_cond): Use
is_gimple_condexpr_for_cond, remove pointless tmp check
(forward_propagate_into_cond): Remove pointless tmp check.
From-SVN: r276659
Vladislav Ivanishin [Mon, 7 Oct 2019 14:29:07 +0000 (14:29 +0000)]
Make gsi_next_nonvirtual_phi do what one expects
gcc/
* gimple-iterator.h (gsi_next_nonvirtual_phi): Change the semantics to
match that of other gsi_next_* functions. Adjust the comment.
(gsi_start_nonvirtual_phis): New function.
* ipa-icf.c (sem_function::compare_phi_node): Update uses of
gsi_next_nonvirtual_phi accordingly. (No functional change.)
From-SVN: r276658
Vladislav Ivanishin [Mon, 7 Oct 2019 14:19:30 +0000 (14:19 +0000)]
[doc] -Wuninitialized doesn't do -Wclobbered's job
* gcc/doc/invoke.texi (-Wuninitialized): Don't mention the clobbered by
setjmp situation here. Fix a verb's ending: "the exact variables or
elements for which there are warnings depends" -> "... depend".
From-SVN: r276657
Aldy Hernandez [Mon, 7 Oct 2019 11:53:40 +0000 (11:53 +0000)]
* ipa-prop.c (ipa_vr::nonzero_p): Add TYPE_UNSIGNED check.
From-SVN: r276655
Aldy Hernandez [Mon, 7 Oct 2019 11:43:13 +0000 (11:43 +0000)]
Disentangle range_fold_*ary_expr() into various independent pieces.
From-SVN: r276654
Aldy Hernandez [Mon, 7 Oct 2019 09:39:42 +0000 (09:39 +0000)]
Use value_range_base::num_pairs instead of vrp_val_is* to check if a range
has one sub-range.
From-SVN: r276653
Mark Eggleston [Mon, 7 Oct 2019 09:13:16 +0000 (09:13 +0000)]
Delete auto-in_equiv.f90 forgot to use svn delete the first time.
From-SVN: r276651
Richard Sandiford [Mon, 7 Oct 2019 08:39:12 +0000 (08:39 +0000)]
[IRA] Handle fully-tied destinations in a similar way to earlyclobbers
IRA's make_early_clobber_and_input_conflicts checks for cases in
which an output operand is likely to be an earlyclobber and an input
operand is unlikely to be tieable with it. If so, the allocno for
the output conflicts with the allocno for the input. This seems
to work well.
However, a similar situation arises if an output operand is likely
to be tied to one of a set of input operands X and if another input
operand has a different value from all of the operands in X.
E.g. if we have:
0: "=r, r"
1: "0, r"
2: "r, 0"
3: "r, r"
operand 0 will always be tied to operand 1 or operand 2, so if operand 3
is different from them both, operand 0 acts like an earlyclobber as far
as operand 3 (only) is concerned. The same is true for operand 2 in:
0: "=r"
1: "0"
2: "r"
In the second example, we'd normally have a copy between operand 1 and
operand 0 if operand 1 dies in the instruction, and so there's rarely
a problem. But if operand 1 doesn't die in the instruction, operand 0
still acts as an earlyclobber for operand 2 (if different from operand 1),
since in that case LRA must copy operand 1 to operand 0 before the
instruction.
As the existing comment says:
Avoid introducing unnecessary conflicts by checking classes of the
constraints and pseudos because otherwise significant code
degradation is possible for some targets.
I think that's doubly true here. E.g. it's perfectly reasonable to have
constraints like:
0: "=r, r"
1: "0, r"
2: "r, r"
on targets like s390 that have shorter instructions for tied operands,
but that don't want the size difference to influence RA too much.
We shouldn't treat operand 0 as earlyclobber wrt operand 2 in that case.
This patch therefore treats a normal tied non-earlyclobber output as
being effectively earlyclobber wrt to an input if it is so for *all*
preferred alternatives.
2019-10-07 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* ira-lives.c (check_and_make_def_conflict): Handle cases in which
DEF is not a true earlyclobber but is tied to a specific input
operand, and so is effectively earlyclobber wrt inputs that have
different values.
(make_early_clobber_and_input_conflicts): Pass this case to the above.
From-SVN: r276650
Richard Sandiford [Mon, 7 Oct 2019 08:38:49 +0000 (08:38 +0000)]
Use CONSTEXPR in machmode.h
This patch adds CONSTEXPR to constructors and operators in machmode.h,
excluding the controversial constexpr-resistant "() {}" constructors,
which would become "= default" if we required C++11.
Some of the other routines could potentially be constexpr too,
but that can be done on an as-needed basis.
2019-10-07 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* machmode.h (opt_mode): Mark constructors with CONSTEXPR.
(pod_mode): Mark operators likewise.
(scalar_int_mode): Mark non-default constructors and
operators with CONSTEXPR.
(scalar_float_mode, scalar_mode, complex_mode): Likewise.
(fixed_size_mode): Likewise.
From-SVN: r276649
Richard Sandiford [Mon, 7 Oct 2019 08:36:06 +0000 (08:36 +0000)]
[i386] Make the vzeroupper pattern describe its effects (PR91994)
The problem in this PR was that vzeroupper has an effect on register
contents, but those effects weren't modelled in the rtl pattern,
which was just an unspec_volatile.
This patch fixes that by running a subpass after vzeroupper insertion
to add SETs and CLOBBERs as appropriate. See the comments in the patch
for more details.
2019-10-07 Richard Sandiford <richard.sandiford@arm.com>
gcc/
PR target/91994
* config/i386/sse.md (avx_vzeroupper): Turn into a define_expand
and wrap the unspec_volatile in a parallel.
(*avx_vzeroupper): New define_insn. Use a match_parallel around
the unspec_volatile.
* config/i386/predicates.md (vzeroupper_pattern): Expect the
unspec_volatile to be wrapped in a parallel.
* config/i386/i386-features.c (ix86_add_reg_usage_to_vzeroupper)
(ix86_add_reg_usage_to_vzerouppers): New functions.
(rest_of_handle_insert_vzeroupper): Use them to add register
usage information to the vzeroupper instructions.
gcc/testsuite/
PR target/91994
* gcc.target/i386/pr91994.c: New test.
From-SVN: r276648
Richard Biener [Mon, 7 Oct 2019 07:53:45 +0000 (07:53 +0000)]
re PR tree-optimization/91975 (worse code for small array copy using pointer arithmetic than array indexing)
2019-10-07 Richard Biener <rguenther@suse.de>
PR tree-optimization/91975
* tree-ssa-loop-ivcanon.c (constant_after_peeling): Consistently
handle invariants.
* g++.dg/tree-ssa/ivopts-3.C: Adjust.
* gcc.dg/vect/vect-profile-1.c: Disable cunrolli.
* gcc.dg/vect/vect-double-reduc-6.c: Disable unrolling of
the innermost loop.
* gcc.dg/vect/vect-93.c: Likewise.
* gcc.dg/vect/vect-105.c: Likewise.
* gcc.dg/vect/pr79920.c: Likewise.
* gcc.dg/vect/no-vfa-vect-102.c: Likewise.
* gcc.dg/vect/no-vfa-vect-101.c: Likewise.
* gcc.dg/vect/pr83202-1.c: Operate on a larger array.
* gfortran.dg/vect/vect-8.f90: Likewise.
* gcc.dg/tree-ssa/cunroll-2.c: Scan early unrolling dump instead
of late one.
From-SVN: r276645
GCC Administrator [Mon, 7 Oct 2019 00:16:24 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r276644
François Dumont [Sun, 6 Oct 2019 15:53:51 +0000 (15:53 +0000)]
Add std::copy_n istreambuf_iterator specialization
Commit this missing part which had been rejected.
From-SVN: r276640
Richard Sandiford [Sun, 6 Oct 2019 15:39:27 +0000 (15:39 +0000)]
Fix EXECUTE_IF_SET_IN_HARD_REG_SET use
As Maxim pointed out, r276309 broke -O3 bootstrap for aarch64-linux-gnu.
It turns out that EXECUTE_IF_SET_IN_HARD_REG_SET isn't safe to use for
temporary objects because their lifetimes don't extend to the end of
the loop. This patch therefore uses an explicit temporary instead.
Other patches in the series already used this style (but for
full_reg_and_partial_clobbers rather than full_reg_clobbers),
so AFAICT this is the only place that needs fixing.
2019-10-06 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* var-tracking.c (dataflow_set_clear_at_call): Hoist temporary
function result outside of EXECUTE_IF_SET_IN_HARD_REG_SET.
From-SVN: r276639
François Dumont [Sun, 6 Oct 2019 15:29:04 +0000 (15:29 +0000)]
Add std::copy_n istreambuf_iterator specialization
* include/bits/stl_algo.h
(__copy_n_a(_IIte, _Size, _OIte)): New.
(__copy_n_a(istreambuf_iterator<>, _Size, _CharT*)): New declaration.
(__copy_n(_IIte, _Size, _OIte, input_iterator_tag)): Adapt to use
latter.
* include/bits/streambuf_iterator.h (istreambuf_iterator<>): Declare
std::__copy_n_a friend.
(__copy_n_a(istreambuf_iterator<>, _Size, _CharT*)): New.
* testsuite/25_algorithms/copy_n/istreambuf_iterator/1.cc: New.
* testsuite/25_algorithms/copy_n/istreambuf_iterator/1_neg.cc: New.
* testsuite/25_algorithms/copy_n/istreambuf_iterator/2_neg.cc: New.
From-SVN: r276638
François Dumont [Sun, 6 Oct 2019 15:10:40 +0000 (15:10 +0000)]
Add C++11 __iterator_category_t template alias.
* include/bits/stl_iterator_base_types.h (__iterator_category_t): Define
for C++11.
(_RequireInputIte): Likewise and use __enable_if_t.
* include/std/numeric
(__is_random_access_iter): Use __iterator_category_t.
From-SVN: r276637
François Dumont [Sun, 6 Oct 2019 10:29:35 +0000 (10:29 +0000)]
Add std::copy_n __glibcxx_requires_can_increment checks.
* include/bits/stl_algo.h (copy_n): Add __glibcxx_requires_can_increment
debug checks.
* testsuite/25_algorithms/copy_n/debug/1_neg.cc: New.
* testsuite/25_algorithms/copy_n/debug/2_neg.cc: New.
From-SVN: r276636
Iain Sandoe [Sun, 6 Oct 2019 08:02:03 +0000 (08:02 +0000)]
[Darwin] Fix some format-related build warnings.
This fixes two error messages to avoid punctuation and contracted
negations.
gcc/ChangeLog:
2019-10-06 Iain Sandoe <iain@sandoe.co.uk>
* config/darwin.c (darwin_override_options): Adjust objective-c
ABI version error messages to avoid punctuation and contracted
negations.
From-SVN: r276635
GCC Administrator [Sun, 6 Oct 2019 00:16:37 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r276634
Steven G. Kargl [Sat, 5 Oct 2019 22:40:07 +0000 (22:40 +0000)]
2019-0105 Steven G. Kargl <kargl@gcc.gnu.org>
In my previous commit, I managed to include a duplicate copy
of the ChangeLog file. This commit removes the duplicate
portion.
From-SVN: r276630
Jan Hubicka [Sat, 5 Oct 2019 21:36:46 +0000 (23:36 +0200)]
ipa-inline.c: Fix type; compute size rather than self_size for size of caller function.
* ipa-inline.c: Fix type; compute size rather than self_size
for size of caller function.
From-SVN: r276629
Steven G. Kargl [Sat, 5 Oct 2019 15:23:26 +0000 (15:23 +0000)]
re PR fortran/47054 (Compilation error when cray pointers are declared in both host and internal subroutines)
2019-10-05 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/47045
* decl.c (variable_decl): Do not search parent namespace for symbol.
2019-10-05 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/47045
* gfortran.dg/pr47054_1.f90: New test
* gfortran.dg/pr47054_2.f90: Ditto.
From-SVN: r276627
Steven G. Kargl [Sat, 5 Oct 2019 14:27:26 +0000 (14:27 +0000)]
re PR fortran/91497 (-Wconversion warns when doing explicit type conversion)
2019-10-05 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91497
* gfortran.dg/pr91497.f90: Run on i?86-*-* and x86_64-*-* only.
From-SVN: r276626
Paul Thomas [Sat, 5 Oct 2019 08:17:55 +0000 (08:17 +0000)]
re PR fortran/91926 (assumed rank optional)
2019-10-05 Paul Thomas <pault@gcc.gnu.org>
PR fortran/91926
* trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Correct the
assignment of the attribute field to account correctly for an
assumed shape dummy. Assign separately to the gfc and cfi
descriptors since the atribute can be different. Add btanch to
correctly handle missing optional dummies.
2019-10-05 Paul Thomas <pault@gcc.gnu.org>
PR fortran/91926
* gfortran.dg/ISO_Fortran_binding_13.f90 : New test.
* gfortran.dg/ISO_Fortran_binding_13.c : Additional source.
* gfortran.dg/ISO_Fortran_binding_14.f90 : New test.
2019-10-05 Paul Thomas <pault@gcc.gnu.org>
PR fortran/91926
* runtime/ISO_Fortran_binding.c (cfi_desc_to_gfc_desc): Do not
modify the bounds and offset for CFI_other.
From-SVN: r276624
Iain Sandoe [Sat, 5 Oct 2019 08:05:44 +0000 (08:05 +0000)]
[Darwin] Amend section for constants with reloactions.
Darwin's linker doesn't like text section relocations (they require special
enabling). At least, the Fortran FE seems to generate cases where the
initialiser for a pointer constant can need a relocation. We can handle
this by special-casing SECCAT_RODATA when the relocation is present by
placing the constant in the .const_data section.
gcc/ChangeLog:
2019-10-05 Iain Sandoe <iain@sandoe.co.uk>
PR target/59888
* config/darwin.c (darwin_rodata_section): Add relocation flag,
choose const_data section for constants with relocations.
(machopic_select_section): Pass relocation flag to
darwin_rodata_section ().
From-SVN: r276623
Jakub Jelinek [Sat, 5 Oct 2019 07:38:21 +0000 (09:38 +0200)]
PR c++/91369 - Implement P0784R7: constexpr new
PR c++/91369 - Implement P0784R7: constexpr new
c-family/
* c-cppbuiltin.c (c_cpp_builtins): Predefine
__cpp_constexpr_dynamic_alloc=201907 for -std=c++2a.
cp/
* cp-tree.h (enum cp_tree_index): Add CPTI_HEAP_UNINIT_IDENTIFIER,
CPTI_HEAP_IDENTIFIER and CPTI_HEAP_DELETED_IDENTIFIER.
(heap_uninit_identifier, heap_identifier, heap_deleted_identifier):
Define.
(type_has_constexpr_destructor, build_new_constexpr_heap_type,
cxx_constant_dtor): Declare.
* class.c (type_maybe_constexpr_default_constructor): Make static.
(type_maybe_constexpr_destructor, type_has_constexpr_destructor): New
functions.
(finalize_literal_type_property): For c++2a, don't clear
CLASSTYPE_LITERAL_P for types without trivial destructors unless they
have non-constexpr destructors.
(explain_non_literal_class): For c++2a, complain about non-constexpr
destructors rather than about non-trivial destructors.
* constexpr.c: Include stor-layout.h.
(struct constexpr_global_ctx): New type.
(struct constexpr_ctx): Add global field, remove values and
constexpr_ops_count.
(cxx_replaceable_global_alloc_fn): New inline function.
(cxx_eval_call_expression): For c++2a allow calls to replaceable
global allocation functions, for new return address of a heap uninit
var, for delete record its deletion. Change ctx->values->{get,put} to
ctx->global->values.{get,put}.
(non_const_var_error): Add auto_diagnostic_group sentinel. Emit
special diagnostics for heap variables.
(cxx_eval_store_expression): Change ctx->values->{get,put} to
ctx->global->values.{get,put}.
(cxx_eval_loop_expr): Initialize jump_target if NULL. Change
new_ctx.values->remove to ctx->global->values.remove.
(cxx_eval_constant_expression): Change *ctx->constexpr_ops_count
to ctx->global->constexpr_ops_count. Change ctx->values->{get,put} to
ctx->global->values.{get,put}.
<case NOP_EXPR>: Formatting fix. On cast of replaceable global
allocation function to some pointer type, adjust the type of
the heap variable and change name from heap_uninit_identifier
to heap_identifier.
(find_heap_var_refs): New function.
(cxx_eval_outermost_constant_expr): Add constexpr_dtor argument,
handle evaluation of constexpr dtors and add tracking of heap
variables. Use tf_no_cleanup for get_target_expr_with_sfinae.
(cxx_constant_value): Adjust cxx_eval_outermost_constant_expr caller.
(cxx_constant_dtor): New function.
(maybe_constant_value, fold_non_dependent_expr_template,
maybe_constant_init_1): Adjust cxx_eval_outermost_constant_expr
callers.
(potential_constant_expression_1): Ignore clobbers. Allow
COND_EXPR_IS_VEC_DELETE for c++2a.
* decl.c (initialize_predefined_identifiers): Add heap identifiers.
(decl_maybe_constant_destruction): New function.
(cp_finish_decl): Don't clear TREE_READONLY for constexpr variables
with non-trivial, but constexpr destructors.
(register_dtor_fn): For constexpr variables with constexpr non-trivial
destructors call cxx_maybe_build_cleanup instead of adding destructor
calls at runtime.
(expand_static_init): For constexpr variables with constexpr
non-trivial destructors call cxx_maybe_build_cleanup.
(grokdeclarator): Allow constexpr destructors for c++2a. Formatting
fix.
(cxx_maybe_build_cleanup): For constexpr variables with constexpr
non-trivial destructors call cxx_constant_dtor instead of adding
destructor calls at runtime.
* init.c: Include stor-layout.h.
(build_new_constexpr_heap_type, maybe_wrap_new_for_constexpr): New
functions.
(build_new_1): For c++2a and new[], add cast around the alloc call
to help constexpr evaluation figure out the type of the heap storage.
(build_vec_delete_1): Set DECL_INITIAL of tbase and emit a DECL_EXPR
for it instead of initializing an uninitialized variable.
* method.c: Include intl.h.
(SFK_CTOR_P, SFK_DTOR_P, SFK_ASSIGN_P, SFK_COPY_P, SFK_MOVE_P): Move
definitions earlier.
(process_subob_fn): Add sfk argument, adjust non-constexpr call
diagnostics based on it.
(walk_field_subobs): Formatting fixes. Adjust process_subob_fn caller.
(synthesized_method_base_walk): Likewise.
(synthesized_method_walk): Set *constexpr_p to true for dtors in c++2a.
Fix up DR number in comment.
(implicitly_declare_fn): Formatting fix.
* typeck2.c (store_init_value): Don't call cp_fully_fold_init on
initializers of automatic non-constexpr variables in constexpr
functions.
testsuite/
* g++.dg/cpp0x/constexpr-delete2.C: Adjust expected diagnostics for
c++2a.
* g++.dg/cpp0x/locations1.C: Only expect constexpr ~S() diagnostics
in c++17_down, adjust expected wording.
* g++.dg/cpp1y/constexpr-new.C: Only expect diagnostics in c++17_down.
* g++.dg/cpp2a/constexpr-dtor1.C: New test.
* g++.dg/cpp2a/constexpr-dtor2.C: New test.
* g++.dg/cpp2a/constexpr-dtor3.C: New test.
* g++.dg/cpp2a/constexpr-new1.C: New test.
* g++.dg/cpp2a/constexpr-new2.C: New test.
* g++.dg/cpp2a/constexpr-new3.C: New test.
* g++.dg/cpp2a/constexpr-new4.C: New test.
* g++.dg/cpp2a/feat-cxx2a.C: Add __cpp_constinit and
__cpp_constexpr_dynamic_alloc tests. Tweak __cpp_* tests for c++2a
features to use style like older features, including #ifdef test.
* g++.dg/ext/is_literal_type3.C: New test.
From-SVN: r276622
Jakub Jelinek [Sat, 5 Oct 2019 07:36:09 +0000 (09:36 +0200)]
re PR tree-optimization/91734 (gcc skip an if statement with "-O1 -ffast-math")
PR tree-optimization/91734
* generic-match-head.c: Include fold-const-call.h.
* match.pd (sqrt(x) cmp c): Check the boundary value and
in case inexact computation of c*c affects comparison of the boundary,
turn LT_EXPR into LE_EXPR, GE_EXPR into GT_EXPR, LE_EXPR into LT_EXPR
or GT_EXPR into GE_EXPR. Punt for sqrt comparisons against NaN and
for -frounding-math. For c2, try the next smaller or larger floating
point constant depending on comparison code and if it has the same
sqrt as c2, use it instead of c2.
* gcc.dg/pr91734.c: New test.
From-SVN: r276621
GCC Administrator [Sat, 5 Oct 2019 00:16:20 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r276618
Joseph Myers [Fri, 4 Oct 2019 21:56:14 +0000 (22:56 +0100)]
Add strftime format checking support for C2x %OB and %Ob (bug 82752).
C2x adds strftime %OB and %Ob formats, for alternative forms of month
names (for mainly Slavic languages where a month name on its own is
declined differently from a month name together with a date within
that month). This patch adds corresponding format checking support.
(glibc support for these formats was added in glibc 2.27.)
Bootstrapped with no regressions on x86_64-pc-linux-gnu.
PR c/82752
gcc/c-family:
* c-format.c (C_STD_VER): Handle C2x.
(C_STD_NAME): Likewise.
(strftime_flag_specs): Add 'O' modifier with 'p' flag.
(time_char_table): Use separate entry for 'B' and 'b', with 'O'
modifier allowed and 'p' flag.
* c-format.h (enum format_std_version): Add STD_C2X.
(struct format_char_info): Mention 'p' in comment on flags2.
gcc/testsuite:
* gcc.dg/format/c2x-strftime-1.c: New test.
From-SVN: r276605
Martin Sebor [Fri, 4 Oct 2019 21:29:41 +0000 (21:29 +0000)]
PR middle-end/91977 - missing -Wstringop-overflow on memcpy into a pointer plus offset
gcc/ChangeLog:
PR middle-end/91977
* tree-ssa-strlen.c (count_nonzero_bytes): Handle assignments with
MEM_REF right operand. Avoid failing for MEM_REF assignments from
uninitialized objects.
gcc/testsuite/ChangeLog:
PR middle-end/91977
* gcc.dg/Wstringop-overflow-18.c: New test.
From-SVN: r276603
Martin Sebor [Fri, 4 Oct 2019 21:26:27 +0000 (21:26 +0000)]
builtins.c (compute_objsize): Add an argument.
gcc/ChangeLog:
* builtins.c (compute_objsize): Add an argument.
* tree-object-size.c (addr_object_size): Same.
(compute_builtin_object_size): Same.
* tree-object-size.h (compute_builtin_object): Same.
gcc/testsuite/ChangeLog:
* gcc.dg/Wstringop-overflow-17.c: New test.
From-SVN: r276602
Steven G. Kargl [Fri, 4 Oct 2019 21:21:21 +0000 (21:21 +0000)]
PR fortran.91959
2019-10-04 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran.91959
* fortran/decl.c (variable_decl): Re-arrange code for matching %FILL.
2019-10-04 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran.91959
* gfortran.dg/pr91959.f90: New test.
From-SVN: r276601
François Dumont [Fri, 4 Oct 2019 20:22:11 +0000 (20:22 +0000)]
Improve _GLIBCXX_DEBUG safe iterator range size computation.
* include/debug/forward_list
(_Sequence_traits<__debug::forward_list<>>::_S_size): Returns __dp_sign
distance when not empty.
* include/debug/list (_Sequence_traits<__debug::list<>>::_S_size):
Likewise.
* include/debug/helper_functions.h (__dp_sign_max_size): New
_Distance_precision enum entry.
(__valid_range_aux(_IIte, _IIte, _Distance_traits<>::__type,
__false_type)): Adapt.
* include/debug/safe_iterator.tcc
(_Safe_iterator<>::_M_get_distance_to(const _Safe_iterator&)): Review
distance computation.
From-SVN: r276600
Jan Hubicka [Fri, 4 Oct 2019 19:10:39 +0000 (21:10 +0200)]
* ipa-inline.c (inline_insns_single, inline_insns_auto): Fix typo.
From-SVN: r276597
Nathan Sidwell [Fri, 4 Oct 2019 19:08:09 +0000 (19:08 +0000)]
[preprocessor/91991] column location overflow
https://gcc.gnu.org/ml/gcc-patches/2019-10/msg00371.html
PR preprocessor/91991
* line-map.c (linemap_line_start): Clear max_column_hint if we run
out of locations.
From-SVN: r276596
Rafael Tsuha [Fri, 4 Oct 2019 18:34:29 +0000 (18:34 +0000)]
match.pd (sinh (x) / cosh (x)): New simplification rule.
* match.pd (sinh (x) / cosh (x)): New simplification rule.
* gcc.dg/sinhovercosh-1.c: New test.
From-SVN: r276595
Ian Lance Taylor [Fri, 4 Oct 2019 18:14:30 +0000 (18:14 +0000)]
compiler: include selected constant types during export processing
The machinery that collects types referenced by expressions that are
part of inlinable function bodies was missing the types of local named
constants in certain cases. This patch updates the
Collect_export_references::expression() hook to look for references to
local named constants and include their types in the exported set.
Fixes golang/go#34577.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/198017
From-SVN: r276594
Martin Jambor [Fri, 4 Oct 2019 16:25:02 +0000 (18:25 +0200)]
Add missing gimple_call_set_fntype
2019-10-04 Martin Jambor <mjambor@suse.cz>
* tree-ssa-forwprop.c (simplify_builtin_call): Set gimple call
fntype when switching to calling memcpy instead of memset.
From-SVN: r276593
Bernd Edlinger [Fri, 4 Oct 2019 16:22:28 +0000 (16:22 +0000)]
hash-table.h (hash_table::empty_slow): Don't assign size_t values to int variables.
2019-10-04 Bernd Edlinger <bernd.edlinger@hotmail.de>
* hash-table.h (hash_table::empty_slow): Don't assign
size_t values to int variables.
From-SVN: r276592
Bernd Edlinger [Fri, 4 Oct 2019 16:21:11 +0000 (16:21 +0000)]
expr.c (convert_mode_scalar): Remove shadowing local var.
2019-10-04 Bernd Edlinger <bernd.edlinger@hotmail.de>
* expr.c (convert_mode_scalar): Remove shadowing local var.
(emit_block_move): Rename local vars.
(block_move_libcall_safe_for_call_parm): Remove shadowing local var.
(emit_push_insn): Rename local vars.
(expand_assignment): Fix wrong mode in assign_stack_temp. Remove
shadowing local vars.
(store_constructor): Remove shadowing local vars. Rename local var.
(store_field, expand_cond_expr_using_cmove,
expand_expr_real_2): Remove shadowing local vars.
(expand_expr_real_1,
do_store_flag): Remove shadowing local vars. Rename local vars.
From-SVN: r276591
Bernd Edlinger [Fri, 4 Oct 2019 16:18:22 +0000 (16:18 +0000)]
cgraph.h (FOR_EACH_ALIAS): Avoid shadowing the loop variable.
2019-10-04 Bernd Edlinger <bernd.edlinger@hotmail.de>
* cgraph.h (FOR_EACH_ALIAS): Avoid shadowing the loop variable.
From-SVN: r276590
Bernd Edlinger [Fri, 4 Oct 2019 16:15:00 +0000 (16:15 +0000)]
genmatch.c (commutate): Rename local var.
2019-10-04 Bernd Edlinger <bernd.edlinger@hotmail.de>
* genmatch.c (commutate): Rename local var.
(lower_cond): Reuse local var.
(dt_node::gen, dt_node::gen_kids, dt_node::gen_kids_1,
dt_operand::gen, dt_operand::gen_gimple_expr,
dt_simplify::gen): Add a param. Rename generated vars.
(decision_tree::insert_operand,
(capture_info::walk_match, capture_info::walk_result,
capture_info::walk_c_expr): Rename local vars.
(expr::gen_transform): Rename generated vars.
Use snprintf. Rename local vars.
(capture::gen_transform, dt_operand::get_name,
dt_operand::gen_opname): Rename generated vars.
(write_predicate): Adjust call to gen_kids.
(parser::get_internal_capture_id): Rename generated vars.
(parser::parse_expr): Rename local vars.
(parser::parse_if): Remove local var.
(parser::parse_pattern, add_operator): Rename local vars.
From-SVN: r276589
Joseph Myers [Fri, 4 Oct 2019 16:08:06 +0000 (17:08 +0100)]
Mark C2x built-in functions as such.
Various built-in functions that GCC has as extensions are now standard
functions in C2x. This patch adds DEF_C2X_BUILTIN and uses it to mark
them as such. Some of the so-marked functions were previously
DEF_EXT_LIB_BUILTIN, while some DFP ones were DEF_GCC_BUILTIN
(i.e. __builtin_* only); both sets become DEF_C2X_BUILTIN. This in
turn requires flag_isoc2x to be defined in various front ends using
builtins.def.
As the semantics of the built-in functions should already be tested,
the tests added only verify that they are declared in C2x mode but not
in C11 mode. The test of DFP built-in functions being declared for
C2x goes in gcc.dg/dfp/, as while such built-in functions currently
don't depend on whether DFP is supported, that looks like a bug to me
(see bug 91985), so it seems best for the tests not to depend on
exactly how that bug might be fixed.
Bootstrapped with no regressions on x86_64-pc-linux-gnu.
gcc:
* builtins.def (DEF_C2X_BUILTIN): New macro.
(exp10, exp10f, exp10l, fabsd32, fabsd64, fabsd128, nand32)
(nand64, nand128, roundeven, roundevenf, roundevenl, strdup)
(strndup): Use DEF_C2X_BUILTIN.
* coretypes.h (enum function_class): Add function_c2x_misc.
gcc/ada:
* gcc-interface/utils.c (flag_isoc2x): New variable.
gcc/brig:
* brig-lang.c (flag_isoc2x): New variable.
gcc/lto:
* lto-lang.c (flag_isoc2x): New variable.
gcc/testsuite:
* gcc.dg/c11-builtins-1.c, gcc.dg/c2x-builtins-1.c,
gcc.dg/dfp/c2x-builtins-dfp-1.c: New tests.
From-SVN: r276588
Maya Rashish [Fri, 4 Oct 2019 15:43:07 +0000 (15:43 +0000)]
ira-color.c (update_costs_from_allocno): Call ira_init_register_move_cost_if_necessary.
* ira-color.c (update_costs_from_allocno): Call
ira_init_register_move_cost_if_necessary.
From-SVN: r276587
Jonathan Wakely [Fri, 4 Oct 2019 15:08:23 +0000 (16:08 +0100)]
Build filesystem library with large file support
Enable AC_SYS_LARGEFILE to set the macros needed for large file APIs to
be used by default. We do not want to define those macros in the
public headers that users include. The values of the macros are copied
to a separate file that is only included by the filesystem sources
during the build, and then the macros in <bits/c++config.h> are renamed
so that they don't have any effect in user code including our headers.
Also use larger type for result of filesystem::file_size to avoid
truncation of large values on 32-bit systems (PR 91947).
PR libstdc++/81091
PR libstdc++/91947
* configure.ac: Use AC_SYS_LARGEFILE to enable 64-bit file APIs.
* config.h.in: Regenerate:
* configure: Regenerate:
* include/Makefile.am (${host_builddir}/largefile-config.h): New
target to generate config header for filesystem library.
(${host_builddir}/c++config.h): Rename macros for large file support.
* include/Makefile.in: Regenerate.
* src/c++17/fs_dir.cc: Include new config header.
* src/c++17/fs_ops.cc: Likewise.
(filesystem::file_size): Use uintmax_t for size.
* src/filesystem/dir.cc: Include new config header.
* src/filesystem/ops.cc: Likewise.
(experimental::filesystem::file_size): Use uintmax_t for size.
From-SVN: r276585
Jonathan Wakely [Fri, 4 Oct 2019 15:08:14 +0000 (16:08 +0100)]
Replace uses of std::tr1::unordered_map in testsuite
* testsuite/util/testsuite_abi.h: Use std::unordered_map instead of
std::tr1::unordered_map.
* testsuite/util/testsuite_allocator.h: Likewise.
From-SVN: r276584
Jeff Law [Fri, 4 Oct 2019 14:45:46 +0000 (08:45 -0600)]
h8300.md (cpymemsi): Disable.
* config/h8300/h8300.md (cpymemsi): Disable.
(movmd, movmd_internal_<mode>, movstr, movsd):
(movstr, movsd, stpcpy_internal_<mode>: Likewise.
(movmd splitter, movsd splitter): Likewise.
From-SVN: r276582
Jeff Law [Fri, 4 Oct 2019 14:27:45 +0000 (08:27 -0600)]
range-op.cc (range_tests): Avoid two tests when ints and shorts are the same size.
* range-op.cc (range_tests): Avoid two tests when ints and
shorts are the same size.
From-SVN: r276581
Mark Eggleston [Fri, 4 Oct 2019 14:11:36 +0000 (14:11 +0000)]
Replace test cases for using automatic variables in equivalence statements.
From-SVN: r276580
Ian Lance Taylor [Fri, 4 Oct 2019 13:50:07 +0000 (13:50 +0000)]
compiler: adjust code to avoid shadowing local variables
Also add a couple of missing calls to free after mpz_get_str.
This should make the code clean with respect to -Wshadow=local.
Based on patch by Bernd Edlinger.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/198837
From-SVN: r276579
Richard Sandiford [Fri, 4 Oct 2019 13:27:53 +0000 (13:27 +0000)]
Fix gcc.target/aarch64/torture/simd-abi-8.c for big-endian
Fix a big-endian failure reported by Christophe. Also tighten the
test so that it doesn't allow saving and restoring 128-bit vectors
as Q registers.
2019-10-04 Richard Sandiford <richard.sandiford@arm.com>
gcc/testsuite/
* gcc.target/aarch64/torture/simd-abi-8.c: Use -mlittle-endian.
Check that there are no Q register saves or restores.
From-SVN: r276577
Jonathan Wakely [Fri, 4 Oct 2019 13:17:54 +0000 (14:17 +0100)]
Add missing header required by previous change
* include/tr1/hashtable.h: Add header for __gnu_cxx::__alloc_traits.
From-SVN: r276576
Jonathan Wakely [Fri, 4 Oct 2019 12:17:01 +0000 (13:17 +0100)]
Adjust tr1::_Hashtable to work with std::allocator in C++20
In C++20 std::allocator will no longer define construct and destroy
member functions, so using them needs to go via allocator_traits.
* include/tr1/hashtable.h (tr1::_Hashtable::_M_allocate_node): Use
__gnu_cxx::__alloc_traits for allocator construct function.
(tr1::_Hashtable::_M_deallocate_node): Likewise for destroy function.
From-SVN: r276575
Jonathan Wakely [Fri, 4 Oct 2019 12:16:56 +0000 (13:16 +0100)]
Add <span> to <bits/stdc++.h> precompiled header
* include/precompiled/stdc++.h: Include <span> for C++20.
* testsuite/17_intro/names.cc: Do not define 'e' for C++20.
From-SVN: r276574
Richard Biener [Fri, 4 Oct 2019 11:40:40 +0000 (11:40 +0000)]
loop-3.c: Fix undefined behavior.
2019-10-04 Richard Biener <rguenther@suse.de>
* gcc.c-torture/execute/loop-3.c: Fix undefined behavior.
From-SVN: r276572