Jakub Jelinek [Sat, 17 Mar 2018 11:12:00 +0000 (12:12 +0100)]
re PR target/84902 (549.fotonik3d_r from SPEC2017 fails verification with -Ofast -march=native on Zen since r258518)
PR target/84902
* config/i386/i386.c (initial_ix86_tune_features,
initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
unsigned long long.
(set_ix86_tune_features): Change ix86_tune_mask from unsigned int
to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
rather than 1u << ix86_tune. Formatting fix.
(ix86_option_override_internal): Change ix86_arch_mask from
unsigned int to unsigned HOST_WIDE_INT, initialize to
HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
(ix86_function_specific_restore): Likewise.
From-SVN: r258618
GCC Administrator [Sat, 17 Mar 2018 00:16:13 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r258617
Joseph Myers [Fri, 16 Mar 2018 23:50:29 +0000 (23:50 +0000)]
* de.po: Update.
From-SVN: r258614
Jakub Jelinek [Fri, 16 Mar 2018 21:01:16 +0000 (22:01 +0100)]
re PR target/84899 (ICE: in final_scan_insn_1, at final.c:3139 (error: could not split insn))
PR target/84899
* postreload.c (reload_combine_recognize_pattern): Perform
INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
truncate_int_for_mode the result for the destination's mode.
* gcc.dg/pr84899.c: New test.
From-SVN: r258610
Jakub Jelinek [Fri, 16 Mar 2018 20:12:27 +0000 (21:12 +0100)]
re PR c/84909 (typo: conversion from %qT to to %qT)
PR c/84909
* c-warn.c (conversion_warning): Replace "to to" with "to" in
diagnostics.
* hsa-gen.c (mem_type_for_type): Fix comment typo.
* tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
Likewise.
* gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
Likewise.
From-SVN: r258609
Jakub Jelinek [Fri, 16 Mar 2018 20:11:40 +0000 (21:11 +0100)]
re PR c/84910 (typo: "%qs follows inline declaration ")
PR c/84910
* c-warn.c (diagnose_mismatched_attributes): Remove trailing space from
diagnostics.
* parser.c (cp_parser_lambda_introducer): Remove trailing space from
diagnostics.
* method.c (synthesize_method): Likewise.
* pt.c (convert_nontype_argument): Likewise.
From-SVN: r258608
Steven G. Kargl [Fri, 16 Mar 2018 19:20:15 +0000 (19:20 +0000)]
re PR fortran/69395 (ICE on declaring array with more than 7 dimensions+codimensions)
2018-03-16 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/69395
* decl.c (merge_array_spec): Correct the error condition.
2018-03-16 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/69395
* gfortran.dg/pr69395.f90: Add test for max dimensions
From-SVN: r258607
Ian Lance Taylor [Fri, 16 Mar 2018 19:01:40 +0000 (19:01 +0000)]
libgo: add runtime/pprof/internal/profile.gox to noinst_DATA
Also add noinst_DATA to CHECK_DEPS; it's not needed in practice since
`make` will build noinst_DATA, but it's logically required and will
make a difference if any of the noinst_DATA sources change between
`make` and `make check`.
Tony Reix figured out why omitting packages from noinst_DATA didn't
seem to matter: because if gccgo can't find foo.gox, it will fall back
to reading the export data in foo.o, and foo.o will exist because
these packages go into libgo.a.
Reviewed-on: https://go-review.googlesource.com/101077
From-SVN: r258606
Jason Merrill [Fri, 16 Mar 2018 18:56:06 +0000 (14:56 -0400)]
PR c++/84720 - ICE with rvalue ref non-type argument.
* pt.c (invalid_nontype_parm_type_p): Prohibit rvalue reference.
(convert_nontype_argument): Revert earlier change.
From-SVN: r258605
Jason Merrill [Fri, 16 Mar 2018 18:56:01 +0000 (14:56 -0400)]
PR c++/80227 - SFINAE and negative array size.
* decl.c (compute_array_index_type): Use
build_converted_constant_expr and valid_constant_size_p.
From-SVN: r258604
Jason Merrill [Fri, 16 Mar 2018 18:55:54 +0000 (14:55 -0400)]
PR c++/84906 - silent wrong code with ambiguous conversion.
* call.c (build_user_type_conversion_1): Set need_temporary_p on
ambiguous conversion.
(convert_like_real): Check it.
From-SVN: r258603
Vladimir Makarov [Fri, 16 Mar 2018 18:48:26 +0000 (18:48 +0000)]
re PR target/84876 (ICE on invalid code in lra_assign at gcc/lra-assigns.c:1601 since r258504)
2018-03-16 Vladimir Makarov <vmakarov@redhat.com>
PR target/84876
* lra-assigns.c (lra_split_hard_reg_for): Don't use
regno_allocno_class_array and sorted_pseudos.
* lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
insns where regno is used.
2018-03-16 Vladimir Makarov <vmakarov@redhat.com>
PR target/84876
* gcc.target/i386/pr84876.c: New test.
From-SVN: r258602
Joseph Myers [Fri, 16 Mar 2018 17:34:56 +0000 (17:34 +0000)]
* uk.po: Update.
From-SVN: r258601
Joseph Myers [Fri, 16 Mar 2018 16:58:25 +0000 (16:58 +0000)]
* de.po: Update.
From-SVN: r258599
Martin Liska [Fri, 16 Mar 2018 14:53:45 +0000 (15:53 +0100)]
Redirect reference in the symbol table (PR ipa/84833).
2018-03-16 Martin Liska <mliska@suse.cz>
PR ipa/84833
* multiple_target.c (create_dispatcher_calls): Redirect
reference in the symbol table.
2018-03-16 Martin Liska <mliska@suse.cz>
PR ipa/84833
* gcc.target/i386/mvc11.c: New test.
From-SVN: r258596
Martin Liska [Fri, 16 Mar 2018 14:53:24 +0000 (15:53 +0100)]
Properly redirect alias for MVC (PR ipa/84722).
2018-03-16 Martin Liska <mliska@suse.cz>
PR ipa/84722
* multiple_target.c (create_dispatcher_calls): Redirect also
an alias.
2018-03-16 Martin Liska <mliska@suse.cz>
PR ipa/84722
* gcc.target/i386/mvc10.c: New test.
From-SVN: r258595
Jason Merrill [Fri, 16 Mar 2018 14:35:47 +0000 (10:35 -0400)]
PR c++/83937 - wrong C++17 handling of init-list ctor argument.
* call.c (build_special_member_call): Don't convert an init-list
argument directly to the class type.
From-SVN: r258594
Jakub Jelinek [Fri, 16 Mar 2018 12:46:12 +0000 (13:46 +0100)]
re PR c++/79937 (ICE in replace_placeholders_r)
PR c++/79937
PR c++/82410
* tree.h (TARGET_EXPR_NO_ELIDE): Define.
* gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
* cp-tree.h (CONSTRUCTOR_PLACEHOLDER_BOUNDARY): Define.
(find_placeholder): Declare.
* tree.c (struct replace_placeholders_t): Add exp member.
(replace_placeholders_r): Don't walk into ctors with
CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag set, unless they are equal to
d->exp. Replace PLACEHOLDER_EXPR with unshare_expr (x) rather than x.
(replace_placeholders): Initialize data.exp.
(find_placeholders_r, find_placeholders): New functions.
* typeck2.c (process_init_constructor_record,
process_init_constructor_union): Set CONSTRUCTOR_PLACEHOLDER_BOUNDARY
if adding NSDMI on which find_placeholder returns true.
* call.c (build_over_call): Don't call replace_placeholders here.
* cp-gimplify.c (cp_genericize_r): Set TARGET_EXPR_NO_ELIDE on
TARGET_EXPRs with CONSTRUCTOR_PLACEHOLDER_BOUNDARY set on
TARGET_EXPR_INITIAL.
(cp_fold): Copy over CONSTRUCTOR_PLACEHOLDER_BOUNDARY bit to new
ctor.
* g++.dg/cpp1y/pr79937-1.C: New test.
* g++.dg/cpp1y/pr79937-2.C: New test.
* g++.dg/cpp1y/pr79937-3.C: New test.
* g++.dg/cpp1y/pr79937-4.C: New test.
* g++.dg/cpp1y/pr82410.C: New test.
From-SVN: r258593
Jason Merrill [Fri, 16 Mar 2018 12:38:42 +0000 (08:38 -0400)]
PR c++/83911 - ICE with multiversioned constructor.
* cp-gimplify.c (cp_genericize_r): Replace versioned function with
dispatchere here.
* call.c (build_over_call): Not here.
PR c++/83911 - ICE with multiversioned constructor.
From-SVN: r258592
Richard Biener [Fri, 16 Mar 2018 12:04:29 +0000 (12:04 +0000)]
re PR c/84873 (ICE: verify_ssa failed (error: definition in block 3 does not dominate use in block 4))
2018-03-16 Richard Biener <rguenther@suse.de>
PR c/84873
* c-gimplify.c (c_gimplify_expr): Revert previous change. Instead
unshare the possibly folded expression.
From-SVN: r258591
Tom de Vries [Fri, 16 Mar 2018 11:38:57 +0000 (11:38 +0000)]
[testsuite] Require vect_int_mult in pr84512.c
2018-03-16 Tom de Vries <tom@codesourcery.com>
* gcc.dg/tree-ssa/pr84512.c: Require effective target vect_int_mult.
From-SVN: r258590
Tom de Vries [Fri, 16 Mar 2018 11:38:45 +0000 (11:38 +0000)]
[testsuite] Require label_values in builtin-unreachable-6.c
2018-03-16 Tom de Vries <tom@codesourcery.com>
* gcc.dg/builtin-unreachable-6.c: Require effective target label_values.
From-SVN: r258589
Jakub Jelinek [Fri, 16 Mar 2018 08:44:56 +0000 (09:44 +0100)]
re PR c++/84874 (internal compiler error: in reshape_init_class, at cp/decl.c:5800)
PR c++/84874
* g++.dg/cpp2a/desig8.C: New test.
From-SVN: r258588
Julia Koval [Fri, 16 Mar 2018 08:11:27 +0000 (09:11 +0100)]
Fix documentation for CLWB ISA.
gcc/
* doc/invoke.texi (Skylake Server): Add CLWB.
Cannonlake): Remove CLWB.
From-SVN: r258587
Jakub Jelinek [Fri, 16 Mar 2018 08:06:41 +0000 (09:06 +0100)]
re PR tree-optimization/84841 (ICE: tree check: expected ssa_name, have real_cst in rewrite_expr_tree_parallel, at tree-ssa-reassoc.c:4624)
PR tree-optimization/84841
* tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
1 << 3.
(FLOAT_ONE_CONST_TYPE): Define.
(constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
(sort_by_operand_rank): Put entries with higher constant_type last
rather than first to match comments.
* gcc.dg/pr84841.c: New test.
From-SVN: r258586
Jakub Jelinek [Fri, 16 Mar 2018 08:05:06 +0000 (09:05 +0100)]
re PR c++/84874 (internal compiler error: in reshape_init_class, at cp/decl.c:5800)
PR c++/84874
* decl.c (reshape_init_class): Don't assert d->cur->index == field
if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
* g++.dg/cpp2a/desig7.C: New test.
From-SVN: r258585
Mark Doffman [Fri, 16 Mar 2018 05:07:39 +0000 (23:07 -0600)]
03-16-2018 Mark Doffman <mark.doffman@codethink.co.uk>
Jim MacArthur <jim.macarthur@codethink.co.uk>
* gfortran.dg/automatic_1.f90: New test.
* gfortran.dg/automatic_repeat.f90: New test
* gfortran.dg/automatic_save.f90: New test.
* gfortran.dg/vax_structure.f90: New test.
From-SVN: r258584
Steven G. Kargl [Fri, 16 Mar 2018 02:56:34 +0000 (02:56 +0000)]
re PR fortran/78741 (ICE in gfc_get_symbol_decl, at fortran/trans-decl.c:1534)
2018-03-15 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/78741
* decl.c (get_proc_name): Check for clash of entry name with
subroutine name.
2018-03-15 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/78741
* gfortran.dg/pr78741.f90: New test.
From-SVN: r258581
Steven G. Kargl [Fri, 16 Mar 2018 02:43:02 +0000 (02:43 +0000)]
re PR fortran/69395 (ICE on declaring array with more than 7 dimensions+codimensions)
2018-03-15 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/69395
* decl.c (merge_array_spec): Limit the merging to maximum allowed
dimensions, and issue error message if limit is exceeded.
2018-03-15 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/69395
* gfortran.dg/pr69395.f90: New test.
From-SVN: r258580
GCC Administrator [Fri, 16 Mar 2018 00:16:13 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r258579
Sandra Loosemore [Thu, 15 Mar 2018 22:33:34 +0000 (18:33 -0400)]
nios2.md (movsi_internal): Fix thinko in split predicate.
2018-03-15 Sandra Loosemore <sandra@codesourcery.com>
gcc/
* config/nios2/nios2.md (movsi_internal): Fix thinko in
split predicate.
From-SVN: r258575
Jakub Jelinek [Thu, 15 Mar 2018 21:09:24 +0000 (22:09 +0100)]
re PR c++/79085 (ICE with placement new to unaligned location)
PR c++/79085
* calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
check and use address of target always.
* g++.dg/opt/pr79085.C: New test.
From-SVN: r258574
Jakub Jelinek [Thu, 15 Mar 2018 18:04:59 +0000 (19:04 +0100)]
re PR libfortran/84880 (libgfortran fail to build on aarch64/arm 32bit cross toolchain)
PR libgfortran/84880
* intrinsics/kill.c (kill): Rename to...
(PREFIX (kill)): ... this. Use export_proto_np instead of export_proto.
From-SVN: r258571
H.J. Lu [Thu, 15 Mar 2018 17:54:40 +0000 (17:54 +0000)]
i386: Don't generate alias for function return thunk
Function return thunks shouldn't be aliased to indirect branch thunks
since indirect branch thunks are placed in COMDAT section and a COMDAT
section with indirect branch may not have function return thunk. This
patch generates function return thunks directly.
gcc/
PR target/84574
* config/i386/i386.c (indirect_thunk_needed): Update comments.
(indirect_thunk_bnd_needed): Likewise.
(indirect_thunks_used): Likewise.
(indirect_thunks_bnd_used): Likewise.
(indirect_return_needed): New.
(indirect_return_bnd_needed): Likewise.
(output_indirect_thunk_function): Add a bool argument for
function return.
(output_indirect_thunk_function): Don't generate alias for
function return thunk.
(ix86_code_end): Call output_indirect_thunk_function to generate
function return thunks.
(ix86_output_function_return): Set indirect_return_bnd_needed
and indirect_return_needed instead of indirect_thunk_bnd_needed
and indirect_thunk_needed.
gcc/testsuite/
PR target/84574
* gcc.target/i386/ret-thunk-9.c: Expect __x86_return_thunk
label instead of __x86_indirect_thunk label.
From-SVN: r258569
Jakub Jelinek [Thu, 15 Mar 2018 17:45:01 +0000 (18:45 +0100)]
re PR c++/84222 ([[deprecated]] class complains about internal class usage)
PR c++/84222
* cp-tree.h (cp_warn_deprecated_use): Declare.
* tree.c (cp_warn_deprecated_use): New function.
* typeck2.c (build_functional_cast): Use it.
* decl.c (grokparms): Likewise.
(grokdeclarator): Likewise. Temporarily push nested class scope
around grokparms call for out of class member definitions.
* g++.dg/warn/deprecated.C (T::member3): Change dg-warning to dg-bogus.
* g++.dg/warn/deprecated-6.C (T::member3): Likewise.
* g++.dg/warn/deprecated-13.C: New test.
From-SVN: r258568
Ian Lance Taylor [Thu, 15 Mar 2018 16:56:24 +0000 (16:56 +0000)]
cmd/go: force LANG=C when looking for compiler version
Tested by installing the gcc-locales package and running
LANG=de_DE.utf8 go build hello.go
Without this change, that fails, as described at
https://gcc.gnu.org/PR84765.
Reviewed-on: https://go-review.googlesource.com/100737
From-SVN: r258565
David Malcolm [Thu, 15 Mar 2018 15:52:11 +0000 (15:52 +0000)]
Credit Paul Hua for r258559
From-SVN: r258561
Olga Makhotina [Thu, 15 Mar 2018 15:46:38 +0000 (15:46 +0000)]
Enable Intel ENCLV support.
2018-03-15 Olga Makhotina <olga.makhotina@intel.com>
gcc/
* config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
(__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
(ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves.
gcc/testsuite/
* gcc.target/i386/sgx.c (_enclv_u32): Test new intrinsic.
From-SVN: r258560
David Malcolm [Thu, 15 Mar 2018 15:39:46 +0000 (15:39 +0000)]
Fix testcase for PR c/84852
gcc/testsuite/ChangeLog:
PR c/84852
* gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
From-SVN: r258559
Segher Boessenkool [Thu, 15 Mar 2018 15:17:07 +0000 (16:17 +0100)]
rs6000: Fix for the previous abi_v4_pass_in_fpr change
I was a bit over-enthusiastic, we still support xilinxfp.
* config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode
resp. SFmode cases.
From-SVN: r258557
Richard Biener [Thu, 15 Mar 2018 13:10:24 +0000 (13:10 +0000)]
re PR c/84873 (ICE: verify_ssa failed (error: definition in block 3 does not dominate use in block 4))
2018-03-15 Richard Biener <rguenther@suse.de>
PR c/84873
* c-gimplify.c (c_gimplify_expr): Do not fold expressions.
* c-c++-common/pr84873.c: New testcase.
From-SVN: r258556
Tamar Christina [Thu, 15 Mar 2018 10:53:17 +0000 (10:53 +0000)]
re PR target/84711 (AArch32 big-endian fails when taking subreg of a vector mode to a scalar mode.)
2018-03-15 Tamar Christina <tamar.christina@arm.com>
PR target/84711
* config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
instead of GET_MODE_SIZE when comparing Units.
gcc/testsuite/
2018-03-15 Tamar Christina <tamar.christina@arm.com>
PR target/84711
* gcc.target/arm/big-endian-subreg.c: New.
From-SVN: r258554
Vladimir Mezentsev [Thu, 15 Mar 2018 08:55:04 +0000 (08:55 +0000)]
re PR target/68256 (Defining TARGET_USE_CONSTANT_BLOCKS_P causes go bootstrap failure on aarch64.)
2018-03-15 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
PR target/68256
* varasm.c (hash_section): Return an unchangeble hash value
* config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
Return !aarch64_can_use_per_function_literal_pools_p ().
From-SVN: r258553
Jakub Jelinek [Thu, 15 Mar 2018 08:35:28 +0000 (09:35 +0100)]
re PR target/84860 (ICE in emit_move_insn, at expr.c:3717)
PR target/84860
* optabs.c (emit_conditional_move): Pass address of cmode's copy
rather than address of cmode as last argument to prepare_cmp_insn.
* gcc.c-torture/compile/pr84860.c: New test.
From-SVN: r258552
Julia Koval [Thu, 15 Mar 2018 07:52:36 +0000 (08:52 +0100)]
Add builtin_cpu for cannonlake and new isa features.
gcc/
* config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
F_AVX512VNNI, F_AVX512BITALG): New.
gcc/testsuite/
* gcc.target/i386/builtin_target.c (check_intel_cpu_model): Add
cannonlake.
(check_features): Add avx512vbmi2, gfni, vpclmulqdq, avx512vnni,
avx512bitalg.
libgcc/
* config/i386/cpuinfo.c (get_available_features): Add
FEATURE_AVX512VBMI2, FEATURE_GFNI, FEATURE_VPCLMULQDQ,
FEATURE_AVX512VNNI, FEATURE_AVX512BITALG.
* config/i386/cpuinfo.h (processor_features) Add
FEATURE_AVX512VBMI2, FEATURE_GFNI, FEATURE_VPCLMULQDQ,
FEATURE_AVX512VNNI, FEATURE_AVX512BITALG.
From-SVN: r258551
Jakub Jelinek [Thu, 15 Mar 2018 07:37:53 +0000 (08:37 +0100)]
re PR c/84853 (ICE: verify_gimple failed (expand_shift_1))
PR c/84853
* c-typeck.c (build_binary_op) <case RSHIFT_EXPR, case LSHIFT_EXPR>:
If code1 is INTEGER_TYPE, only allow code0 VECTOR_TYPE if it has
INTEGER_TYPE element type.
* gcc.dg/pr84853.c: New test.
From-SVN: r258550
Jason Merrill [Thu, 15 Mar 2018 04:34:45 +0000 (00:34 -0400)]
PR c++/84820 - no error for invalid qualified-id.
* parser.c (cp_parser_make_indirect_declarator): Don't wrap
cp_error_declarator.
From-SVN: r258549
Jason Merrill [Thu, 15 Mar 2018 03:49:07 +0000 (23:49 -0400)]
PR c++/84801 - ICE with unexpanded pack in lambda.
We avoid complaining about unexpanded packs when inside a lambda,
since the lambda as a whole could be part of a pack expansion.
But that can only be true if the lambda is in a template context.
* pt.c (check_for_bare_parameter_packs): Don't return early for a
lambda in non-template context.
From-SVN: r258548
Jason Merrill [Thu, 15 Mar 2018 03:08:24 +0000 (23:08 -0400)]
PR c++/81236 - auto variable and auto function
* pt.c (tsubst_baselink): Update the type of the BASELINK after
mark_used.
From-SVN: r258547
GCC Administrator [Thu, 15 Mar 2018 00:16:25 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r258546
John David Anglin [Wed, 14 Mar 2018 23:31:57 +0000 (23:31 +0000)]
re PR target/83451 (FAIL: gfortran.dg/matmul_10.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (ICE))
PR target/83451
* config/pa/pa.c (pa_emit_move_sequence): Always emit secondary reload
insn for floating-point loads and stores.
From-SVN: r258541
Jonathan Wakely [Wed, 14 Mar 2018 23:02:01 +0000 (23:02 +0000)]
PR libstdc++/78420 Make std::less etc. yield total order for pointers
In order for std::less<T*> etc. to meet the total order requirements of
[comparisons] p2 we need to cast unrelated pointers to uintptr_t before
comparing them. Those casts aren't allowed in constant expressions, so
only cast when __builtin_constant_p says the result of the comparison is
not a compile-time constant (because the arguments are not constants, or
the result of the comparison is unspecified). When the result is
constant just compare the pointers directly without casting.
This ensures that the function can be called in constant expressions
with suitable arguments, but still yields a total order even for
otherwise unspecified pointer comparisons.
For std::less<void> etc. add new overloads for pointers, which use
std::less<common_type_t<T*,U*>> directly. Also change the generic
overloads to detect when the comparison would call a built-in relational
operator with pointer operands, and dispatch that case to the
corresponding specialization for void pointers.
PR libstdc++/78420
* include/bits/stl_function.h (greater<_Tp*>, less<_Tp*>)
(greater_equal<_Tp*>, less_equal<_Tp>*): Add partial specializations
to ensure total order for pointers.
(greater<void>, less<void>, greater_equal<void>, less_equal<void>):
Add operator() overloads for pointer arguments and make generic
overloads dispatch to new _S_cmp functions when comparisons would
use built-in operators for pointers.
* testsuite/20_util/function_objects/comparisons_pointer.cc: New.
From-SVN: r258540
Carl Love [Wed, 14 Mar 2018 23:01:12 +0000 (23:01 +0000)]
re PR target/84422 (ICE on various builtin test functions when compiled with -mcpu=power7)
gcc/ChangeLog:
2018-03-14 Carl Love <cel@us.ibm.com>
PR target/84422
* config/rs6000/rs6000-builtin.def: Change expansion for
VMULESW to BU_P8V_AV_2.
Change expansion for VMULEUW to BU_P8V_AV_2.
* config/rs6000/rs6000.c: Change
ALTIVEC_BUILTIN_VMULESW to P8V_BUILTIN_VMULESW.
Change ALTIVEC_BUILTIN_VMULEUW to P8V_BUILTIN_VMULEUW.
Change ALTIVEC_BUILTIN_VMULOSW to P8V_BUILTIN_VMULOSW.
Change ALTIVEC_BUILTIN_VMULOUW to P8V_BUILTIN_VMULOUW.
* config/rs6000/rs6000-c.c: Change
ALTIVEC_BUILTIN_VMULESW to P8V_BUILTIN_VMULESW.
Change ALTIVEC_BUILTIN_VMULEUW to P8V_BUILTIN_VMULEUW.
Change ALTIVEC_BUILTIN_VMULOSW to P8V_BUILTIN_VMULOSW.
Change ALTIVEC_BUILTIN_VMULOUW to P8V_BUILTIN_VMULOUW.
From-SVN: r258539
Jason Merrill [Wed, 14 Mar 2018 19:17:03 +0000 (15:17 -0400)]
PR c++/83916 - ICE with template template parameters.
* pt.c (convert_template_argument): Don't substitute into type of
non-type parameter if we don't have enough arg levels.
(unify): Likewise.
From-SVN: r258533
Carl Love [Wed, 14 Mar 2018 17:38:15 +0000 (17:38 +0000)]
rs6000-c.c: Add macro definitions for ALTIVEC_BUILTIN_VEC_PERMXOR.
gcc/ChangeLog:
2018-03-14 Carl Love <cel@us.ibm.com>
* config/rs6000/rs6000-c.c: Add macro definitions for
ALTIVEC_BUILTIN_VEC_PERMXOR.
* config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
* config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
* config/rs6000/altivec.md (altivec_vpermxor): New define expand.
* config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
UNSPEC_VPERMXOR.
* config/doc/extend.texi: Add prototypes for vec_permxor.
gcc/testsuite/ChangeLog:
2018-03-14 Carl Love <cel@us.ibm.com>
* gcc.target/powerpc/builtins-7-runnable.c: New test file.
From-SVN: r258530
Martin Liska [Wed, 14 Mar 2018 17:26:38 +0000 (18:26 +0100)]
Add test-case (PR ipa/84805).
2018-03-14 Martin Liska <mliska@suse.cz>
PR ipa/8480
* g++.dg/lto/pr84805_0.C: New test.
* g++.dg/lto/pr84805_1.C: New test.
* g++.dg/lto/pr84805_2.C: New test.
From-SVN: r258529
David Malcolm [Wed, 14 Mar 2018 13:58:13 +0000 (13:58 +0000)]
Fix ICE for missing header fix-it hints with overlarge #line directives (PR c/84852)
PR c/84852 reports an ICE inside diagnostic_show_locus when printing
a diagnostic for a source file with a #line >= 2^31:
#line
7777777777
int foo (void) { return strlen(""); }
where we're attempting to print a fix-it hint at the top of the file
and underline the "strlen" (two "line spans").
The
#line
7777777777
won't fix within the 32-bit linenum_type, and is truncated from
0x1cf977871
to
0xcf977871
i.e.
3482810481 in decimal.
Such a #line is reported by -pedantic and -pedantic-errors, but we
shouldn't ICE.
The ICE is an assertion failure within layout::calculate_line_spans,
where the line spans have not been properly sorted.
The layout_ranges are stored as int, rather than linenum_type,
giving line -
812156815 for the error, and line 1 for the fix-it hint.
However, line_span uses linenum_type rather than int.
line_span::comparator compares these values as int, and hence
decides that (linenum_type)
3482810481 aka (int)-
812156815 is less
than line 1.
This leads to this assertion failing in layout::calculate_line_spans:
1105 gcc_assert (next->m_first_line >= current->m_first_line);
since it isn't the case that 1 >=
3482810481.
The underlying problem is the mix of types for storing line numbers:
in parts of libcpp and diagnostic-show-locus.c we use linenum_type;
in other places (including libcpp's expanded_location) we use int.
I looked at using linenum_type throughout, but doing so turned into
a large patch, so this patch fixes the ICE in a less invasive way
by merely using linenum_type more consistently just within
diagnostic-show-locus.c, and fixing line_span::comparator to properly
handle line numbers (and line number differences) >= 2^31, by using
a new helper function for linenum_type differences, computing the
difference using long long, and using the sign of the difference
(as the difference might not fit in the "int" return type imposed
by qsort).
gcc/ChangeLog:
PR c/84852
* diagnostic-show-locus.c (class layout_point): Convert m_line
from int to linenum_type.
(line_span::comparator): Use linenum "compare" function when
comparing line numbers.
(test_line_span): New function.
(layout_range::contains_point): Convert param "row" from int to
linenum_type.
(layout_range::intersects_line_p): Likewise.
(layout::will_show_line_p): Likewise.
(layout::print_source_line): Likewise.
(layout::should_print_annotation_line_p): Likewise.
(layout::print_annotation_line): Likewise.
(layout::print_leading_fixits): Likewise.
(layout::annotation_line_showed_range_p): Likewise.
(struct line_corrections): Likewise for field m_row.
(line_corrections::line_corrections): Likewise for param "row".
(layout::print_trailing_fixits): Likewise.
(layout::get_state_at_point): Likewise.
(layout::get_x_bound_for_row): Likewise.
(layout::print_line): Likewise.
(diagnostic_show_locus): Likewise for locals "last_line" and
"row".
(selftest::diagnostic_show_locus_c_tests): Call test_line_span.
* input.c (selftest::test_linenum_comparisons): New function.
(selftest::input_c_tests): Call it.
* selftest.c (selftest::test_assertions): Test ASSERT_GT,
ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
* selftest.h (ASSERT_GT): New macro.
(ASSERT_GT_AT): New macro.
(ASSERT_LT): New macro.
(ASSERT_LT_AT): New macro.
gcc/testsuite/ChangeLog:
PR c/84852
* gcc.dg/fixits-pr84852-1.c: New test.
* gcc.dg/fixits-pr84852-2.c: New test.
libcpp/ChangeLog:
* include/line-map.h (compare): New function on linenum_type.
From-SVN: r258526
Segher Boessenkool [Wed, 14 Mar 2018 13:46:03 +0000 (14:46 +0100)]
rs6000: Fix sanitizer frame unwind on 32-bit ABIs
This fixes more than half of our testcase failures on BE.
libsanitizer/
* sanitizer_common/sanitizer_stacktrace.cc
(BufferedStackTrace::FastUnwindStack): Use the correct frame offset
for PowerPC SYSV ABI.
From-SVN: r258525
Segher Boessenkool [Wed, 14 Mar 2018 12:24:21 +0000 (13:24 +0100)]
combine: Don't make log_links for pc_rtx (PR84780 #c10)
distribute_links tries to place a log_link for whatever the destination
of the modified instruction is. It shouldn't do that when that dest
is pc_rtx, which isn't actually a register.
* combine.c (distribute_links): Don't make a link based on pc_rtx.
From-SVN: r258523
Martin Liska [Wed, 14 Mar 2018 11:17:01 +0000 (12:17 +0100)]
Fix tree statistics with -fmem-report.
2018-03-14 Martin Liska <mliska@suse.cz>
* tree.c (record_node_allocation_statistics): Use
get_stats_node_kind.
(get_stats_node_kind): New function extracted from
record_node_allocation_statistics.
(free_node): Use get_stats_node_kind.
From-SVN: r258521
Richard Biener [Wed, 14 Mar 2018 10:55:45 +0000 (10:55 +0000)]
tree-ssa-pre.c (compute_antic_aux): Remove code that asserts that the value-set of ANTIC_IN doesn't grow.
2018-03-14 Richard Biener <rguenther@suse.de>
* tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
that the value-set of ANTIC_IN doesn't grow.
Revert
* tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
member.
(BB_VISITED_WITH_VISITED_SUCCS): New define.
(compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
From-SVN: r258520
Thomas Preud'homme [Wed, 14 Mar 2018 10:47:32 +0000 (10:47 +0000)]
Fix FAIL display for some scan-*-times directives
scan-assembler-times and scan-tree-dump-times dejagnu directives show a
different output in the summary files depending on whether they PASS or
FAIL. This means that dg-cmp-results would not show a regression because
it would not see a connection between the two output.
The difference comes from the FAIL showing the number of actual times
the pattern was match, presumably to help debugging. This patch moves
the info regarding the actual number of times the pattern match in a
separate verbose message. This keeps the message unchanged but let
developers have the required debug message with -v.
2018-03-14 Thomas Preud'homme <thomas.preudhomme@arm.com>
gcc/testsuite/
* lib/scanasm.exp (scan-assembler-times): Move FAIL debug info into a
separate verbose message.
* lib/scandump.exp (scan-dump-times): Likewise.
From-SVN: r258519
Julia Koval [Wed, 14 Mar 2018 10:26:38 +0000 (11:26 +0100)]
Split-up -march=icelake on -march=icelake-server and -march=icelake-client
Split-up -march=icelake on -march=icelake-server and -march=icelake-client
gcc/
* config.gcc (icelake-client, icelake-server): New.
(icelake): Remove.
* config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
(initial_ix86_arch_features): Ditto.
(PTA_SKYLAKE): Add SGX.
(PTA_ICELAKE): Remove.
(PTA_ICELAKE_CLIENT): New.
(PTA_ICELAKE_SERVER): New.
(ix86_option_override_internal): Split up icelake on icelake client and
icelake server.
(get_builtin_code_for_version): Ditto.
(fold_builtin_cpu): Ditto.
* config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
* config/i386/i386-c.c (ix86_target_macros_internal): Ditto
* config/i386/i386.h (processor_type): Ditto.
* doc/invoke.texi: Ditto.
gcc/testsuite/
* g++.dg/ext/mv16.C: Split up icelake on icelake client and
icelake-server.
* gcc.target/i386/funcspec-56.inc: Ditto.
libgcc/
* config/i386/cpuinfo.h (processor_subtypes): Split up icelake on
icelake-client and icelake-server.
From-SVN: r258518
Richard Sandiford [Wed, 14 Mar 2018 09:12:55 +0000 (09:12 +0000)]
[AArch64] Fix mul_highpart_1_run.c markup
2018-03-14 Richard Sandiford <richard.sandiford@linaro.org>
gcc/testsuite/
* gcc.target/aarch64/sve/mul_highpart_1_run.c: Restrict to
aarch64_sve_hw.
From-SVN: r258517
Jakub Jelinek [Wed, 14 Mar 2018 08:50:23 +0000 (09:50 +0100)]
re PR sanitizer/83392 (FAIL: c-c++-common/ubsan/ptr-overflow-sanitization-1.c scan-tree-dump-times)
PR sanitizer/83392
* sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
INTEGER_CST offset, add it together with bitpos / 8 and
sign extend based on POINTER_SIZE.
* c-c++-common/ubsan/ptr-overflow-sanitization-1.c: Adjust expected
check count from 17 to 14.
From-SVN: r258516
Jakub Jelinek [Wed, 14 Mar 2018 08:48:40 +0000 (09:48 +0100)]
re PR target/84844 (ICE in extract_constrain_insn_cached, at recog.c:2217 (error: insn does not satisfy its constraints))
PR target/84844
Revert
2017-04-20 Uros Bizjak <ubizjak@gmail.com>
PR target/78090
* config/i386/constraints.md (Yc): New register constraint.
* config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
Use Yc constraint for alternative 2 of operand 0. Remove
preferred_for_speed attribute.
* gcc.target/i386/pr84844.c: New test.
From-SVN: r258515
Richard Biener [Wed, 14 Mar 2018 08:07:45 +0000 (08:07 +0000)]
re PR tree-optimization/84830 (ICE in compute_antic, at tree-ssa-pre.c:2388)
2018-03-14 Richard Biener <rguenther@suse.de>
PR tree-optimization/84830
* tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
with the old one to avoid oscillations.
* gcc.dg/torture/pr84830.c: New testcase.
From-SVN: r258514
Marek Polacek [Wed, 14 Mar 2018 06:14:57 +0000 (06:14 +0000)]
re PR c++/84596 (internal compiler error: unexpected expression '(bool)c' of kind implicit_conv_expr (cxx_eval_constant_expression))
PR c++/84596
* semantics.c (finish_static_assert): Check
instantiation_dependent_expression_p instead of
{type,value}_dependent_expression_p.
* g++.dg/cpp0x/static_assert15.C: New test.
From-SVN: r258513
Paolo Carlini [Wed, 14 Mar 2018 01:03:13 +0000 (01:03 +0000)]
PR c++/82336 - link error with list-init default argument.
* decl.c (check_default_argument): Unshare an initializer list.
Co-Authored-By: Jason Merrill <jason@redhat.com>
From-SVN: r258512
Steven G. Kargl [Wed, 14 Mar 2018 00:56:48 +0000 (00:56 +0000)]
check.c (gfc_check_kill_sub): Remove check for INTEGER(4) or (8).
2018-03-13 Steven G. Kargl <kargl@gcc.gnu.org>
* check.c (gfc_check_kill_sub): Remove check for INTEGER(4) or (8).
* intrinsic.c (add_functions): Remove reference to gfc_resolve_kill.
(add_subroutines): Remove reference to gfc_resolve_kill_sub.
* intrinsic.texi: Update documentation.
* iresolve.c (gfc_resolve_kill, gfc_resolve_kill_sub): Remove.
* trans-decl.c (gfc_build_intrinsic_function_decls): Add
gfor_fndecl_kill and gfor_fndecl_kill_sub
* trans-intrinsic.c (conv_intrinsic_kill, conv_intrinsic_kill_sub): new
functions.
(gfc_conv_intrinsic_function): Use conv_intrinsic_kill.
(gfc_conv_intrinsic_subroutine): Use conv_intrinsic_kill_sub.
* trans.h: Declare gfor_fndecl_kill and gfor_fndecl_kill_sub.
2018-03-13 Steven G. Kargl <kargl@gcc.gnu.org>
* libgfortran/gfortran.map: Remove _gfortran_kill_i4,
_gfortran_kill_i4_sub, _gfortran_kill_i8, and _gfortran_kill_i8_sub.
Add _gfortran_kill and _gfortran_kill_sub.
* libgfortran/intrinsics/kill.c: Eliminate _gfortran_kill_i4,
_gfortran_kill_i4_sub, _gfortran_kill_i8, and _gfortran_kill_i8_sub.
Add _gfortran_kill and _gfortran_kill_sub.
From-SVN: r258511
Steven G. Kargl [Wed, 14 Mar 2018 00:45:45 +0000 (00:45 +0000)]
re PR fortran/61775 (Allocatable array initialized by implied-do loop array constructor gives invalid memory reference)
2018-03-13 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/61775
* gfortran.dg/pr61775.f90: New test.
From-SVN: r258509
GCC Administrator [Wed, 14 Mar 2018 00:16:27 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r258508
Vladimir Makarov [Tue, 13 Mar 2018 20:42:49 +0000 (20:42 +0000)]
re PR target/83712 ("Unable to find a register to spill" when compiling for thumb1)
2018-03-13 Vladimir Makarov <vmakarov@redhat.com>
PR target/83712
* lra-assigns.c (find_all_spills_for): Ignore uninteresting
pseudos.
(assign_by_spills): Return a flag of reload assignment failure.
Do not process the reload assignment failures. Do not spill other
reload pseudos if they has the same reg class. Update n if
necessary.
(lra_assign): Add a return arg. Set up from the result of
assign_by_spills call.
(find_reload_regno_insns, lra_split_hard_reg_for): New functions.
* lra-constraints.c (split_reg): Add a new arg. Use it instead of
usage_insns if it is not NULL.
(spill_hard_reg_in_range): New function.
(split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
* lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
function prototypes.
(lra_assign): Change prototype.
* lra.c (lra): Add code to deal with fails by splitting hard reg
live ranges.
From-SVN: r258504
Jakub Jelinek [Tue, 13 Mar 2018 20:32:54 +0000 (21:32 +0100)]
re PR c++/84843 (C++ ICE on builtin redefinition since r258391)
PR c++/84843
* decl.c (duplicate_decls): For redefinition of built-in, use error
and return error_mark_node. For redeclaration, return error_mark_node
rather than olddecl if !flag_permissive.
* g++.dg/ext/pr84843-1.C: New test.
* g++.dg/ext/pr84843-2.C: New test.
From-SVN: r258503
Jason Merrill [Tue, 13 Mar 2018 20:22:31 +0000 (16:22 -0400)]
PR c++/82565 - ICE with concepts and generic lambda.
* pt.c (instantiate_decl): Clear fn_context for lambdas.
From-SVN: r258502
Jason Merrill [Tue, 13 Mar 2018 18:58:15 +0000 (14:58 -0400)]
PR c++/84720 - ICE with rvalue ref non-type argument.
* pt.c (convert_nontype_argument): Handle rvalue references.
From-SVN: r258501
Jason Merrill [Tue, 13 Mar 2018 18:57:10 +0000 (14:57 -0400)]
PR c++/84839 - ICE with decltype of parameter pack.
* pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
instantiating dummy parms.
From-SVN: r258500
Palmer Dabbelt [Tue, 13 Mar 2018 18:35:06 +0000 (18:35 +0000)]
RISC-V: Add and document the "-mno-relax" option
RISC-V relies on aggressive linker relaxation to get good code size. As
a result no text symbol addresses can be known until link time, which
means that alignment must be handled during the link. This alignment
pass is essentially just another linker relaxation, so this has the
unfortunate side effect that linker relaxation is required for
correctness on many RISC-V targets.
The RISC-V assembler has supported an ".option norelax" for a long time
because there are situations in which linker relaxation is a bad idea --
the canonical example is when trying to materialize the initial value of
the global pointer into a register, which would otherwise be relaxed to
a NOP. We've been relying on users who want to disable relaxation for
an entire link to pass "-Wl,--no-relax", but that still relies on the
linker relaxing R_RISCV_ALIGN to handle alignment despite it not being
strictly necessary.
This patch adds a GCC option, "-mno-relax", that disable linker
relaxation by adding ".option norelax" to the top of every generated
assembly file. The assembler is smart enough to handle alignment at
assemble time for files that have never emitted a relaxable relocation,
so this is sufficient to really disable all relaxations in the linker,
which results in significantly faster link times for large objects.
This also has the side effect of allowing toolchains that don't support
linker relaxation (LLVM and the Linux module loader) to function
correctly. Toolchains that don't support linker relaxation should
default to "-mno-relax" and error when presented with any R_RISCV_ALIGN
relocation as those need to be handled for correctness.
gcc/ChangeLog
2018-03-13 Palmer Dabbelt <palmer@sifive.com>
* config/riscv/riscv.opt (mrelax): New option.
* config/riscv/riscv.c (riscv_file_start): Emit ".option
"norelax" when riscv_mrelax is disabled.
* doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
From-SVN: r258499
David Pagan [Tue, 13 Mar 2018 18:10:09 +0000 (18:10 +0000)]
PR c/46921 Lost side effect when struct initializer expression uses comma operator
This patch fixes improper handling of comma operator expression in a
struct field initializer as described in:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=46921
Currently, function output_init_element () does not evaluate the left
hand expression in a comma operator that's used for a struct
initializer field if the right hand side is zero-sized. However, the
left hand expression must be evaluated if it's found to have side
effects (for example, a function call).
Patch was successfully bootstrapped and tested on x86_64-linux.
gcc/c:
2018-03-13 David Pagan <dave.pagan@oracle.com>
PR c/46921
* c-typeck.c (output_init_element): Ensure field initializer
expression is always evaluated if there are side effects.
gcc/testsuite:
2018-03-13 David Pagan <dave.pagan@oracle.com>
PR c/46921
* gcc.dg/pr46921.c: New test.
From-SVN: r258497
Aaron Sawdey [Tue, 13 Mar 2018 16:28:09 +0000 (16:28 +0000)]
re PR target/84743 (default widths for parallel reassociation now hurt rather than help)
2018-03-13 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
PR target/84743
* config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
reassociation for int modes.
From-SVN: r258495
Jason Merrill [Tue, 13 Mar 2018 15:55:44 +0000 (11:55 -0400)]
Pedwarn about auto parameter even without -Wpedantic.
* parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
parameter even without -Wpedantic.
From-SVN: r258494
Jason Merrill [Tue, 13 Mar 2018 15:55:07 +0000 (11:55 -0400)]
PR c++/84798 - ICE with auto in abstract function declarator.
* parser.c (cp_parser_parameter_declaration_clause): Check
parser->default_arg_ok_p.
From-SVN: r258493
Martin Sebor [Tue, 13 Mar 2018 15:33:16 +0000 (15:33 +0000)]
PR tree-optimization/84725 - enable attribute nonstring for all narrow character types
gcc/c-family/ChangeLog:
PR tree-optimization/84725
* c-attribs.c (handle_nonstring_attribute): Allow attribute nonstring
with all three narrow character types, including their qualified forms.
gcc/testsuite/ChangeLog:
PR tree-optimization/84725
* c-c++-common/Wstringop-truncation-4.c: New test.
* c-c++-common/attr-nonstring-5.c: New test.
From-SVN: r258492
Richard Sandiford [Tue, 13 Mar 2018 15:13:37 +0000 (15:13 +0000)]
[SLP/AArch64] Fix unpack handling for big-endian SVE
I hadn't realised that on big-endian targets, VEC_UNPACK*HI_EXPR unpacks
the low-numbered lanes and VEC_UNPACK*LO_EXPR unpacks the high-numbered
lanes. This meant that both the SVE patterns and the handling of
fully-masked loops were wrong.
The patch deals with that by making sure that all vec_unpack* optabs
are define_expands, using BYTES_BIG_ENDIAN to choose the appropriate
define_insn. This in turn meant that we can get rid of the duplication
between the signed and unsigned patterns for predicates. (We provide
implementations of both the signed and unsigned optabs because the sign
doesn't matter for predicates: every element contains only one
significant bit.)
Also, the float unpacks need to unpack one half of the input vector,
but the unpacked upper bits are "don't care". There are two obvious
ways of handling that: use an unpack (filling with zeros) or use a ZIP
(filling with a duplicate of the low bits). The code previously used
unpacks, but the sequence involved a subreg that is semantically an
element reverse on big-endian targets. Using the ZIP patterns avoids
that, and at the moment there's no reason to prefer one over the other
for performance reasons, so the patch switches to ZIP unconditionally.
As the comment says, it would be easy to optimise this later if UUNPK
turns out to be better for some implementations.
2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
for big-endian.
* config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
* config/aarch64/aarch64-sve.md
(*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
(aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
(*extend<mode><Vwide>2): Rename to...
(aarch64_sve_extend<mode><Vwide>2): ...this.
(vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
renaming the old pattern to...
(aarch64_sve_punpk<perm_hilo>_<mode>): ...this. Only define
unsigned packs.
(vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
define_expand, renaming the old pattern to...
(aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
(*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
(vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
account when deciding which SVE instruction the optab should use.
(vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
gcc/testsuite/
* gcc.target/aarch64/sve/unpack_fcvt_signed_1.c: Expect zips rather
than unpacks.
* gcc.target/aarch64/sve/unpack_fcvt_unsigned_1.c: Likewise.
* gcc.target/aarch64/sve/unpack_float_1.c: Likewise.
From-SVN: r258489
Richard Sandiford [Tue, 13 Mar 2018 15:12:59 +0000 (15:12 +0000)]
[AArch64] Add a tlsdesc call pattern for SVE
tlsdesc calls are guaranteed to preserve all Advanced SIMD registers,
but are not guaranteed to preserve the SVE extension of them.
The calls also don't preserve the SVE predicate registers.
The long-term plan for handling the SVE vector registers is CLOBBER_HIGH,
which adds a clobber equivalent of TARGET_HARD_REGNO_CALL_PART_CLOBBERED.
The pattern can then directly model the fact that the low 128 bits are
preserved and the upper bits are clobbered.
However, it's too late now for that to be included in GCC 8, so this
patch conservatively treats the whole vector register as being clobbered.
This has the obvious disadvantage that compiling for SVE can make NEON
code worse, but I don't think there's much we can do about that until
CLOBBER_HIGH is in.
2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
(V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
(P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
(P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
(tlsdesc_small_<mode>): Turn a define_expand and use
tlsdesc_small_sve_<mode> for SVE. Rename original define_insn to...
(tlsdesc_small_advsimd_<mode>): ...this.
(tlsdesc_small_sve_<mode>): New pattern.
gcc/testsuite/
* gcc.target/aarch64/sve/tls_1.c: New test.
* gcc.target/aarch64/sve/tls_2.C: Likewise.
From-SVN: r258488
Richard Sandiford [Tue, 13 Mar 2018 15:12:14 +0000 (15:12 +0000)]
[AArch64] Add SVE mul_highpart patterns
One advantage of the new permute handling compared to the old way is
that we can now easily take advantage of the vectoriser's divmod patterns
for SVE.
2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
(UNSPEC_UMUL_HIGHPART): New constants.
(MUL_HIGHPART): New int iteraor.
(su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
* config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
define_expand.
(*<su>mul<mode>3_highpart): New define_insn.
gcc/testsuite/
* gcc.target/aarch64/sve/mul_highpart_1.c: New test.
* gcc.target/aarch64/sve/mul_highpart_1_run.c: Likewise.
From-SVN: r258487
Richard Sandiford [Tue, 13 Mar 2018 15:11:46 +0000 (15:11 +0000)]
MAINTAINERS: Add entry for SVE maintainership.
2018-03-13 Richard Sandiford <richard.sandiford@arm.com>
* MAINTAINERS: Add entry for SVE maintainership.
From-SVN: r258486
Eric Botcazou [Tue, 13 Mar 2018 10:04:51 +0000 (10:04 +0000)]
re PR lto/84805 (ICE in get_odr_type, at ipa-devirt.c:2096 since r258133)
PR lto/84805
* ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
incomplete types.
From-SVN: r258481
Martin Liska [Tue, 13 Mar 2018 08:20:27 +0000 (09:20 +0100)]
Fix PTA info in IPA ICF (PR ipa/84658).
2018-03-13 Martin Liska <mliska@suse.cz>
PR ipa/84658.
* (sem_item_optimizer::sem_item_optimizer): Initialize new
vector.
(sem_item_optimizer::~sem_item_optimizer): Release it.
(sem_item_optimizer::merge_classes): Register variable aliases.
(sem_item_optimizer::fixup_pt_set): New function.
(sem_item_optimizer::fixup_points_to_sets): Likewise.
* ipa-icf.h: Declare new variables and functions.
2018-03-13 Martin Liska <mliska@suse.cz>
PR ipa/84658.
* g++.dg/ipa/pr84658.C: New test.
From-SVN: r258480
Jakub Jelinek [Tue, 13 Mar 2018 08:12:59 +0000 (09:12 +0100)]
re PR middle-end/84834 (ICE: tree check: expected integer_cst, have complex_cst in to_wide, at tree.h:5527)
PR middle-end/84834
* match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
integer_pow2p@2 and test integer_pow2p in condition.
(A < 0 ? C : 0): Similarly for @1.
* gcc.dg/pr84834.c: New test.
From-SVN: r258479
Jakub Jelinek [Tue, 13 Mar 2018 08:12:07 +0000 (09:12 +0100)]
re PR middle-end/84831 (Invalid memory read in parse_output_constraint)
PR middle-end/84831
* stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
characters starting at p contain '\0' character, don't look beyond
that.
From-SVN: r258478
Jakub Jelinek [Tue, 13 Mar 2018 08:05:58 +0000 (09:05 +0100)]
re PR target/84827 (ICE in extract_insn, at recog.c:2311)
PR target/84827
* config/i386/i386.md (round<mode>2): For 387 fancy math, disable
pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
* gcc.target/i386/pr84827.c: New test.
From-SVN: r258477
Jakub Jelinek [Tue, 13 Mar 2018 08:04:54 +0000 (09:04 +0100)]
re PR target/84828 (ICE in verify_flow_info at gcc/cfghooks.c:265)
PR target/84828
* reg-stack.c (change_stack): Change update_end var from int to
rtx_insn *, if non-NULL don't update just BB_END (current_block), but
also call set_block_for_insn on the newly added insns and rescan.
* g++.dg/ext/pr84828.C: New test.
From-SVN: r258476
Jakub Jelinek [Tue, 13 Mar 2018 08:03:28 +0000 (09:03 +0100)]
re PR target/84786 ([miscompilation] vunpcklpd accessing xmm16-22 targeting KNL)
PR target/84786
* config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
on the last operand.
* gcc.target/i386/avx512f-pr84786-1.c: New test.
* gcc.target/i386/avx512f-pr84786-2.c: New test.
From-SVN: r258475
GCC Administrator [Tue, 13 Mar 2018 00:16:25 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r258474
Jakub Jelinek [Mon, 12 Mar 2018 23:40:20 +0000 (00:40 +0100)]
re PR c++/84808 (ICE with constexpr and array)
PR c++/84808
* constexpr.c (find_array_ctor_elt): Don't use elt reference after
first potential CONSTRUCTOR_ELTS reallocation. Convert dindex to
sizetype. Formatting fixes.
* g++.dg/cpp1y/constexpr-84808.C: New test.
From-SVN: r258471
Jakub Jelinek [Mon, 12 Mar 2018 23:39:21 +0000 (00:39 +0100)]
re PR c++/84704 (internal compiler error: gimplification failed)
PR c++/84704
* tree.c (stabilize_reference_1): Return save_expr (e) for
STATEMENT_LIST even if it doesn't have side-effects.
* g++.dg/debug/pr84704.C: New test.
From-SVN: r258470
Jonathan Wakely [Mon, 12 Mar 2018 22:52:16 +0000 (22:52 +0000)]
PR libstdc++/84773 use aligned alloc functions for FreeBSD and MinGW cross-compilers
PR libstdc++/84773
PR libstdc++/83662
* crossconfig.m4: Check for aligned_alloc etc. on freebsd and mingw32.
* configure: Regenerate.
* include/c_global/cstdlib [_GLIBCXX_HAVE_ALIGNED_ALLOC]
(aligned_alloc): Add using-declaration.
* testsuite/18_support/aligned_alloc/aligned_alloc.cc: New test.
From-SVN: r258468
Eric Botcazou [Mon, 12 Mar 2018 22:40:05 +0000 (22:40 +0000)]
re PR ada/82813 (warning: '.builtin_memcpy' writing between 2 and 6 bytes into a region of size 0 overflows the destination [-Wstringop-overflow=])
PR ada/82813
* gcc-interface/misc.c (gnat_post_options): Disable string overflow
warnings.
From-SVN: r258466
Jonathan Wakely [Mon, 12 Mar 2018 22:31:12 +0000 (22:31 +0000)]
Fix spelling of -mclflushopt in manual
* doc/invoke.texi (-mclflushopt): Fix spelling of option.
From-SVN: r258462