H.J. Lu [Fri, 14 Jun 2019 16:24:56 +0000 (16:24 +0000)]
Update preferred_stack_boundary only when expanding function call
locate_and_pad_parm is called when expanding function call from
initialize_argument_information and when generating function body
from assign_parm_find_entry_rtl:
/* Remember if the outgoing parameter requires extra alignment on the
calling function side. */
if (crtl->stack_alignment_needed < boundary)
crtl->stack_alignment_needed = boundary;
if (crtl->preferred_stack_boundary < boundary)
crtl->preferred_stack_boundary = boundary;
stack_alignment_needed and preferred_stack_boundary should be updated
only when expanding function call, not when generating function body.
Add update_stack_alignment_for_call to update stack alignment when
outgoing parameter is passed in the stack.
gcc/
PR rtl-optimization/90765
* calls.c (update_stack_alignment_for_call): New function.
(expand_call): Call update_stack_alignment_for_call when
outgoing parameter is passed in the stack.
(emit_library_call_value_1): Likewise.
* function.c (locate_and_pad_parm): Don't update
stack_alignment_needed and preferred_stack_boundary.
gcc/testsuite/
PR rtl-optimization/90765
* gcc.target/i386/pr90765-1.c: New test.
* gcc.target/i386/pr90765-2.c: Likewise.
From-SVN: r272296
Janne Blomqvist [Fri, 14 Jun 2019 16:05:54 +0000 (19:05 +0300)]
Use __builtin_mul_overflow in xmallocarray
As GCC now provides builtins for doing integer overflow checking, lets
use it when checking for overflow in xmallocarray.
Regtested on x86_64-pc-linux-gnu.
libgfortran/ChangeLog:
2019-06-14 Janne Blomqvist <jb@gcc.gnu.org>
* runtime/memory.c (SIZE_MAX):Remove macro definition.
(xmallocarray): Use __builtin_mul_overflow.
From-SVN: r272295
Hongtao Liu [Fri, 14 Jun 2019 15:41:43 +0000 (15:41 +0000)]
i386: Update SSE <-> integer move costs
Since inline_secondary_memory_needed has
/* ??? This is a lie. We do have moves between mmx/general, and for
mmx/sse2. But by saying we need secondary memory we discourage the
register allocator from using the mmx registers unless needed. */
if (MMX_CLASS_P (class1) != MMX_CLASS_P (class2))
return true;
moves between MMX and non-MMX units require secondary memory. There
is no need to check moves between MMX and integer units.
struct processor_costs has:
const int mmxsse_to_integer; /* cost of moving mmxsse register to
integer. */
const int ssemmx_to_integer; /* cost of moving integer to mmxsse register. */
This patch also renames mmxsse_to_integer to sse_to_integer and
ssemmx_to_integer to integer_to_sse.
Tested on Linux/x86-64.
PR target/90877
* config/i386/i386-features.c
(dimode_scalar_chain::compute_convert_gain): Replace
mmxsse_to_integer with sse_to_integer.
* config/i386/i386.c (ix86_register_move_cost): Verify that
moves between MMX and non-MMX units require secondary memory.
Correct costs of moves between SSE and integer units.
* config/i386/i386.h (processor_costs): Rename cost of moving
SSE register to integer to sse_to_integer. Rename cost of
moving integer register to SSE to integer_to_sse.
From-SVN: r272294
Marek Polacek [Fri, 14 Jun 2019 14:49:57 +0000 (14:49 +0000)]
PR c++/90884 - stray note with -Wctor-dtor-privacy.
* class.c (maybe_warn_about_overly_private_class): Guard the call to
inform.
* g++.dg/warn/ctor-dtor-privacy-4.C: New.
* g++.dg/warn/ctor-dtor-privacy-4.h: New.
From-SVN: r272291
Matt Thomas [Fri, 14 Jun 2019 14:04:20 +0000 (14:04 +0000)]
[NetBSD] Add support for the Arm EABI.
This is a roll-up of a set of changes needed to support the Arm EABI on NetBSD.
2019-06-14 Matt Thomas <matt@3am-software.com>
Matthew Green <mrg@eterna.com.au>
Nick Hudson <skrll@netbsd.org>
Maya Rashish <coypu@sdf.org>
Richard Earnshaw <rearnsha@arm.com>
gcc:
* config.gcc (arm*-*-netbsdelf*) Add support for EABI configuration.
* config.host (arm*-*-netbsd*): Use driver-arm.o on native NetBSD.
* config/arm/netbsd-eabi.h: New file.
* config/arm/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Undefine before
redefining.
(SUBTARGET_EXTRA_ASM_SPEC): Don't pass -matpcs to the assembler.
* config/netbsd-elf.h (NETBSD_LINK_LD_ELF_SO_SPEC): New define.
(NETBSD_SUBTARGET_EXTRA_SPECS): New define.
(SUBTARGET_EXTRA_SPECS): Define to NETBSD_SUBTARGET_EXTRA_SPECS.
libatomic:
* configure.tgt (arm*): Handle NetBSD in the same way as FreeBSD.
libgcc:
* config.host (arm*-*-netbsdelf*): Add support for EABI configurations.
* config/arm/t-netbsd (LIB1ASMFUNCS): Add some additional assembler
functions to build.
* config/arm/t-netbsd-eabi: New file.
Co-Authored-By: Matthew Green <mrg@eterna.com.au>
Co-Authored-By: Maya Rashish <coypu@sdf.org>
Co-Authored-By: Nick Hudson <skrll@netbsd.org>
Co-Authored-By: Richard Earnshaw <rearnsha@arm.com>
From-SVN: r272290
Jonathan Wakely [Fri, 14 Jun 2019 14:03:20 +0000 (15:03 +0100)]
Disable -Wctor-dtor-privacy warnings for some standard types
* include/experimental/type_traits (experimental::nonesuch): Use
pragma to disable -Wctor-dtor-privacy warnings.
* include/std/type_traits (__is_convertible_helper<From, To, false>)
(__is_nt_convertible_helper<From, To, false>, __nonesuch): Likewise.
From-SVN: r272289
Jonathan Wakely [Fri, 14 Jun 2019 14:03:16 +0000 (15:03 +0100)]
Add __cpp_lib_bind_front macro to <version> header
* include/std/version (__cpp_lib_bind_front): Add missing macro.
From-SVN: r272288
Jason Merrill [Fri, 14 Jun 2019 13:22:33 +0000 (09:22 -0400)]
PR c++/85552 - wrong instantiation of dtor for DMI.
The problem here is that when processing direct-initialization of a data
member, we don't need to worry about destruction semantics; that will be
handled in the [cd]tor. Conveniently, we already have tf_no_cleanup from a
similar fix to new-expressions.
* typeck2.c (digest_nsdmi_init): Set tf_no_cleanup for direct-init.
From-SVN: r272287
Richard Biener [Fri, 14 Jun 2019 11:29:44 +0000 (11:29 +0000)]
tree-loop-distribution.c (classify_partition): Return whether a reduction appeared in all partitions and do not stop builtin...
2019-06-14 Richard Biener <rguenther@suse.de>
* tree-loop-distribution.c (classify_partition): Return
whether a reduction appeared in all partitions and do not
stop builtin detection because of this.
(distribute_loop): Sort a non-builtin partition last if
there's a reduction in all partitions and make sure the
partition prevailing as last is not a builtin.
* gcc.dg/tree-ssa/ldist-26.c: Adjust.
From-SVN: r272284
Feng Xue [Fri, 14 Jun 2019 02:34:48 +0000 (02:34 +0000)]
re PR ipa/90401 (Missed propagation of by-ref constant argument to callee function)
PR ipa/90401
gcc/ChangeLog:
* ipa-prop.c (add_to_agg_contents_list): New function.
(clobber_by_agg_contents_list_p): Likewise.
(extract_mem_content): Likewise.
(get_place_in_agg_contents_list): Delete.
(determine_known_aggregate_parts): Renamed from
determine_locally_known_aggregate_parts. New parameter
aa_walk_budget_p.
gcc/testsuite/ChangeLog:
* gcc.dg/ipa/ipcp-agg-10.c: New test.
From-SVN: r272282
Martin Sebor [Fri, 14 Jun 2019 02:07:02 +0000 (02:07 +0000)]
PR tree-optimization/90662 - strlen of a string in a vla plus offset not folded
gcc/ChangeLog:
PR tree-optimization/90662
* tree-ssa-strlen.c (get_stridx): Convert fold_build2 operands
to the same type.
gcc/testsuite/ChangeLog:
PR tree-optimization/90662
* gcc.dg/pr90866-2.c: New test.
* gcc.dg/pr90866.c: Ditto.
From-SVN: r272281
GCC Administrator [Fri, 14 Jun 2019 00:16:16 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r272280
Jan Hubicka [Thu, 13 Jun 2019 21:56:37 +0000 (23:56 +0200)]
re PR bootstrap/90873 (-Wmaybe-uninitialized warning in gcc/tree-ssa-forwprop.c breaks 32-bit bootstrap)
PR bootstrap/90873
* tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Also check that
dbase is not TARGET_MEM_REF.
From-SVN: r272273
Uros Bizjak [Thu, 13 Jun 2019 21:37:17 +0000 (23:37 +0200)]
* ChangeLog: Fix my last entry.
From-SVN: r272272
Uros Bizjak [Thu, 13 Jun 2019 21:29:06 +0000 (23:29 +0200)]
i386.md (SWIM1248s): Rename from SWIM1248x.
* config/i386/i386.md (SWIM1248s): Rename from SWIM1248x.
Update all uses.
(and<mode>3): Use gen_extend_insn instead of indirect functions.
Do not generate DImode extends for 32bit targets.
(and->zext post-reload splitter): Use gen_extend_insn
instead of indirect functions.
(anddi->zext pre-reload splitter): New.
* config/i386/i386-expand.c (ix86_expand_int_sse_cmp):
Use gen_sub3_insn instead of indirect function.
(ix86_expand_ashl_const): Use gen_add2_insn instead of
indirect function.
(ix86_adjust_counter): Ditto.
From-SVN: r272270
Jiufu Guo [Thu, 13 Jun 2019 18:55:55 +0000 (18:55 +0000)]
re PR tree-optimization/77820 (A jump threading opportunity with conditionals)
PR tree-optimization/77820
* tree-ssa-threadedge.c
(edge_forwards_cmp_to_conditional_jump_through_empty_bb_p): New
function.
(thread_across_edge): Add call to
edge_forwards_cmp_to_conditional_jump_through_empty_bb_p.
PR tree-optimization/77820
* gcc.dg/tree-ssa/phi_on_compare-1.c: New testcase.
* gcc.dg/tree-ssa/phi_on_compare-2.c: New testcase.
* gcc.dg/tree-ssa/phi_on_compare-3.c: New testcase.
* gcc.dg/tree-ssa/phi_on_compare-4.c: New testcase.
* gcc.dg/tree-ssa/split-path-6.c: Update testcase.
* gcc.target/sh/pr51244-20.c: Update testcase.
Co-Authored-By: Lijia He <helijia@linux.ibm.com>
From-SVN: r272261
Iain Sandoe [Thu, 13 Jun 2019 18:53:05 +0000 (18:53 +0000)]
Darwin, Driver - Improve processing of macosx-version-min=
For PR target/63810 some improvements were made in the parsing of
the version string at the point it's used to define the built-in
__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__. This is fine, but the
specs processing also uses the version, and specs version-compare
doesn't like leading zeros on components. This means that while we
succeed in processing -mmacosx-version-min=010.00002.000099 on compile
lines, it fails for any other line that uses the value as part of a spec
(in particular, link lines fail).
To fix this, we need to apply a bit of clean-up to the version that's
presented to the driver, and push that back into the command line opts.
The value can come from four places:
1. User-entered on the command line
2. User-entered as MACOSX_DEPLOYMENT_TARGET= environment var.
3. Absent those two
3a For self-hosting systems, look-up from the kernel
3b For cross-compilers, as a default supplied at configure time.
We apply the clean-up to all 4 (although it shouldn't really be needed
for the cases under 3).
We also supply a test-case that adapts to the target-version of the
system, so that the link requirements are met by the SDK in use (if you
try to link i686-darwin9 on an x86-64-darwin18 SDK, it will fail).
gcc/
2019-06-13 Iain Sandoe <iain@sandoe.co.uk>
* config/darwin-driver.c (validate_macosx_version_min): New.
(darwin_default_min_version): Cleanup and validate supplied version.
(darwin_driver_init): Likewise and push cleaned version into opts.
gcc/testsuite/
2019-06-13 Iain Sandoe <iain@sandoe.co.uk>
* gcc.dg/darwin-minversion-link.c: New test.
From-SVN: r272260
Steven G. Kargl [Thu, 13 Jun 2019 18:40:19 +0000 (18:40 +0000)]
re PR fortran/68544 (ICE trying to pass derived type constructor as a function)
2019-06-13 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/68544
* resolve.c (is_dt_name): New function to compare symbol name against
list of derived types.
(resolve_actual_arglist): Use it to find wrong code.
2019-06-13 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/68544
* gfortran.dg/pr68544.f90: New test.
* gfortran.dg/pr85687.f90: Modify test for new error message.
From-SVN: r272259
Iain Sandoe [Thu, 13 Jun 2019 18:32:32 +0000 (18:32 +0000)]
Darwin, testsuite - Fix pr71694 fail for m32.
This test fails for Darwin m32 because it's scanning for absence
of an instruction that's validly used in PIC code. Fixed, in this
case, by using non-PIC codegen.
2019-06-13 Iain Sandoe <iain@sandoe.co.uk>
* g++.dg/pr71694.C: Use non-PIC codegen for Darwin m32.
From-SVN: r272257
Steven G. Kargl [Thu, 13 Jun 2019 18:07:53 +0000 (18:07 +0000)]
re PR fortran/89344 (uncaught programmer error: polymorphic variable is INTENT(IN) but assigned to without error)
2019-06-13 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/89344
* expr.c (gfc_check_vardef_context): Check for INTENT(IN) variable
in SELECT TYPE construct.
2019-06-13 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/89344
* gfortran.dg/pr89344.f90: New test.
From-SVN: r272255
Steven G. Kargl [Thu, 13 Jun 2019 17:45:52 +0000 (17:45 +0000)]
re PR fortran/88810 (gcc/fortran/dependency.c:2200: possible cut'n'paste error ?)
2019-06-13 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/88810
* dependency.c (gfc_dep_resolver): Re-arrange code to make the logic
a bit more transparent. Fix 2 nearby formatting issues.
From-SVN: r272254
Iain Sandoe [Thu, 13 Jun 2019 17:15:37 +0000 (17:15 +0000)]
Darwin, testsuite - Adjust two tests that fail on newer OS versions.
Newer OS versions (10.14+) do not provide some of the CRTs that are used
for older ones (e.g. 10.5), and thus link tests that specify targeting
such a revision fail. We retain the testing of the correct defined OS
version number but switch to compile-only testing for these two tests.
2019-06-13 Iain Sandoe <iain@sandoe.co.uk>
* gcc.dg/darwin-minversion-1.c: Use compile rather than link/run.
* gcc.dg/darwin-minversion-2.c: Likewise.
From-SVN: r272251
Paolo Carlini [Thu, 13 Jun 2019 17:10:03 +0000 (17:10 +0000)]
re PR target/90871 (g++.dg/ext/altivec-15.C fails after r272236)
2019-06-13 Paolo Carlini <paolo.carlini@oracle.com>
PR target/90871
* g++.dg/ext/altivec-15.C: Add dg-error directive.
From-SVN: r272250
Iain Sandoe [Thu, 13 Jun 2019 16:58:35 +0000 (16:58 +0000)]
testsuite - Require alias support for pr90760.
This test fails on Darwin because it requires alias support, so
add the relevant dg-requires.
2019-06-13 Iain Sandoe <iain@sandoe.co.uk>
* gcc.dg/pr90760.c: Require alias support.
From-SVN: r272248
Jan Hubicka [Thu, 13 Jun 2019 15:00:41 +0000 (17:00 +0200)]
re PR tree-optimization/90869 (Non-disambiguated memory accesses)
PR tree-optimize/90869
* tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Watch for view
converts in MEM_REF referencing decl rather than view converts
from decl type to MEM_REF type.
* g++.dg/tree-ssa/alias-access-path-1.C: New testcase.
From-SVN: r272247
Richard Biener [Thu, 13 Jun 2019 13:03:13 +0000 (13:03 +0000)]
re PR tree-optimization/90856 (ICE: verify_gimple failed (error: incompatible types in 'PHI' argument 1))
2019-06-13 Richard Biener <rguenther@suse.de>
PR tree-optimization/90856
* tree-sra.c (build_ref_for_model): Only use
build_reconstructed_reference when address-spaces are the same.
* gcc.target/i386/pr90856.c: New testcase.
From-SVN: r272244
Jakub Jelinek [Thu, 13 Jun 2019 12:51:39 +0000 (14:51 +0200)]
nvptx.c (nvptx_sese_number, [...]): Don't wrap ei variable name in the declaration in ()s.
* config/nvptx/nvptx.c (nvptx_sese_number, nvptx_sese_pseudo): Don't
wrap ei variable name in the declaration in ()s.
(nvptx_single): Actually use mode_label variable. Formatting fix.
From-SVN: r272243
Jakub Jelinek [Thu, 13 Jun 2019 11:29:13 +0000 (13:29 +0200)]
ssa-dse-1.C: Don't match exact number of chars of = {} store.
* g++.dg/tree-ssa/ssa-dse-1.C: Don't match exact number of chars of
= {} store.
* g++.dg/tree-ssa/pr31146.C: Change -fdump-tree-forwprop to
-fdump-tree-forwprop1 in dg-options. Expect <int[5]> in MEM.
From-SVN: r272240
Richard Biener [Thu, 13 Jun 2019 10:10:05 +0000 (10:10 +0000)]
tree-vectorizer.h (vect_loop_vectorized_call): Declare.
2019-06-13 Richard Biener <rguenther@suse.de>
* tree-vectorizer.h (vect_loop_vectorized_call): Declare.
* tree-vectorizer.c (vect_loop_vectorized_call): Export and
also return the condition stmt.
* tree-vect-loop-manip.c (vect_loop_versioning): Compute outermost
loop we can version and version that, reusing the loop version
created by if-conversion instead of versioning again.
* gcc.dg/vect/vect-version-1.c: New testcase.
* gcc.dg/vect/vect-version-2.c: Likewise.
From-SVN: r272239
Aldy Hernandez [Thu, 13 Jun 2019 09:46:00 +0000 (09:46 +0000)]
Revamp value_range::may_contain_p.
From-SVN: r272238
Claudiu Zissulescu [Thu, 13 Jun 2019 09:35:19 +0000 (11:35 +0200)]
[ARC] Add documentation naked, ilink and firq
gcc/
xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com>
* doc/extend.texi (ARC Function Attributes): Update info.
From-SVN: r272237
Paolo Carlini [Thu, 13 Jun 2019 08:45:46 +0000 (08:45 +0000)]
decl.c (grokdeclarator): Use id_loc in five additional places in the last part of the function.
/cp
2019-06-13 Paolo Carlini <paolo.carlini@oracle.com>
* decl.c (grokdeclarator): Use id_loc in five additional places
in the last part of the function.
/testsuite
2019-06-13 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/diagnostic/variably-modified-type-1.C: New.
* g++.dg/cpp0x/alias-decl-1.C: Test the location too.
* g++.dg/other/pr84792-1.C: Likewise.
* g++.dg/other/pr84792-2.C: Likewise.
* g++.dg/parse/error24.C: Likewise.
* g++.dg/parse/error32.C: Likewise.
* g++.dg/parse/error33.C: Likewise.
* g++.dg/parse/saved1.C: Likewise.
* g++.dg/template/operator6.C: Likewise.
* g++.dg/template/pr61745.C: Likewise.
* g++.dg/template/typedef41.C: Likewise.
* g++.old-deja/g++.jason/crash10.C: Likewise.
/cp
2019-06-13 Paolo Carlini <paolo.carlini@oracle.com>
* decl.c (grokdeclarator): Move further up the declaration of
id_loc, use it immediately, update its value after the loop
over declarator, use it again in the final part of function;
improve locations of error messages about multiple data types
and conflicting specifiers.
/testsuite
2019-06-13 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/diagnostic/conflicting-specifiers-1.C: New.
* g++.dg/diagnostic/two-or-more-data-types-1.C: Likewise.
* g++.dg/parse/error10.C: Adjust location.
* g++.dg/parse/pragma2.C: Likewise.
From-SVN: r272236
Richard Biener [Thu, 13 Jun 2019 08:41:13 +0000 (08:41 +0000)]
re PR c++/90801 (A recurring hang)
2019-06-13 Richard Biener <rguenther@suse.de>
PR c++/90801
* typeck2.c (split_nonconstant_init_1): Properly count
num_split_elts, optimize single constructor elt removal.
From-SVN: r272235
Feng Xue [Thu, 13 Jun 2019 04:17:42 +0000 (04:17 +0000)]
PR tree-optimization/89713 - Assume loop with an exit is finite
gcc/ChangeLog:
* doc/invoke.texi (-ffinite-loops): Document new option.
* common.opt (-ffinite-loops): New option.
* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark
IFN_GOACC_LOOP calls as necessary.
* tree-ssa-loop-niter.c (finite_loop_p): Assume loop with an exit
is finite.
* omp-offload.c (oacc_xform_loop): Skip lowering if return value of
IFN_GOACC_LOOP call is not used.
* opts.c (default_options_table): Enable -ffinite-loops at -O2+.
gcc/testsuite/ChangeLog:
* g++.dg/tree-ssa/empty-loop.C: New test.
* gcc.dg/tree-ssa/dce-2.c: New test.
* gcc.dg/const-1.c: Add -fno-finite-loops option.
* gcc.dg/graphite/graphite.exp: Likewise.
* gcc.dg/loop-unswitch-1.c: Likewise.
* gcc.dg/predict-9.c: Likewise.
* gcc.dg/pure-2.c: Likewise.
* gcc.dg/tree-ssa/
20040211-1.c: Likewise.
* gcc.dg/tree-ssa/loop-10.c: Likewise.
* gcc.dg/tree-ssa/split-path-6.c: Likewise.
* gcc.dg/tree-ssa/ssa-thread-12.c: Likewise.
libgomp/ChangeLog:
* testsuite/libgomp.oacc-c-c++-common/pr84955-1.c: New test.
From-SVN: r272234
Kugan Vivekanandarajah [Thu, 13 Jun 2019 03:34:28 +0000 (03:34 +0000)]
re PR target/88838 ([SVE] Use 32-bit WHILELO in LP64 mode)
gcc/ChangeLog:
2019-06-13 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
PR target/88838
* tree-vect-loop-manip.c (vect_set_loop_masks_directly): If the
compare_type is not with Pmode size, we will create an IV with
Pmode size with truncated use (i.e. converted to the correct type).
* tree-vect-loop.c (vect_verify_full_masking): Find IV type.
(vect_iv_limit_for_full_masking): New. Factored out of
vect_set_loop_condition_masked.
* tree-vectorizer.h (LOOP_VINFO_MASK_IV_TYPE): New.
(vect_iv_limit_for_full_masking): Declare.
gcc/testsuite/ChangeLog:
2019-06-13 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
PR target/88838
* gcc.target/aarch64/pr88838.c: New test.
* gcc.target/aarch64/sve/while_1.c: Adjust.
From-SVN: r272233
Kugan Vivekanandarajah [Thu, 13 Jun 2019 03:18:54 +0000 (03:18 +0000)]
re PR target/88834 ([SVE] Poor addressing mode choices for LD2 and ST2)
gcc/ChangeLog:
2019-06-13 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
PR target/88834
* tree-ssa-loop-ivopts.c (get_mem_type_for_internal_fn): Handle
IFN_MASK_LOAD_LANES and IFN_MASK_STORE_LANES.
(get_alias_ptr_type_for_ptr_address): Likewise.
(add_iv_candidate_for_use): Add scaled index candidate if useful.
* tree-ssa-address.c (preferred_mem_scale_factor): New.
* config/aarch64/aarch64.c (aarch64_classify_address): Relax
allow_reg_index_p.
gcc/testsuite/ChangeLog:
2019-06-13 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
PR target/88834
* gcc.target/aarch64/pr88834.c: New test.
* gcc.target/aarch64/sve/struct_vect_1.c: Adjust.
* gcc.target/aarch64/sve/struct_vect_14.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_15.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_16.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_17.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_7.c: Likewise.
From-SVN: r272232
Kugan Vivekanandarajah [Thu, 13 Jun 2019 03:13:56 +0000 (03:13 +0000)]
iterators.md (ADDSUB): Fix typo in comment.
gcc/ChangeLog:
2019-06-13 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
* config/aarch64/iterators.md (ADDSUB): Fix typo in comment.
From-SVN: r272231
Marek Polacek [Thu, 13 Jun 2019 01:31:03 +0000 (01:31 +0000)]
re PR c++/87410 (internal compiler error: in fold_convert_loc, at fold-const.c:2530)
PR c++/87410
* g++.dg/cpp1y/pr87410.C: New test.
From-SVN: r272230
GCC Administrator [Thu, 13 Jun 2019 00:16:15 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r272228
Marek Polacek [Wed, 12 Jun 2019 22:41:35 +0000 (22:41 +0000)]
PR c++/66999 - 'this' captured by reference.
* parser.c (cp_parser_lambda_introducer): Reject `&this'. Use
cp_lexer_nth_token_is instead of cp_lexer_peek_nth_token.
* g++.dg/cpp0x/lambda/lambda-this21.C: New test.
From-SVN: r272223
Jakub Jelinek [Wed, 12 Jun 2019 22:38:10 +0000 (00:38 +0200)]
io.c (check_format): Use G_(...) instead of _(...) for error values...
* io.c (check_format): Use G_(...) instead of _(...) for error values,
append " in format string at %L" to all strings but unexpected_element,
use error as gfc_error formating string instead of
"%s in format string at %L". Formatting fixes.
From-SVN: r272222
Marek Polacek [Wed, 12 Jun 2019 22:26:54 +0000 (22:26 +0000)]
PR c++/90825 - endless recursion when evaluating sizeof.
PR c++/90832 - endless recursion when evaluating sizeof.
* constexpr.c (cxx_eval_constant_expression): Don't recurse on the
result of fold_sizeof_expr if is returns a SIZEOF_EXPR.
* typeck.c (cxx_sizeof_expr): Only return a SIZEOF_EXPR if the operand
is instantiation-dependent.
* g++.dg/cpp0x/constexpr-sizeof2.C: New test.
* g++.dg/cpp0x/constexpr-sizeof3.C: New test.
From-SVN: r272221
Steven G. Kargl [Wed, 12 Jun 2019 22:18:37 +0000 (22:18 +0000)]
gfortran.h (gfc_free_dt_list): Remove prototype.
2019-06-12 Steven G. Kargl <kargl@gcc.gnu.org>
* gfortran.h (gfc_free_dt_list): Remove prototype.
From-SVN: r272220
Martin Sebor [Wed, 12 Jun 2019 20:43:27 +0000 (20:43 +0000)]
Tweak tests to avoid fallout from MEM_REF changes on targets that don't enable...
Tweak tests to avoid fallout from MEM_REF changes on targets that don't
enable store merging but achieve the same effect by other means (DSE).
gcc/testsuite?ChangeLog:
PR middle-end/90676
* gcc.dg/tree-ssa/pr30375.c: Adjust and simplify expected test
output some more.
* gcc.dg/tree-ssa/slsr-27.c: Ditto.
* gcc.dg/tree-ssa/slsr-28.c: Ditto.
* gcc.dg/tree-ssa/slsr-29.c: Ditto.
* gcc.dg/tree-ssa/ssa-dse-24.c: Ditto.
From-SVN: r272218
Marek Polacek [Wed, 12 Jun 2019 20:17:36 +0000 (20:17 +0000)]
PR c++/90736 - bogus error with alignof.
* constexpr.c (adjust_temp_type): Use cv_unqualified type.
* g++.dg/cpp0x/alignof5.C: New test.
From-SVN: r272217
Jonathan Wakely [Wed, 12 Jun 2019 20:16:03 +0000 (21:16 +0100)]
Fix incorrect __cpp_lib_parallel_algorithm macro definitions
* include/std/algorithm (__cpp_lib_parallel_algorithm): Fix value.
* include/std/memory (__cpp_lib_parallel_algorithm): Likewise.
* include/std/numeric (__cpp_lib_parallel_algorithm): Likewise.
* testsuite/25_algorithms/pstl/feature_test.cc: New test.
From-SVN: r272216
Dimitar Dimitrov [Wed, 12 Jun 2019 20:10:21 +0000 (20:10 +0000)]
Add myself to MAINTAINERS
2019-06-12 Dimitar Dimitrov <dimitar@dinux.eu>
* MAINTAINERS (Write After Approval): Add myself.
From-SVN: r272215
Dimitar Dimitrov [Wed, 12 Jun 2019 19:52:54 +0000 (19:52 +0000)]
testsuite: Mark testsuite that PRU has different
gcc/testsuite/ChangeLog:
2019-06-12 Dimitar Dimitrov <dimitar@dinux.eu>
* gcc.dg/builtin-apply2.c: Skip for PRU.
* gcc.dg/torture/stackalign/builtin-apply-2.c: Ditto.
From-SVN: r272212
Dimitar Dimitrov [Wed, 12 Jun 2019 19:50:45 +0000 (19:50 +0000)]
testsuite: Mark that PRU uses all function pointer bits
gcc/testsuite/ChangeLog:
2019-06-12 Dimitar Dimitrov <dimitar@dinux.eu>
* g++.old-deja/g++.abi/ptrmem.C: Add PRU to list.
From-SVN: r272211
Dimitar Dimitrov [Wed, 12 Jun 2019 19:48:59 +0000 (19:48 +0000)]
testsuite: Mark that PRU has one-cycle jumps
gcc/testsuite/ChangeLog:
2019-06-12 Dimitar Dimitrov <dimitar@dinux.eu>
* gcc.dg/tree-ssa/
20040204-1.c: XFAIL on pru.
* gcc.dg/tree-ssa/reassoc-33.c: Ditto.
* gcc.dg/tree-ssa/reassoc-34.c: Ditto.
* gcc.dg/tree-ssa/reassoc-35.c: Ditto.
* gcc.dg/tree-ssa/reassoc-36.c: Ditto.
From-SVN: r272210
Dimitar Dimitrov [Wed, 12 Jun 2019 19:47:09 +0000 (19:47 +0000)]
testsuite: Define PRU stack usage
gcc/testsuite/ChangeLog:
2019-06-12 Dimitar Dimitrov <dimitar@dinux.eu>
* gcc.dg/stack-usage-1.c: Define PRU stack usage.
From-SVN: r272209
Dimitar Dimitrov [Wed, 12 Jun 2019 19:44:21 +0000 (19:44 +0000)]
testsuite: Remove PRU from test cases requiring hosted environment
gcc/testsuite/ChangeLog:
2019-06-12 Dimitar Dimitrov <dimitar@dinux.eu>
* gcc.c-torture/execute/
20101011-1.c: Define DO_TEST to 0 for PRU.
* gcc.dg/
20020312-2.c: No PIC register for PRU.
From-SVN: r272208
Dimitar Dimitrov [Wed, 12 Jun 2019 19:41:02 +0000 (19:41 +0000)]
testsuite: Add check for unsupported TI ABI PRU features to testsuite
gcc/testsuite/ChangeLog:
2019-06-12 Dimitar Dimitrov <dimitar@dinux.eu>
* lib/gcc-dg.exp: Filter unsupported features in PRU's TI ABI mode.
* lib/target-utils.exp: Ditto.
* lib/target-supports.exp (check_effective_target_function_pointers,
check_effective_target_large_return_values): New.
From-SVN: r272207
Dimitar Dimitrov [Wed, 12 Jun 2019 19:36:34 +0000 (19:36 +0000)]
testsuite: Add check for overflowed IMEM region to testsuite
gcc/testsuite/ChangeLog:
2019-06-12 Dimitar Dimitrov <dimitar@dinux.eu>
* lib/gcc-dg.exp: Bail on region overflow for tiny targets.
* lib/target-utils.exp: Ditto.
* lib/target-supports.exp: Declare PRU target as tiny.
From-SVN: r272206
Dimitar Dimitrov [Wed, 12 Jun 2019 19:33:31 +0000 (19:33 +0000)]
testsuite: Add PRU tests
gcc/testsuite/ChangeLog:
2019-06-12 Dimitar Dimitrov <dimitar@dinux.eu>
* gcc.target/pru/abi-arg-struct.c: New test.
* gcc.target/pru/ashiftrt.c: New test.
* gcc.target/pru/builtins-1.c: New test.
* gcc.target/pru/builtins-error.c: New test.
* gcc.target/pru/clearbit.c: New test.
* gcc.target/pru/loop-asm.c: New test.
* gcc.target/pru/loop-dowhile.c: New test.
* gcc.target/pru/loop-hi-1.c: New test.
* gcc.target/pru/loop-hi-2.c: New test.
* gcc.target/pru/loop-qi-1.c: New test.
* gcc.target/pru/loop-qi-2.c: New test.
* gcc.target/pru/loop-short-1.c: New test.
* gcc.target/pru/loop-short-2.c: New test.
* gcc.target/pru/loop-si-1.c: New test.
* gcc.target/pru/loop-si-2.c: New test.
* gcc.target/pru/loop-u8_pcrel_overflow.c: New test.
* gcc.target/pru/loop-ubyte-1.c: New test.
* gcc.target/pru/loop-ubyte-2.c: New test.
* gcc.target/pru/lra-framepointer-fragmentation-1.c: New test.
* gcc.target/pru/lra-framepointer-fragmentation-2.c: New test.
* gcc.target/pru/mabi-ti-1.c: New test.
* gcc.target/pru/mabi-ti-2.c: New test.
* gcc.target/pru/mabi-ti-3.c: New test.
* gcc.target/pru/mabi-ti-4.c: New test.
* gcc.target/pru/mabi-ti-5.c: New test.
* gcc.target/pru/mabi-ti-6.c: New test.
* gcc.target/pru/mabi-ti-7.c: New test.
* gcc.target/pru/pr64366.c: New test.
* gcc.target/pru/pragma-ctable_entry.c: New test.
* gcc.target/pru/pru.exp: New file.
* gcc.target/pru/qbbc-1.c: New test.
* gcc.target/pru/qbbc-2.c: New test.
* gcc.target/pru/qbbc-3.c: New test.
* gcc.target/pru/qbbs-1.c: New test.
* gcc.target/pru/qbbs-2.c: New test.
* gcc.target/pru/setbit.c: New test.
* gcc.target/pru/zero_extend-and-hisi.c: New test.
* gcc.target/pru/zero_extend-and-qihi.c: New test.
* gcc.target/pru/zero_extend-and-qisi.c: New test.
* gcc.target/pru/zero_extend-hisi.c: New test.
* gcc.target/pru/zero_extend-qihi.c: New test.
* gcc.target/pru/zero_extend-qisi.c: New test.
* lib/target-supports.exp: Add PRU to feature filters.
From-SVN: r272205
Dimitar Dimitrov [Wed, 12 Jun 2019 19:28:51 +0000 (19:28 +0000)]
Initial TI PRU libgcc port
libgcc/ChangeLog:
2019-06-12 Dimitar Dimitrov <dimitar@dinux.eu>
* config.host: Add PRU target.
* config/pru/asri.c: New file.
* config/pru/eqd.c: New file.
* config/pru/eqf.c: New file.
* config/pru/ged.c: New file.
* config/pru/gef.c: New file.
* config/pru/gtd.c: New file.
* config/pru/gtf.c: New file.
* config/pru/led.c: New file.
* config/pru/lef.c: New file.
* config/pru/lib2bitcountHI.c: New file.
* config/pru/lib2divHI.c: New file.
* config/pru/lib2divQI.c: New file.
* config/pru/lib2divSI.c: New file.
* config/pru/libgcc-eabi.ver: New file.
* config/pru/ltd.c: New file.
* config/pru/ltf.c: New file.
* config/pru/mpyll.S: New file.
* config/pru/pru-abi.h: New file.
* config/pru/pru-asm.h: New file.
* config/pru/pru-divmod.h: New file.
* config/pru/sfp-machine.h: New file.
* config/pru/t-pru: New file.
From-SVN: r272204
Dimitar Dimitrov [Wed, 12 Jun 2019 19:26:31 +0000 (19:26 +0000)]
Fix ChangeLog dates for last commit
From-SVN: r272203
Dimitar Dimitrov [Wed, 12 Jun 2019 19:04:24 +0000 (19:04 +0000)]
Initial TI PRU GCC port
ChangeLog:
2019-06-19 Dimitar Dimitrov <dimitar@dinux.eu>
* configure: Regenerate.
* configure.ac: Add PRU target.
gcc/ChangeLog:
2019-06-19 Dimitar Dimitrov <dimitar@dinux.eu>
* common/config/pru/pru-common.c: New file.
* config.gcc: Add PRU target.
* config/pru/alu-zext.md: New file.
* config/pru/constraints.md: New file.
* config/pru/predicates.md: New file.
* config/pru/pru-opts.h: New file.
* config/pru/pru-passes.c: New file.
* config/pru/pru-pragma.c: New file.
* config/pru/pru-protos.h: New file.
* config/pru/pru.c: New file.
* config/pru/pru.h: New file.
* config/pru/pru.md: New file.
* config/pru/pru.opt: New file.
* config/pru/t-pru: New file.
* doc/extend.texi: Document PRU pragmas.
* doc/invoke.texi: Document PRU-specific options.
* doc/md.texi: Document PRU asm constraints.
From-SVN: r272202
Steven G. Kargl [Wed, 12 Jun 2019 18:28:32 +0000 (18:28 +0000)]
re PR fortran/90002 (ICE: free_expr0(): Bad expr type)
2019-06-12 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/90002
* array.c (gfc_free_array_spec): When freeing an array-spec, avoid
an ICE for assumed-shape coarrays
2019-06-12 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/90002
* gfortran.dg/pr90002.f90: New test.
From-SVN: r272201
Martin Sebor [Wed, 12 Jun 2019 17:27:41 +0000 (11:27 -0600)]
Update last ChangeLog entry.
From-SVN: r272200
Martin Sebor [Wed, 12 Jun 2019 17:05:35 +0000 (17:05 +0000)]
PR middle-end/90676 - default GIMPLE dumps lack information
gcc/ChangeLog:
PR middle-end/90676
* tree-pretty-print.c (dump_mem_ref): New function. Include
MEM_REF type in output when different size than operand.
(dump_generic_node): Move code to dump_mem_ref and call it.
gcc/testsuite/ChangeLog:
PR middle-end/90676
* gcc.dg/tree-ssa/dump-6.c: New test.
* g++.dg/tree-ssa/pr19807.C: Adjust expected output.
* g++.dg/tree-ssa/ssa-dse-1.C: Same.
* gcc.dg/store_merging_5.c: Same.
* gcc.dg/tree-prof/stringop-2.c: Same.
* gcc.dg/tree-ssa/pr30375.c: Same.
* gcc.dg/tree-ssa/slsr-27.c: Same.
* gcc.dg/tree-ssa/slsr-28.c: Same.
* gcc.dg/tree-ssa/slsr-29.c: Same.
* gcc.dg/tree-ssa/ssa-dse-24.c: Same.
From-SVN: r272199
Martin Sebor [Wed, 12 Jun 2019 16:33:04 +0000 (16:33 +0000)]
PR tree-optimization/90662 - strlen of a string in a vla plus offset not folded
gcc/ChangeLog:
PR tree-optimization/90662
* tree-ssa-strlen.c (get_stridx): Handle simple VLAs and pointers
to arrays.
gcc/testsuite/ChangeLog:
PR tree-optimization/90662
* gcc.dg/strlenopt-62.c: New test.
* gcc.dg/strlenopt-63.c: New test.
* gcc.dg/strlenopt-64.c: New test.
From-SVN: r272197
Tom de Vries [Wed, 12 Jun 2019 14:56:18 +0000 (14:56 +0000)]
[nvptx] Assert fork has at most one join in nvptx_find_par
With the test-case of PR90009 we run into a SIGSEGV in nvptx_neuter_pars,
because par->join_insn and par->join_block are NULL.
Detect this problem earlier, by adding an assert in nvptx_find_par that
asserts that a fork cannot be paired with more than one join.
Build and tested on x86_64 with nvptx accelerator enabled.
2019-06-12 Tom de Vries <tdevries@suse.de>
PR tree-optimization/90009
* config/nvptx/nvptx.c (nvptx_find_par): Assert fork has at most join.
From-SVN: r272189
Jonathan Wakely [Wed, 12 Jun 2019 14:52:09 +0000 (15:52 +0100)]
Improve static_assert messages for std::variant
Also fix a warning with -Wunused-parameter -Wsystem-headers.
* include/std/variant (get<T>, get<N>, get_if<N>, get_if<T>)
(variant::emplace): Change static_assert messages from "should be"
to "must be".
(hash<monostate>::operator()): Remove name of unused parameter.
From-SVN: r272188
Jonathan Wakely [Wed, 12 Jun 2019 14:52:06 +0000 (15:52 +0100)]
Simplify std::scoped_lock destructor
* include/std/mutex (scoped_lock::~scoped_lock()): Use fold
expression.
From-SVN: r272187
Jonathan Wakely [Wed, 12 Jun 2019 14:52:02 +0000 (15:52 +0100)]
Replace std::to_string for integers with optimized version
The std::to_chars functions from C++17 can be used to implement
std::to_string with much better performance than calling snprintf. Only
the __detail::__to_chars_len and __detail::__to_chars_10 functions are
needed for to_string, because it always outputs base 10 representations.
The return type of __detail::__to_chars_10 should not be declared before
C++17, so the function body is extracted into a new function that can be
reused by to_string and __detail::__to_chars_10.
The existing tests for to_chars rely on to_string to check for correct
answers. Now that they use the same code that doesn't actually ensure
correctness, so add new tests for std::to_string that compare against
printf output.
* include/Makefile.am: Add new <bits/charconv.h> header.
* include/Makefile.in: Regenerate.
* include/bits/basic_string.h (to_string(int), to_string(unsigned))
(to_string(long), to_string(unsigned long), to_string(long long))
(to_string(unsigned long long)): Rewrite to use __to_chars_10_impl.
* include/bits/charconv.h: New header.
(__detail::__to_chars_len): Move here from <charconv>.
(__detail::__to_chars_10_impl): New function extracted from
__detail::__to_chars_10.
* include/std/charconv (__cpp_lib_to_chars): Add, but comment out.
(__to_chars_unsigned_type): New class template that reuses
__make_unsigned_selector_base::__select to pick a type.
(__unsigned_least_t): Redefine as __to_chars_unsigned_type<T>::type.
(__detail::__to_chars_len): Move to new header.
(__detail::__to_chars_10): Add inline specifier. Move code doing the
output to __detail::__to_chars_10_impl and call that.
* include/std/version (__cpp_lib_to_chars): Add, but comment out.
* testsuite/21_strings/basic_string/numeric_conversions/char/
to_string.cc: Fix reference in comment. Remove unused variable.
* testsuite/21_strings/basic_string/numeric_conversions/char/
to_string_int.cc: New test.
From-SVN: r272186
Martin Liska [Wed, 12 Jun 2019 13:07:07 +0000 (15:07 +0200)]
Disable hash-table sanitization for mem stats maps.
2019-06-12 Martin Liska <mliska@suse.cz>
* ggc-common.c (ggc_prune_overhead_list): Do not sanitize
the created map.
* hash-map.h: Add sanitize_eq_and_hash into ::hash_map.
* mem-stats.h (mem_alloc_description::mem_alloc_description):
Do not sanitize created maps.
From-SVN: r272183
Aldy Hernandez [Wed, 12 Jun 2019 12:53:20 +0000 (12:53 +0000)]
Remove value_range_constant_singleton in favor of value_range::singleton_p.
From-SVN: r272182
Jakub Jelinek [Wed, 12 Jun 2019 09:31:26 +0000 (11:31 +0200)]
re PR target/90811 ([nvptx] ptxas error on OpenMP offloaded code)
PR target/90811
* cfgexpand.c (align_local_variable): Add really_expand argument,
don't SET_DECL_ALIGN if it is false.
(add_stack_var): Add really_expand argument, pass it through to
align_local_variable.
(expand_one_stack_var_1): Pass true as really_expand to
align_local_variable.
(expand_one_ssa_partition): Pass true as really_expand to
add_stack_var.
(expand_one_var): Pass really_expand through to add_stack_var.
From-SVN: r272181
Przemyslaw Wirkus [Wed, 12 Jun 2019 08:27:59 +0000 (08:27 +0000)]
[arm] Implement usadv16qi and ssadv16qi standard names
This patch implements the usadv16qi and ssadv16qi standard names for arm.
The V16QImode variant is important as it is the most commonly used pattern:
reducing vectors of bytes into an int.
The midend expects the optab to compute the absolute differences of operands 1
and 2 and reduce them while widening along the way up to SImode. So the inputs
are V16QImode and the output is V4SImode.
I've based my solution on Aarch64 usadv16qi and ssadv16qi standard names
current implementation (r260437). This solution emits below sequence of
instructions:
VABDL.u8 tmp, op1, op2 # op1, op2 lowpart
VABAL.u8 tmp, op1, op2 # op1, op2 highpart
VPADAL.u16 op3, tmp
So, for the code:
$ arm-none-linux-gnueabihf-gcc -S -O3 -march=armv8-a+simd -mfpu=auto -mfloat-abi=hard usadv16qi.c -dp
#define N 1024
unsigned char pix1[N];
unsigned char pix2[N];
int
foo (void)
{
int i_sum = 0;
int i;
for (i = 0; i < N; i++)
i_sum += __builtin_abs (pix1[i] - pix2[i]);
return i_sum;
}
we now generate on arm:
foo:
movw r3, #:lower16:pix2 @ 57 [c=4 l=4] *arm_movsi_vfp/3
movt r3, #:upper16:pix2 @ 58 [c=4 l=4] *arm_movt/0
vmov.i32 q9, #0 @ v4si @ 3 [c=4 l=4] *neon_movv4si/2
movw r2, #:lower16:pix1 @ 59 [c=4 l=4] *arm_movsi_vfp/3
movt r2, #:upper16:pix1 @ 60 [c=4 l=4] *arm_movt/0
add r1, r3, #1024 @ 8 [c=4 l=4] *arm_addsi3/4
.L2:
vld1.8 {q11}, [r3]! @ 11 [c=8 l=4] *movmisalignv16qi_neon_load
vld1.8 {q10}, [r2]! @ 10 [c=8 l=4] *movmisalignv16qi_neon_load
cmp r1, r3 @ 21 [c=4 l=4] *arm_cmpsi_insn/2
vabdl.u8 q8, d20, d22 @ 12 [c=8 l=4] neon_vabdluv8qi
vabal.u8 q8, d21, d23 @ 15 [c=88 l=4] neon_vabaluv8qi
vpadal.u16 q9, q8 @ 16 [c=8 l=4] neon_vpadaluv8hi
bne .L2 @ 22 [c=16 l=4] arm_cond_branch
vadd.i32 d18, d18, d19 @ 24 [c=120 l=4] quad_halves_plusv4si
vpadd.i32 d18, d18, d18 @ 25 [c=8 l=4] neon_vpadd_internalv2si
vmov.32 r0, d18[0] @ 30 [c=12 l=4] vec_extractv2sisi/1
instead of:
foo:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
@ link register save eliminated.
movw r3, #:lower16:pix1
movt r3, #:upper16:pix1
vmov.i32 q9, #0 @ v4si
movw r2, #:lower16:pix2
movt r2, #:upper16:pix2
add r1, r3, #1024
.L2:
vld1.8 {q8}, [r3]!
vld1.8 {q11}, [r2]!
vmovl.u8 q10, d16
cmp r1, r3
vmovl.u8 q8, d17
vmovl.u8 q12, d22
vmovl.u8 q11, d23
vsub.i16 q10, q10, q12
vsub.i16 q8, q8, q11
vabs.s16 q10, q10
vabs.s16 q8, q8
vaddw.s16 q9, q9, d20
vaddw.s16 q9, q9, d21
vaddw.s16 q9, q9, d16
vaddw.s16 q9, q9, d17
bne .L2
vadd.i32 d18, d18, d19
vpadd.i32 d18, d18, d18
vmov.32 r0, d18[0]
2019-06-12 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com>
* config/arm/iterators.md (VABAL): New int iterator.
* config/arm/neon.md (<sup>sadv16qi): New define_expand.
* config/arm/unspecs.md ("unspec"): Define UNSPEC_VABAL_S, UNSPEC_VABAL_U
values.
* gcc.target/arm/ssadv16qi.c: New test.
* gcc.target/arm/usadv16qi.c: Likewise.
From-SVN: r272180
Martin Liska [Wed, 12 Jun 2019 07:17:42 +0000 (09:17 +0200)]
Remove wrong assert about single value profiler.
2019-06-12 Martin Liska <mliska@suse.cz>
* value-prof.c (stream_out_histogram_value): Only first value
can't be negative.
From-SVN: r272179
Jakub Jelinek [Wed, 12 Jun 2019 07:14:08 +0000 (09:14 +0200)]
re PR c/90760 (ICE on attributes section and alias in set_section, at symtab.c:1573)
PR c/90760
* symtab.c (symtab_node::set_section): Allow being called on aliases
as long as they aren't analyzed yet.
* gcc.dg/pr90760.c: New test.
From-SVN: r272178
GCC Administrator [Wed, 12 Jun 2019 00:16:15 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r272177
Matthew Beliveau [Tue, 11 Jun 2019 20:15:43 +0000 (20:15 +0000)]
removed extra .com, fixed e-mail.
From-SVN: r272170
Faraz Shahbazker [Tue, 11 Jun 2019 20:09:57 +0000 (20:09 +0000)]
mips.c (mips_final_postscan_insn): Modify call to `mips_set_text_contents_type' to indicate whether a non-debug...
* config/mips/mips.c (mips_final_postscan_insn): Modify call
to `mips_set_text_contents_type' to indicate whether a
non-debug insn follows.
* gcc.target/mips/data-sym-pool.c: Update expected output.
* gcc.target/mips/data-sym-multi-pool.c: New test.
From-SVN: r272169
Matthew Beliveau [Tue, 11 Jun 2019 19:31:36 +0000 (19:31 +0000)]
* MAINTAINERS (Write After Approval): Add myself.
From-SVN: r272168
Iain Sandoe [Tue, 11 Jun 2019 18:22:58 +0000 (18:22 +0000)]
Darwin, testsuite - Fix PR 65364 (uninit-19.c).
This test currently fails on Darwin, because the port inlines fn2 for
both PIC (and non-pic for m32). Fixed by adjusting the target condition.
2019-06-11 Iain Sandoe <iain@sandoe.co.uk>
PR testsuite/65364
* gcc.dg/uninit-19.c (fn1): Adjust target condition for Darwin.
(fn2): Likewise.
From-SVN: r272167
Michael Meissner [Tue, 11 Jun 2019 17:36:58 +0000 (17:36 +0000)]
Do not enable -mpcrel by default at the current time
From-SVN: r272165
Jakub Jelinek [Tue, 11 Jun 2019 16:40:10 +0000 (18:40 +0200)]
re PR target/90811 ([nvptx] ptxas error on OpenMP offloaded code)
PR target/90811
* config/nvptx/nvptx.c (nvptx_output_softstack_switch): Use and.b%d
instead of and.u%d.
* testsuite/libgomp.c/pr90811.c: New test.
From-SVN: r272161
Edward Smith-Rowland [Tue, 11 Jun 2019 16:29:35 +0000 (16:29 +0000)]
Fix ConstexprIterator requirements tests - No constexpr algorithms!
2019-06-09 Edward Smith-Rowland <3dw4rd@verizon.net>
Fix ConstexprIterator requirements tests - No constexpr algorithms!
* testsuite/21_strings/basic_string_view/requirements/constexpr_iter.cc:
Replace copy with hand-rolled loop.
* testsuite/23_containers/array/requirements/constexpr_iter.cc:
Ditto.
From-SVN: r272159
Marc Glisse [Tue, 11 Jun 2019 15:22:43 +0000 (17:22 +0200)]
Allow conversions in X/[ex]4 < Y/[ex]4
2019-06-11 Marc Glisse <marc.glisse@inria.fr>
gcc/
* match.pd (X/[ex]4<Y/[ex]4): Handle conversions.
gcc/testsuite/
* gcc.dg/tree-ssa/cmpexactdiv-5.c: New file.
From-SVN: r272158
Matthew Beliveau [Tue, 11 Jun 2019 15:03:21 +0000 (15:03 +0000)]
PR c++/90449 - add -Winaccessible-base option.
* doc/invoke.texi (Winaccessible-base): Document.
* c.opt (Winaccessible-base): Added new option.
* class.c (warn_about_ambiguous_bases): Changed name to:
maybe_warn_about_inaccessible_bases.
(maybe_warn_about_inaccessible_bases): Implemented new
Winaccessible-base warning option for both direct and virtual
base warnings.
(layout_class_type): Call to warn_about_ambiguous_bases changed to fit
new name.
* g++.dg/warn/Winaccessible-base-1.C: New file.
* g++.dg/warn/Winaccessible-base-2.C: New file.
* g++.dg/warn/Winaccessible-virtual-base-1.C: New file.
* g++.dg/warn/Winaccessible-virtual-base-2.C: New file.
From-SVN: r272157
Richard Biener [Tue, 11 Jun 2019 14:03:41 +0000 (14:03 +0000)]
re PR c++/90801 (A recurring hang)
2019-06-11 Richard Biener <rguenther@suse.de>
PR c++/90801
* typeck2.c (split_nonconstant_init_1): Avoid ordered remove
from CONSTRUCTOR by marking to remove elements and doing all
of them in a O(n) scan.
From-SVN: r272156
Jakub Jelinek [Tue, 11 Jun 2019 13:01:40 +0000 (15:01 +0200)]
re PR c++/90810 (Different intrinsics behavior on G++ 7.4 and G++ 8.3)
PR c++/90810
* init.c (constant_value_1): Handle VECTOR_CST DECL_INITIAL for
!DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P decls like CONSTRUCTOR.
* g++.dg/ext/vector37.C: New test.
From-SVN: r272152
Marc Glisse [Tue, 11 Jun 2019 12:48:26 +0000 (14:48 +0200)]
fold_real_zero_addition_p for vectors
2019-06-11 Marc Glisse <marc.glisse@inria.fr>
PR tree-optimization/62041
* fold-const.c (fold_real_zero_addition_p): Handle vectors.
From-SVN: r272151
Jason Merrill [Tue, 11 Jun 2019 12:40:08 +0000 (08:40 -0400)]
gdbhooks.py (TreePrinter.to_string): Recognize ggc_free'd memory.
* gdbhooks.py (TreePrinter.to_string): Recognize ggc_free'd memory.
* tree.c (get_tree_code_name): Likewise.
* print-tree.c (print_node): Only briefly print a node with an
invalid code.
From-SVN: r272150
Nick Clifton [Tue, 11 Jun 2019 12:05:49 +0000 (12:05 +0000)]
Import these changes from the binutils/gdb repository:
2019-05-28 Nick Alcock <nick.alcock@oracle.com>
* Makefile.def (dependencies): configure-libctf depends on all-bfd
and all its deps.
* Makefile.in: Regenerated.
2019-05-28 Nick Alcock <nick.alcock@oracle.com>
* Makefile.def (host_modules): Add libctf.
* Makefile.def (dependencies): Likewise.
libctf depends on zlib, libiberty, and bfd.
* Makefile.in: Regenerated.
* configure.ac (host_libs): Add libctf.
* configure: Regenerated.
From-SVN: r272148
Richard Biener [Tue, 11 Jun 2019 08:30:47 +0000 (08:30 +0000)]
toir.cc (pop_label): Only queue labels in a vector.
2019-06-11 Richard Biener <rguenthe@suse.de>
d/90778
* toir.cc (pop_label): Only queue labels in a vector.
(cmp_labels): Label decl comparator.
(pop_binding_level): Pop labels in DECL_UID order to avoid
debug info differences.
From-SVN: r272146
Jakub Jelinek [Tue, 11 Jun 2019 08:20:02 +0000 (10:20 +0200)]
re PR bootstrap/90819 (-Walloc-size-larger-than error in trans-mem.c)
PR bootstrap/90819
* trans-mem.c (tm_memopt_compute_available): Add assertion
that blocks is not empty. Formatting fix.
From-SVN: r272145
Martin Liska [Tue, 11 Jun 2019 07:55:19 +0000 (09:55 +0200)]
Disable htable sanitization in pt.c (PR c++/87847).
2019-06-11 Martin Liska <mliska@suse.cz>
PR c++/87847
* hash-table.h: Extend create_gcc, add one parameter
that is passed into hash_table::hash_table.
2019-06-11 Martin Liska <mliska@suse.cz>
PR c++/87847
* pt.c (init_template_processing): Disable hash table
sanitization for decl_specializations and type_specializations.
From-SVN: r272144
Jakub Jelinek [Tue, 11 Jun 2019 07:54:17 +0000 (09:54 +0200)]
* libgcov-merge.c (__gcov_merge_single): Revert previous change.
From-SVN: r272143
GCC Administrator [Tue, 11 Jun 2019 00:16:16 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r272141
Uros Bizjak [Mon, 10 Jun 2019 21:51:42 +0000 (23:51 +0200)]
* config/i386/i386.md (absneg fp_reg splitter): Fix operator mode.
From-SVN: r272134
Ian Lance Taylor [Mon, 10 Jun 2019 21:34:12 +0000 (21:34 +0000)]
compiler: support inlining functions that use index expressions
Also move the determine_types pass on an inlined function body to one
place, rather than doing it ad hoc as needed.
This adds 79 new inlinable functions in the standard library, such as
bytes.HasPrefix and bytes.LastIndexByte.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/181261
From-SVN: r272133
Ian Lance Taylor [Mon, 10 Jun 2019 21:08:42 +0000 (21:08 +0000)]
compiler: make heap expression's write barrier conditional
Heap_expression::do_get_backend emits an unconditional write
barrier if the type has pointers and it is not a stack allocation.
This CL changes it to use a write barrier for the assignment only
when write barriers are enabled. While here, also change it to
call gcWriteBarrier instead of typedmemmove for pointer-shaped
types.
For this to work, Function::build needs to be adjusted so that
Heap_expression::do_get_backend is called when there is a parent
block.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/181540
From-SVN: r272132
Ian Lance Taylor [Mon, 10 Jun 2019 21:02:20 +0000 (21:02 +0000)]
compiler: permit inlining functions with labels and goto statements
This permits inlining functions with for loops and some switches, as
they are lowered to if and goto statements before exporting them.
This by itself only adds three new inlinable functions in the standard
library: sort.Search, context.(*emptyCtx).String, and
cmd/go/internal/work.(*Builder).disableBuildID.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/181197
From-SVN: r272131
Ian Lance Taylor [Mon, 10 Jun 2019 20:35:14 +0000 (20:35 +0000)]
compiler: use gcWriteBarrier for pointer-shaped struct/array
If a struct/array is pointer-shaped (i.e. having a single field
that is pointer-shaped), we can use gcWriteBarrier instead of
typedmemmove for the write barrier.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/181539
From-SVN: r272130
Matthew Beliveau [Mon, 10 Jun 2019 20:35:00 +0000 (20:35 +0000)]
re PR c++/87250 (Internal compiler error with -Os -fsyntax-only)
PR c++/87250
* g++.dg/cpp0x/pr87250.C: New test.
From-SVN: r272129
Jason Merrill [Mon, 10 Jun 2019 19:32:34 +0000 (15:32 -0400)]
constexpr.c (free_constructor): New.
* constexpr.c (free_constructor): New.
(cxx_eval_call_expression): Free parameter value CONSTRUCTORs.
From-SVN: r272127
Jason Merrill [Mon, 10 Jun 2019 19:32:30 +0000 (15:32 -0400)]
Reduce unsharing in constexpr call evaluation.
* constexpr.c (unshare_constructor): Only unshare if T is itself a
CONSTRUCTOR.
(cxx_eval_call_expression): Don't call it on the result here.
From-SVN: r272126