gcc.git
4 years agoRevert patch accidentily created on the wrong sandbox
Michael Meissner [Tue, 7 Jan 2020 21:30:43 +0000 (21:30 +0000)]
Revert patch accidentily created on the wrong sandbox

From-SVN: r279973

4 years agoRestore patch reverted on trunk instead of a branch
Michael Meissner [Tue, 7 Jan 2020 21:29:11 +0000 (21:29 +0000)]
Restore patch reverted on trunk instead of a branch

From-SVN: r279972

4 years agoRevert a patch from luoxhu@linux.ibm.com
Michael Meissner [Tue, 7 Jan 2020 21:27:27 +0000 (21:27 +0000)]
Revert a patch from luoxhu@linux.ibm.com

From-SVN: r279971

4 years agoPR libstdc++/92124 fix incorrect container move assignment
François Dumont [Tue, 7 Jan 2020 21:01:37 +0000 (21:01 +0000)]
PR libstdc++/92124 fix incorrect container move assignment

* include/bits/stl_tree.h
(_Rb_tree<>::_M_move_assign(_Rb_tree&, false_type)): Replace
std::move_if_noexcept by std::move.
* testsuite/23_containers/map/92124.cc: New.
* testsuite/23_containers/set/92124.cc: New.

From-SVN: r279967

4 years agoinit.c (build_new): Add location_t parameter and use it throughout.
Paolo Carlini [Tue, 7 Jan 2020 17:58:18 +0000 (17:58 +0000)]
init.c (build_new): Add location_t parameter and use it throughout.

/gcc/cp
2020-01-07  Paolo Carlini  <paolo.carlini@oracle.com>

* init.c (build_new): Add location_t parameter and use it throughout.
(build_raw_new_expr): Likewise.
* parser.c (cp_parser_new_expression): Pass the combined_loc.
* pt.c (tsubst_copy_and_build): Adjust call.
* cp-tree.h: Update declarations.

/libcc1
2020-01-07  Paolo Carlini  <paolo.carlini@oracle.com>

* libcp1plugin.cc (plugin_build_new_expr): Update build_new call.

/gcc/testsuite
2020-01-07  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.old-deja/g++.bugs/900208_03.C: Check locations too.
* g++.old-deja/g++.bugs/900519_06.C: Likewise.

From-SVN: r279963

4 years agocompiler: avoid write barrier for a[i] = a[i][:v]
Ian Lance Taylor [Tue, 7 Jan 2020 15:35:04 +0000 (15:35 +0000)]
compiler: avoid write barrier for a[i] = a[i][:v]

    This avoids generating a write barrier for code that appears in the
    Go1.14beta1 runtime package in (*pageAlloc).sysGrow:
        s.summary[l] = s.summary[l][:needIdxLimit]

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/213558

From-SVN: r279962

4 years ago[amdgcn] Add more modes for vector comparisons
Andrew Stubbs [Tue, 7 Jan 2020 15:27:50 +0000 (15:27 +0000)]
[amdgcn] Add more modes for vector comparisons

2020-01-07  Andrew Stubbs  <ams@codesourcery.com>

gcc/
* config/gcn/gcn-valu.md (VEC_1REG_INT_ALT): Delete iterator.
(VEC_ALLREG_ALT): New iterator.
(VEC_ALLREG_INT_MODE): New iterator.
(VCMP_MODE): New iterator.
(VCMP_MODE_INT): New iterator.
(vec_cmpu<mode>di): Use VCMP_MODE_INT.
(vec_cmp<u>v64qidi): New define_expand.
(vec_cmp<mode>di_exec): Use VCMP_MODE.
(vec_cmpu<mode>di_exec): New define_expand.
(vec_cmp<u>v64qidi_exec): New define_expand.
(vec_cmp<mode>di_dup): Use VCMP_MODE.
(vec_cmp<mode>di_dup_exec): Use VCMP_MODE.
(vcond<VEC_ALL1REG_MODE:mode><VEC_1REG_ALT:mode>): Rename ...
(vcond<VEC_ALLREG_MODE:mode><VEC_ALLREG_ALT:mode>): ... to this.
(vcond<VEC_ALL1REG_MODE:mode><VEC_1REG_ALT:mode>_exec): Rename ...
(vcond<VEC_ALLREG_MODE:mode><VEC_ALLREG_ALT:mode>_exec): ... to this.
(vcondu<VEC_ALL1REG_MODE:mode><VEC_1REG_INT_ALT:mode>): Rename ...
(vcondu<VEC_ALLREG_MODE:mode><VEC_ALLREG_INT_MODE:mode>): ... to this.
(vcondu<VEC_ALL1REG_MODE:mode><VEC_1REG_INT_ALT:mode>_exec): Rename ...
(vcondu<VEC_ALLREG_MODE:mode><VEC_ALLREG_INT_MODE:mode>_exec): ... to
this.
* config/gcn/gcn.c (print_operand): Fix 8 and 16 bit suffixes.
* config/gcn/gcn.md (expander): Add sign_extend and zero_extend.

From-SVN: r279961

4 years agoPR c++/47877 - -fvisibility-inlines-hidden and member templates.
Jason Merrill [Tue, 7 Jan 2020 15:05:25 +0000 (10:05 -0500)]
PR c++/47877 - -fvisibility-inlines-hidden and member templates.

DECL_VISIBILITY_SPECIFIED is also true if an enclosing scope has explicit
visibility, and we don't want that to override -fvisibility-inlines-hidden.
So check for the attribute specifically on the function, like we already do
for template argument visibility restriction.

* decl2.c (determine_visibility): -fvisibility-inlines-hidden beats
explicit class visibility for a template.

From-SVN: r279960

4 years agoDisallow 'B' constraints on amdgcn addc/subb
Andrew Stubbs [Tue, 7 Jan 2020 14:35:21 +0000 (14:35 +0000)]
Disallow 'B' constraints on amdgcn addc/subb

2020-01-07  Andrew Stubbs  <ams@codesourcery.com>

gcc/
* config/gcn/constraints.md (DA): Update description and match.
(DB): Likewise.
(Db): New constraint.
* config/gcn/gcn-protos.h (gcn_inline_constant64_p): Add second
parameter.
* config/gcn/gcn.c (gcn_inline_constant64_p): Add 'mixed' parameter.
Implement 'Db' mixed immediate type.
* config/gcn/gcn-valu.md (addcv64si3<exec_vcc>): Rework constraints.
(addcv64si3_dup<exec_vcc>): Delete.
(subcv64si3<exec_vcc>): Rework constraints.
(addv64di3): Rework constraints.
(addv64di3_exec): Rework constraints.
(subv64di3): Rework constraints.
(addv64di3_dup): Delete.
(addv64di3_dup_exec): Delete.
(addv64di3_zext): Rework constraints.
(addv64di3_zext_exec): Rework constraints.
(addv64di3_zext_dup): Rework constraints.
(addv64di3_zext_dup_exec): Rework constraints.
(addv64di3_zext_dup2): Rework constraints.
(addv64di3_zext_dup2_exec): Rework constraints.
(addv64di3_sext_dup2): Rework constraints.
(addv64di3_sext_dup2_exec): Rework constraints.

From-SVN: r279959

4 years ago[testsuite][arm] xfail vect-epilogues for armbe
Andre Vieira [Tue, 7 Jan 2020 14:14:16 +0000 (14:14 +0000)]
[testsuite][arm] xfail vect-epilogues for armbe

gcc/testsuite/ChangeLog:
2020-01-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>

* gcc.dg/vect/vect-epilogues.c: XFAIL for arm big endian.

From-SVN: r279958

4 years ago[doc] Add missing documentation for existing target checks
Andre Vieira [Tue, 7 Jan 2020 14:11:57 +0000 (14:11 +0000)]
[doc] Add missing documentation for existing target checks

gcc/ChangeLog:
2020-01-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>

* doc/sourcebuild.texi (arm_little_endian, arm_nothumb): Documented
existing target checks.

From-SVN: r279957

4 years agocompiler: avoid a couple of compiler crashes
Ian Lance Taylor [Tue, 7 Jan 2020 13:44:29 +0000 (13:44 +0000)]
compiler: avoid a couple of compiler crashes

    These came up while building 1.14beta1 while the code was still invalid.
    The policy is to not bother committing invalid test cases that cause
    compiler crashes.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/213537

From-SVN: r279956

4 years agoinstall.texi: Bump minimal supported MPC version.
Richard Biener [Tue, 7 Jan 2020 12:39:00 +0000 (12:39 +0000)]
install.texi: Bump minimal supported MPC version.

2020-01-07  Richard Biener  <rguenther@suse.de>

* doc/install.texi: Bump minimal supported MPC version.

From-SVN: r279955

4 years agoAdd a generic lhd_simulate_enum_decl
Richard Sandiford [Tue, 7 Jan 2020 10:21:26 +0000 (10:21 +0000)]
Add a generic lhd_simulate_enum_decl

Normally we only create SVE ACLE functions when arm_sve.h is included.
But for LTO we need to do it at start-up, so that the functions are
already defined when streaming in the LTO objects.

One hitch with doing that is that LTO doesn't yet implement the
simulate_enum_decl langhook.  This patch adds a simple default
implementation that it can use.

2020-01-07  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* langhooks-def.h (lhd_simulate_enum_decl): Declare.
(LANG_HOOKS_SIMULATE_ENUM_DECL): Use it.
* langhooks.c: Include stor-layout.h.
(lhd_simulate_enum_decl): New function.
* config/aarch64/aarch64-sve-builtins.cc (init_builtins): Call
handle_arm_sve_h for the LTO frontend.
(register_vector_type): Cope with null returns from pushdecl.

gcc/testsuite/
* gcc.target/aarch64/sve/pcs/asm_4.c: New test.

From-SVN: r279954

4 years ago[AArch64] Use type attributes to mark types that use the SVE PCS
Richard Sandiford [Tue, 7 Jan 2020 10:18:14 +0000 (10:18 +0000)]
[AArch64] Use type attributes to mark types that use the SVE PCS

The SVE port needs to maintain a different type identity for
GNU vectors and "SVE vectors", since the types use different ABIs.
Until now we've done that using pointer equality between the
TYPE_MAIN_VARIANT and the built-in SVE type.

However, as Richard B noted, that doesn't work well for LTO,
where we stream both GNU and SVE types from a file instead of
creating them directly.  We need a mechanism for distinguishing
the types using streamed type information.

This patch does that using a new type attribute.  This attribute
is only meant to be used for the built-in SVE types and shouldn't
be user-visible.  The patch tries to ensure this by including a space
in the attribute name, like we already do for things like "fn spec"
and "omp declare simd".

2020-01-07  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* config/aarch64/aarch64-protos.h (aarch64_sve::svbool_type_p)
(aarch64_sve::nvectors_if_data_type): Replace with...
(aarch64_sve::builtin_type_p): ...this.
* config/aarch64/aarch64-sve-builtins.cc: Include attribs.h.
(find_vector_type): Delete.
(add_sve_type_attribute): New function.
(lookup_sve_type_attribute): Likewise.
(register_builtin_types): Add an "SVE type" attribute to each type.
(register_tuple_type): Likewise.
(svbool_type_p, nvectors_if_data_type): Delete.
(mangle_builtin_type): Use lookup_sve_type_attribute.
(builtin_type_p): Likewise.  Add an overload that returns the
number of constituent vector and predicate registers.
* config/aarch64/aarch64.c (aarch64_sve_argument_p): Delete.
(aarch64_returns_value_in_sve_regs_p): Use aarch64_sve::builtin_type_p
instead of aarch64_sve_argument_p.
(aarch64_takes_arguments_in_sve_regs_p): Likewise.
(aarch64_pass_by_reference): Likewise.
(aarch64_function_value_1): Likewise.
(aarch64_return_in_memory): Likewise.
(aarch64_layout_arg): Likewise.

gcc/testsuite/
* g++.target/aarch64/sve/acle/general-c++/mangle_5.C: New test.
* gcc.target/aarch64/sve/pcs/asm_1.c: Likewise.
* gcc.target/aarch64/sve/pcs/asm_2.c: Likewise.
* gcc.target/aarch64/sve/pcs/asm_3.c: Likewise.

From-SVN: r279953

4 years agoDon't mangle attributes that have a space in their name
Richard Sandiford [Tue, 7 Jan 2020 10:15:43 +0000 (10:15 +0000)]
Don't mangle attributes that have a space in their name

The SVE port needs to maintain a different type identity for
GNU vectors and "SVE vectors" even during LTO, since the types
use different ABIs.  The easiest way of doing that seemed to be
to use type attributes.  However, these type attributes shouldn't
be user-facing; they're just a convenient way of representing the
types internally in GCC.

There are already several internal-only attributes, such as "fn spec"
and "omp declare simd".  They're distinguished from normal user-facing
attributes by having a space in their name, which means that it isn't
possible to write them directly in C or C++.

Taking the same approach mostly works well for SVE.  The only snag
I've hit so far is that the new attribute needs to (and only exists to)
affect type identity.  This means that it would normally get included
in mangled names, to distinguish it from types without the attribute.

However, the SVE ABI specifies a separate mangling for SVE vector types,
rather than using an attribute mangling + a normal vector mangling.
So we need some way of suppressing the attribute mangling for this case.

There are currently no other target-independent or target-specific
internal-only attributes that affect type identity, so this patch goes
for the simplest fix of skipping mangling for attributes whose names
contain a space (which usually wouldn't give a valid symbol anyway).
Other options I thought about were:

(1) Also make sure that targetm.mangled_type returns nonnull.

(2) Check directly for the target-specific name.

(3) Add a new target hook.

(4) Add new information to attribute_spec.  This would be very invasive
    at this stage, but maybe we should consider replacing all the boolean
    fields with flags?  That should make the tables slightly easier to
    read and would make adding new flags much simpler in future.

2020-01-07  Richard Sandiford  <richard.sandiford@arm.com>

gcc/cp/
* mangle.c (mangle_type_attribute_p): New function, split out from...
(write_CV_qualifiers_for_type): ...here.  Don't mangle attributes
that contain a space.

From-SVN: r279952

4 years agore PR tree-optimization/93156 (abused nonnull attribute evokes new segfault in gcc...
Jakub Jelinek [Tue, 7 Jan 2020 10:05:14 +0000 (11:05 +0100)]
re PR tree-optimization/93156 (abused nonnull attribute evokes new segfault in gcc 10 since Nov 4 commit, 0fb958ab8aa)

PR tree-optimization/93156
* tree-ssa-ccp.c (bit_value_binop): For x * x note that the second
least significant bit is always clear.

* gcc.dg/tree-ssa/pr93156.c: New test.

From-SVN: r279951

4 years agore PR tree-optimization/93118 (>>32<<32 is not always converted into &~0ffffffffull...
Jakub Jelinek [Tue, 7 Jan 2020 10:03:07 +0000 (11:03 +0100)]
re PR tree-optimization/93118 (>>32<<32 is not always converted into &~0ffffffffull at the tree level)

PR tree-optimization/93118
* match.pd ((x >> c) << c -> x & (-1<<c)): Add nop_convert?.  Add new
simplifier with two intermediate conversions.

* gcc.dg/tree-ssa/pr93118.c: New test.

From-SVN: r279950

4 years agoAdd Optimization keyword for TREE/RTL optimization passes.
Martin Liska [Tue, 7 Jan 2020 09:21:01 +0000 (10:21 +0100)]
Add Optimization keyword for TREE/RTL optimization passes.

2020-01-07  Martin Liska  <mliska@suse.cz>

* params.opt: Add Optimization for various parameters.

From-SVN: r279949

4 years agoDocument cloning for the target_clone attribute.
Martin Liska [Tue, 7 Jan 2020 09:18:46 +0000 (10:18 +0100)]
Document cloning for the target_clone attribute.

2020-01-07  Martin Liska  <mliska@suse.cz>

PR ipa/83411
* doc/extend.texi: Explain cloning for target_clone
attribute.

From-SVN: r279948

4 years agoMake warn_inline Optimization option.
Martin Liska [Tue, 7 Jan 2020 09:15:38 +0000 (10:15 +0100)]
Make warn_inline Optimization option.

2020-01-07  Martin Liska  <mliska@suse.cz>

PR tree-optimization/92860
* common.opt: Make in Optimization option
as it is affected by -O0, which is an Optimization
option.
* tree-inline.c (tree_inlinable_function_p):
Use opt_for_fn for warn_inline.
(expand_call_inline): Likewise.
2020-01-07  Martin Liska  <mliska@suse.cz>

PR tree-optimization/92860
* gcc.dg/pr92860-2.c: New test.

From-SVN: r279947

4 years agoMark -free as Optimization option.
Martin Liska [Tue, 7 Jan 2020 09:12:35 +0000 (10:12 +0100)]
Mark -free as Optimization option.

From-SVN: r279946

4 years agoMark param_min_crossjump_insns with Optimization keyword.
Martin Liska [Tue, 7 Jan 2020 09:10:37 +0000 (10:10 +0100)]
Mark param_min_crossjump_insns with Optimization keyword.

2020-01-07  Martin Liska  <mliska@suse.cz>

    PR optimization/92860
    * params.opt: Mark param_min_crossjump_insns with Optimization
    keyword.

From-SVN: r279945

4 years agore PR fortran/93162 (gcc/fortran/trans-openmp.c:2469:50: runtime error: load of value...
Jakub Jelinek [Tue, 7 Jan 2020 07:14:41 +0000 (08:14 +0100)]
re PR fortran/93162 (gcc/fortran/trans-openmp.c:2469:50: runtime error: load of value 145992800, which is not a valid value for type 'ar_type' since r279628)

PR fortran/93162
* trans-openmp.c (gfc_trans_omp_clauses): Check for REF_ARRAY type
before testing u.ar.type == AR_FULL.

From-SVN: r279944

4 years agore PR c++/91369 (Implement P0784R7: constexpr new)
Jakub Jelinek [Tue, 7 Jan 2020 07:13:50 +0000 (08:13 +0100)]
re PR c++/91369 (Implement P0784R7: constexpr new)

PR c++/91369
* constexpr.c (struct constexpr_global_ctx): Add heap_alloc_count
member, initialize it to zero in ctor.
(cxx_eval_call_expression): Bump heap_dealloc_count when deleting
a heap object.  Don't cache calls to functions which allocate some
heap objects and don't deallocate them or deallocate some heap
objects they didn't allocate.

* g++.dg/cpp1y/constexpr-new.C: Expect an error explaining why
static_assert failed for C++2a.
* g++.dg/cpp2a/constexpr-new9.C: New test.

From-SVN: r279943

4 years agoipa-inline: Adjust condition for caller_growth_limits
Luo Xiong Hu [Tue, 7 Jan 2020 02:38:16 +0000 (02:38 +0000)]
ipa-inline: Adjust condition for caller_growth_limits

Inline should return failure either (newsize > param_large_function_insns)
OR (newsize > limit).  Sometimes newsize is larger than
param_large_function_insns, but smaller than limit, inline doesn't return
failure even if the new function is a large function.
Therefore, param_large_function_insns and param_large_function_growth should be
OR instead of AND, otherwise --param large-function-growth won't
work correctly with --param large-function-insns.

gcc/ChangeLog:

2020-01-07  Luo Xiong Hu  <luoxhu@linux.ibm.com>

* ipa-inline-analysis.c (estimate_growth): Fix typo.
* ipa-inline.c (caller_growth_limits): Use OR instead of AND.

From-SVN: r279942

4 years agoRefactor some code for a future change.
Michael Meissner [Tue, 7 Jan 2020 01:47:22 +0000 (01:47 +0000)]
Refactor some code for a future change.

2020-01-06  Michael Meissner  <meissner@linux.ibm.com>

* config/rs6000/rs6000.c (hard_reg_and_mode_to_addr_mask): New
helper function to return the valid addressing formats for a given
hard register and mode.
(rs6000_adjust_vec_address): Call hard_reg_and_mode_to_addr_mask.

Index: gcc/config/rs6000/rs6000.c
===================================================================
--- gcc/config/rs6000/rs6000.c (revision 279912)
+++ gcc/config/rs6000/rs6000.c (working copy)
@@ -6729,6 +6729,30 @@ rs6000_expand_vector_extract (rtx target
     }
 }

+/* Helper function to return an address mask based on a physical register.  */
+
+static addr_mask_type
+hard_reg_and_mode_to_addr_mask (rtx reg, machine_mode mode)
+{
+  unsigned int r = reg_or_subregno (reg);
+  addr_mask_type addr_mask;
+
+  gcc_assert (HARD_REGISTER_NUM_P (r));
+  if (INT_REGNO_P (r))
+    addr_mask = reg_addr[mode].addr_mask[RELOAD_REG_GPR];
+
+  else if (FP_REGNO_P (r))
+    addr_mask = reg_addr[mode].addr_mask[RELOAD_REG_FPR];
+
+  else if (ALTIVEC_REGNO_P (r))
+    addr_mask = reg_addr[mode].addr_mask[RELOAD_REG_VMX];
+
+  else
+    gcc_unreachable ();
+
+  return addr_mask;
+}
+
 /* Adjust a memory address (MEM) of a vector type to point to a scalar field
    within the vector (ELEMENT) with a mode (SCALAR_MODE).  Use a base register
    temporary (BASE_TMP) to fixup the address.  Return the new memory address
@@ -6865,21 +6889,8 @@ rs6000_adjust_vec_address (rtx scalar_re
   if (GET_CODE (new_addr) == PLUS)
     {
       rtx op1 = XEXP (new_addr, 1);
-      addr_mask_type addr_mask;
-      unsigned int scalar_regno = reg_or_subregno (scalar_reg);
-
-      gcc_assert (HARD_REGISTER_NUM_P (scalar_regno));
-      if (INT_REGNO_P (scalar_regno))
- addr_mask = reg_addr[scalar_mode].addr_mask[RELOAD_REG_GPR];
-
-      else if (FP_REGNO_P (scalar_regno))
- addr_mask = reg_addr[scalar_mode].addr_mask[RELOAD_REG_FPR];
-
-      else if (ALTIVEC_REGNO_P (scalar_regno))
- addr_mask = reg_addr[scalar_mode].addr_mask[RELOAD_REG_VMX];
-
-      else
- gcc_unreachable ();
+      addr_mask_type addr_mask
+ = hard_reg_and_mode_to_addr_mask (scalar_reg, scalar_mode);

       if (REG_P (op1) || SUBREG_P (op1))
  valid_addr_p = (addr_mask & RELOAD_REG_INDEXED) != 0;

From-SVN: r279941

4 years agoUpdate ChangeLog for last change
Michael Meissner [Tue, 7 Jan 2020 01:37:04 +0000 (01:37 +0000)]
Update ChangeLog for last change

From-SVN: r279940

4 years agoUpdate 'Q' constraint documentation.
Michael Meissner [Tue, 7 Jan 2020 01:36:17 +0000 (01:36 +0000)]
Update 'Q' constraint documentation.

2020-01-06  Michael Meissner  <meissner@linux.ibm.com>

* config/rs6000/constraints.md (Q constraint): Update
documentation.
* doc/md.texi (RS/6000 constraints): Update 'Q' cosntraint
documentation.

From-SVN: r279939

4 years agoFix bad code of vector extract of PC-relative address with variable element #.
Michael Meissner [Tue, 7 Jan 2020 01:34:19 +0000 (01:34 +0000)]
Fix bad code of vector extract of PC-relative address with variable element #.

2020-01-06  Michael Meissner  <meissner@linux.ibm.com>

* config/rs6000/vsx.md (vsx_extract_<mode>_var, VSX_D iterator):
Use 'Q' for doing vector extract from memory.
(vsx_extract_v4sf_var): Use 'Q' for doing vector extract from
memory.
(vsx_extract_<mode>_var, VSX_EXTRACT_I iterator): Use 'Q' for
doing vector extract from memory.
(vsx_extract_<mode>_<VS_scalar>mode_var): Use 'Q' for doing vector
extract from memory.

From-SVN: r279938

4 years agoAdd support for large prefixed address in adjusting a vector address.
Michael Meissner [Tue, 7 Jan 2020 01:29:12 +0000 (01:29 +0000)]
Add support for large prefixed address in adjusting a vector address.

2020-01-06  Michael Meissner  <meissner@linux.ibm.com>

* config/rs6000/rs6000.c (rs6000_adjust_vec_address): Add support
for the offset being 34-bits when -mcpu=future is used.

From-SVN: r279937

4 years agoPR c++/92552 - ICE with inherited constrained default ctor.
Jason Merrill [Tue, 7 Jan 2020 01:07:59 +0000 (20:07 -0500)]
PR c++/92552 - ICE with inherited constrained default ctor.

We set TYPE_HAS_USER_CONSTRUCTOR on the template type in lookup_using_decl,
but we didn't copy it to the instantiation.  Setting it in
one_inherited_ctor is too late, as that gets called after we decide whether
to set CLASSTYPE_LAZY_DEFAULT_CTOR.  This change affects other testcases as
well; the changes are fixes for the other inherited constructor tests as
well.

* pt.c (instantiate_class_template_1): Copy
TYPE_HAS_USER_CONSTRUCTOR.
* class.c (one_inherited_ctor): Don't set it here.

From-SVN: r279936

4 years agoPR c++/92739 - parsing requires clause with attributes.
Andrew Sutton [Tue, 7 Jan 2020 01:02:06 +0000 (01:02 +0000)]
PR c++/92739 - parsing requires clause with attributes.

gcc/cp/
* parser.c (cp_parser_constraint_requires_parens): Exclude
attributes as postfix expressions.

gcc/testsuite/
* g++.dg/concepts-pr92739.C: New test.

From-SVN: r279935

4 years agoDaily bump.
GCC Administrator [Tue, 7 Jan 2020 00:16:13 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r279932

4 years agopa.md: Revert change to use ordered_comparison_operator instead of...
John David Anglin [Mon, 6 Jan 2020 23:48:42 +0000 (23:48 +0000)]
pa.md: Revert change to use ordered_comparison_operator instead of...

* config/pa/pa.md: Revert change to use ordered_comparison_operator
instead of cmpib_comparison_operator in cmpib patterns.
* config/pa/predicates.md (cmpib_comparison_operator): Revert removal
of cmpib_comparison_operator.  Revise comment.

From-SVN: r279927

4 years agoRequire equal shift amounts for IFN_DIV_POW2
Richard Sandiford [Mon, 6 Jan 2020 18:00:15 +0000 (18:00 +0000)]
Require equal shift amounts for IFN_DIV_POW2

IFN_DIV_POW2 currently requires all elements to be shifted by the
same amount, in a similar way as for WIDEN_LSHIFT_EXPR.  This patch
enforces that when building the SLP tree.

If in future targets want to support IFN_DIV_POW2 without this
restriction, we'll probably need the kind of vector-vector/
vector-scalar split that we already have for normal shifts.

2020-01-06  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* tree-vect-slp.c (vect_build_slp_tree_1): Require all shifts
in an IFN_DIV_POW2 node to be equal.

gcc/testsuite/
* gcc.target/aarch64/sve/asrdiv_1.c: Remove trailing %s.
* gcc.target/aarch64/sve/asrdiv_2.c: New test.
* gcc.target/aarch64/sve/asrdiv_3.c: Likewise.

From-SVN: r279908

4 years agoCheck mask argument's type when vectorising conditional functions
Richard Sandiford [Mon, 6 Jan 2020 17:58:57 +0000 (17:58 +0000)]
Check mask argument's type when vectorising conditional functions

We can't yet vectorise conditional internal functions whose boolean
condition is fed by a data access (or more generally, by a tree of logic
ops in which all the leaves are data accesses).  Although we should add
that eventually, we'd need further work to generate good-quality code.

Unlike vectorizable_load and vectorizalbe_store, vectorizable_call
wasn't checking whether the mask had a suitable type, leading to an
ICE on the testcases.

2020-01-06  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* tree-vect-stmts.c (vect_check_load_store_mask): Rename to...
(vect_check_scalar_mask): ...this.
(vectorizable_store, vectorizable_load): Update call accordingly.
(vectorizable_call): Use vect_check_scalar_mask to check the mask
argument in calls to conditional internal functions.

gcc/testsuite/
* gcc.dg/vect/vect-cond-arith-8.c: New test.
* gcc.target/aarch64/sve/cond_fmul_5.c: Likewise.

From-SVN: r279907

4 years agoFix amdgcn issue with '0' constraints
Andrew Stubbs [Mon, 6 Jan 2020 17:10:40 +0000 (17:10 +0000)]
Fix amdgcn issue with '0' constraints

2020-01-06  Andrew Stubbs  <ams@codesourcery.com>

gcc/
* config/gcn/gcn-valu.md (subv64di3): Use separate alternatives for
'0' matching inputs.
(subv64di3_exec): Likewise.

From-SVN: r279906

4 years agomips.c (vr4130_align_insns): Fix typo.
Bryan Stenson [Mon, 6 Jan 2020 16:15:04 +0000 (16:15 +0000)]
mips.c (vr4130_align_insns): Fix typo.

2020-01-06  Bryan Stenson  <bryan@siliconvortex.com>

* config/mips/mips.c (vr4130_align_insns): Fix typo.
* doc/md.texi (movstr): Likewise.

From-SVN: r279905

4 years agoFix early-clobber in amdgcn vec_extract
Andrew Stubbs [Mon, 6 Jan 2020 15:40:01 +0000 (15:40 +0000)]
Fix early-clobber in amdgcn vec_extract

2020-01-06  Andrew Stubbs  <ams@codesourcery.com>

gcc/
* config/gcn/gcn-valu.md (vec_extract<mode><scalar_mode>): Add early
clobber.

From-SVN: r279904

4 years agoPR c++/79592 adjust testcase
Nathan Sidwell [Mon, 6 Jan 2020 15:22:02 +0000 (15:22 +0000)]
PR c++/79592 adjust testcase

https://gcc.gnu.org/ml/gcc-patches/2020-01/msg00127.html
* g++.dg/ubsan/vptr-4.C: Add expected error.

From-SVN: r279902

4 years ago[AArch64] Use move-if-change for aarch64-tune.md
Richard Sandiford [Mon, 6 Jan 2020 13:01:48 +0000 (13:01 +0000)]
[AArch64] Use move-if-change for aarch64-tune.md

If aarch64-tune.md was older than gentune.sh or aarch64-cores.def,
we'd try to overwrite it even if the current contents were correct.
This could cause problems with read-only source directories and
could cause spurious copying for rsync --archive.

2020-01-06  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* config/aarch64/t-aarch64 ($(srcdir)/config/aarch64/aarch64-tune.md):
Depend on...
(s-aarch64-tune-md): ...this new stamp file.  Pipe the new contents
to a temporary file and use move-if-change to update the real
file where necessary.

From-SVN: r279900

4 years ago[AArch64] Fix constraints for CPY /M
Richard Sandiford [Mon, 6 Jan 2020 13:00:04 +0000 (13:00 +0000)]
[AArch64] Fix constraints for CPY /M

The constraints for CPY /M allowed p0-p15 instead of the intended p0-p7.
This looks like a pasto from the preceding constant pattern, where p0-p15
is allowed.

2020-01-06  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* config/aarch64/aarch64-sve.md (@aarch64_sel_dup<mode>): Use Upl
rather than Upa for CPY /M.

gcc/testsuite/
* gcc.target/aarch64/sve/acle/general/cpy_1.c: New test.

From-SVN: r279899

4 years agoFix amdgcn inline immediate range
Andrew Stubbs [Mon, 6 Jan 2020 12:22:21 +0000 (12:22 +0000)]
Fix amdgcn inline immediate range

2020-01-06  Andrew Stubbs  <ams@codesourcery.com>

gcc/
* config/gcn/gcn.c (gcn_inline_constant_p): Allow 64 as an inline
immediate.

From-SVN: r279898

4 years agolibstdc++: Remove redundant inequality operators in <stop_token>
Jonathan Wakely [Mon, 6 Jan 2020 12:06:47 +0000 (12:06 +0000)]
libstdc++: Remove redundant inequality operators in <stop_token>

* include/std/stop_token (stop_token): Remove operator!= (LWG 3254).
(stop_source): Likewise (LWG 3362).
* testsuite/30_threads/stop_token/stop_source.cc: Test equality
comparisons.

From-SVN: r279897

4 years agolibstdc++: Define __cpp_lib_three_way_comparison conditionally
Jonathan Wakely [Mon, 6 Jan 2020 12:06:41 +0000 (12:06 +0000)]
libstdc++: Define __cpp_lib_three_way_comparison conditionally

The contents of the <compare> header are not complete unless concepts
are supported, so the feature test macro should depend on the macro for
concepts.

As a result, the std::lexicographical_compare_three_way function will
not be defined unless concepts are supported, so there is no need to
check __cpp_lib_concepts before using concepts in those functions.

* include/bits/stl_algobase.h (__is_byte_iter, __min_cmp)
(lexicographical_compare_three_way): Do not depend on
__cpp_lib_concepts.
* include/std/version (__cpp_lib_three_way_comparison): Only define
when __cpp_lib_concepts is defined.
* libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.

From-SVN: r279896

4 years agoMark param_max_combine_insns with Optimization keyword.
Martin Liska [Mon, 6 Jan 2020 09:13:15 +0000 (10:13 +0100)]
Mark param_max_combine_insns with Optimization keyword.

    PR tree-optimization/92860
    * params.opt: Mark param_max_combine_insns with Optimization
    keyword.

From-SVN: r279895

4 years agoNew bitfield testcases.
Andrew Pinski [Mon, 6 Jan 2020 01:08:21 +0000 (01:08 +0000)]
New bitfield testcases.

2020-01-05  Andrew Pinski  <apinski@marvell.com>

        * gcc.c-torture/compile/20200105-1.c: New testcase.
        * gcc.c-torture/compile/20200105-2.c: New testcase.
        * gcc.c-torture/compile/20200105-3.c: New testcase.

From-SVN: r279893

4 years agoDaily bump.
GCC Administrator [Mon, 6 Jan 2020 00:16:19 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r279892

4 years agodiscr1.ads: Compile with -gnatc instead of -gnatct.
Eric Botcazou [Sun, 5 Jan 2020 16:02:53 +0000 (16:02 +0000)]
discr1.ads: Compile with -gnatc instead of -gnatct.

* gnat.dg/specs/discr1.ads: Compile with -gnatc instead of -gnatct.
* gnat.dg/specs/limited_with4.ads: Likewise.
* gnat.dg/specs/limited_with4_pkg.ads: Likewise.
* gnat.dg/specs/private1-sub.ads: Likewise.
* gnat.dg/specs/task1.ads: Likewise.

From-SVN: r279889

4 years ago[testsuite, Darwin] Fix failing darwin-version-1.c.
Iain Sandoe [Sun, 5 Jan 2020 15:26:19 +0000 (15:26 +0000)]
[testsuite, Darwin] Fix failing darwin-version-1.c.

Recent platform linkers will no longer accept linking for a target
OS version less than 10.4.  Recent SDKs no longer have the libgcc_s
shims used for 10.4 and 10.5.  So we need to adjust tests that expect
these.

gcc/testsuite/ChangeLog:

2020-01-05  Iain Sandoe  <iain@sandoe.co.uk>

* gcc.dg/darwin-version-1.c: Adjust test to use different
options for Darwin4-9 and Darwin10+.

From-SVN: r279888

4 years agore PR target/93141 (Missed optimization : Use of adc when checking overflow)
Jakub Jelinek [Sun, 5 Jan 2020 12:52:24 +0000 (13:52 +0100)]
re PR target/93141 (Missed optimization : Use of adc when checking overflow)

PR target/93141
* config/i386/i386.md (SWIDWI): New mode iterator.
(DWI, dwi): Add TImode variants.
(addv<mode>4): Use SWIDWI iterator instead of SWI.  Use
<general_hilo_operand> instead of <general_operand>.  Use
CONST_SCALAR_INT_P instead of CONST_INT_P.
(*addv<mode>4_1): Rename to ...
(addv<mode>4_1): ... this.
(QWI): New mode attribute.
(*addv<dwi>4_doubleword, *addv<dwi>4_doubleword_1): New
define_insn_and_split patterns.
(*addv<mode>4_overflow_1, *addv<mode>4_overflow_2): New define_insn
patterns.
(uaddv<mode>4): Use SWIDWI iterator instead of SWI.  Use
<general_hilo_operand> instead of <general_operand>.
(*addcarry<mode>_1): New define_insn.
(*add<dwi>3_doubleword_cc_overflow_1): New define_insn_and_split.

* gcc.target/i386/pr93141-1.c: New test.
* gcc.dg/pr67089-6.c: Expect 16 ADD_OVERFLOW calls even on ia32.

From-SVN: r279887

4 years agore PR c++/93138 (elaborated type specifier visibility check problem)
Jakub Jelinek [Sun, 5 Jan 2020 12:50:40 +0000 (13:50 +0100)]
re PR c++/93138 (elaborated type specifier visibility check problem)

PR c++/93138
* parser.c (cp_parser_check_class_key): Disable access checks for the
simple name lookup.
(cp_parser_maybe_warn_enum_key): Likewise.  Return early if
!warn_redundant_tags.

* g++.dg/warn/Wredundant-tags-2.C: New test.

From-SVN: r279886

4 years agoGuard inclusion of vxAtomicLib.h from gthr-vxworks.h
Olivier Hainque [Sun, 5 Jan 2020 12:45:54 +0000 (12:45 +0000)]
Guard inclusion of vxAtomicLib.h from gthr-vxworks.h

2020-01-05  Olivier Hainque  <hainque@adacore.com>

        * config/gthr-vxworks.h: Guard #include vxAtomicLib.h
by IN_LIBGCC2.

From-SVN: r279885

4 years agore PR c++/93046 (ICE in cp_gimplify_init_expr)
Jakub Jelinek [Sun, 5 Jan 2020 00:49:14 +0000 (01:49 +0100)]
re PR c++/93046 (ICE in cp_gimplify_init_expr)

PR c++/93046
* cp-gimplify.c (cp_gimplify_init_expr): Don't look through
TARGET_EXPR if it has been gimplified already.

* g++.dg/ext/cond4.C: New test.

From-SVN: r279884

4 years agoDaily bump.
GCC Administrator [Sun, 5 Jan 2020 00:16:15 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r279883

4 years ago* gnatvsn.ads: Bump copyright year.
Eric Botcazou [Sat, 4 Jan 2020 08:31:22 +0000 (08:31 +0000)]
* gnatvsn.ads: Bump copyright year.

From-SVN: r279880

4 years agoFortran] PR91640 – Fix call to contiguous dummy
Tobias Burnus [Sat, 4 Jan 2020 08:19:51 +0000 (08:19 +0000)]
Fortran] PR91640 – Fix call to contiguous dummy

        PR fortran/91640
        * trans-expr.c (gfc_conv_procedure_call): Avoid copy-out for nonvariable
        arguments to contiguous dummy args.  Avoid re-checking whether fsym is
        NULL.

        PR fortran/91640
        * gfortran.dg/contiguous_10.f90: New.

From-SVN: r279879

4 years agoDaily bump.
GCC Administrator [Sat, 4 Jan 2020 00:16:22 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r279876

4 years agoPR c++/93033 - incorrect tree node sharing with array init.
Jason Merrill [Fri, 3 Jan 2020 22:10:56 +0000 (17:10 -0500)]
PR c++/93033 - incorrect tree node sharing with array init.

The split_nonconstant_init piece is the only one necessary to fix the
testcase, but it occurred to me that we might as well not split when
-fno-exceptions.

* typeck2.c (split_nonconstant_init): Unshare non-decl.
* cp-gimplify.c (cp_gimplify_init_expr): Only split if -fexceptions.

From-SVN: r279871

4 years agoReject class template placeholder as non-type template parm type in C++17.
Jason Merrill [Fri, 3 Jan 2020 22:10:25 +0000 (17:10 -0500)]
Reject class template placeholder as non-type template parm type in C++17.

* pt.c (invalid_nontype_parm_type_p): Reject class placeholder in
C++17.

From-SVN: r279870

4 years ago[testsuite, X86] Require effective target masm_intel for two tests.
Iain Sandoe [Fri, 3 Jan 2020 21:05:38 +0000 (21:05 +0000)]
[testsuite, X86] Require effective target masm_intel for two tests.

These tests currently fail on targets that do not support intel asm
syntax.

gcc/testsuite/ChangeLog:

2020-01-03  Iain Sandoe  <iain@sandoe.co.uk>

* gcc.target/i386/avx512bw-pr92686-vpcmp-intelasm-1.c: Require
effective target masm_intel.
* gcc.target/i386/avx512vl-pr92686-vpcmp-intelasm-1.c: Likewise.

From-SVN: r279869

4 years agogdbinit.in: call a function with "call", not "set"
Konstantin Kharlamov [Fri, 3 Jan 2020 19:35:48 +0000 (19:35 +0000)]
gdbinit.in: call a function with "call", not "set"

Calling a function foo in gdb as "set foo()" results in a warning.
Disregarding, it looks wrong to call a function with "set". Let's use
"call" instead.

2019-11-14  Konstantin Kharlamov  <Hi-Angel@yandex.ru>

* gdbinit.in (pr, prl, pt, pct, pgg, pgq, pgs, pge, pmz, pdd, pbs, pbm):
Use "call" instead of "set".

From-SVN: r279866

4 years agolibstdc++: Only use std::compare_three_way when concepts are supported
Jonathan Wakely [Fri, 3 Jan 2020 14:44:39 +0000 (14:44 +0000)]
libstdc++: Only use std::compare_three_way when concepts are supported

Clang now supports three-way comparisons. That causes both overloads of
std::lexicographical_compare_three_way to be defined, but the second one
uses std::compare_three_way which depends on concepts. Clang does not
yet support concepts, so the second overload should also depend on
__cpp_lib_concepts.

* include/bits/stl_algobase.h (lexicographical_compare_three_way):
Only define four-argument overload when __cpp_lib_concepts is defined.

From-SVN: r279861

4 years agoAvoid segfault when dumping IPA-CP lattices for unoptimized functions (PR 92917)
Martin Jambor [Fri, 3 Jan 2020 13:52:38 +0000 (14:52 +0100)]
Avoid segfault when dumping IPA-CP lattices for unoptimized functions (PR 92917)

2020-01-03  Martin Jambor  <mjambor@suse.cz>

PR ipa/92917
* ipa-cp.c (print_all_lattices): Skip functions without info.

From-SVN: r279859

4 years agoFortran] OpenMP/OpenACC – fix more issues with OPTIONAL
Tobias Burnus [Fri, 3 Jan 2020 12:56:46 +0000 (12:56 +0000)]
Fortran] OpenMP/OpenACC – fix more issues with OPTIONAL

        gcc/fortran/
        * trans-openmp.c (gfc_omp_check_optional_argument): Always return a
        Boolean expression; handle unallocated/disassociated actual arguments
        as absent if passed to nonallocatable/nonpointer dummy array arguments.
        (gfc_build_cond_assign): Change to assume a Boolean expr not a pointer.
        (gfc_omp_finish_clause, gfc_trans_omp_clauses): Assign NULL to generated
        array-data variable if the argument is absent. Simplify code as
        'present' is now a Boolean expression.

        libgomp/
        * testsuite/libgomp.fortran/optional-map.f90: Add test for
        unallocated/disassociated actual arguments to nonallocatable/nonpointer
        dummy arguments; those are/shall be regarded as absent arguments.
        * testsuite/libgomp.fortran/use_device_ptr-optional-2.f90: Ditto.
        * testsuite/libgomp.fortran/use_device_ptr-optional-3.f90: New.

From-SVN: r279858

4 years agore PR target/93089 (Force mprefer-vector-width=512 in 'e' simd clones)
Jakub Jelinek [Fri, 3 Jan 2020 10:14:03 +0000 (11:14 +0100)]
re PR target/93089 (Force mprefer-vector-width=512 in 'e' simd clones)

PR target/93089
* config/i386/i386-options.c (ix86_simd_clone_adjust): If
TARGET_PREFER_AVX128, use prefer-vector-width=256 for 'c' and 'd'
simd clones.  If TARGET_PREFER_AVX256, use prefer-vector-width=512
for 'e' simd clones.

* gcc.target/i386/pr93089-2.c: New test.
* gcc.target/i386/pr93089-3.c: New test.

From-SVN: r279857

4 years agore PR target/93089 (Force mprefer-vector-width=512 in 'e' simd clones)
Jakub Jelinek [Fri, 3 Jan 2020 10:12:31 +0000 (11:12 +0100)]
re PR target/93089 (Force mprefer-vector-width=512 in 'e' simd clones)

PR target/93089
* config/i386/i386.opt (x_prefer_vector_width_type): Remove TargetSave
entry.
(mprefer-vector-width=): Add Save.
* config/i386/i386-options.c (ix86_target_string): Add PVW argument, print
-mprefer-vector-width= if non-zero.  Fix up -mfpmath= comment.
(ix86_debug_options, ix86_function_specific_print): Adjust
ix86_target_string callers.
(ix86_valid_target_attribute_inner_p): Handle prefer-vector-width=.
(ix86_valid_target_attribute_tree): Likewise.
* config/i386/i386-options.h (ix86_target_string): Add PVW argument.
* config/i386/i386-expand.c (ix86_expand_builtin): Adjust
ix86_target_string caller.

* gcc.target/i386/pr93089-1.c: New test.

From-SVN: r279856

4 years agore PR target/93110 (grub-2.04/grub-core/lib/division.c:28:1: internal compiler error...
Jakub Jelinek [Fri, 3 Jan 2020 10:11:17 +0000 (11:11 +0100)]
re PR target/93110 (grub-2.04/grub-core/lib/division.c:28:1: internal compiler error: in extract_insn, at recog.c:2294)

PR target/93110
* config/i386/i386.md (abs<mode>2): Use expand_simple_binop instead of
emitting ASHIFTRT, XOR and MINUS by hand.  Use gen_int_mode with QImode
instead of gen_int_shift_amount + convert_modes.

* gcc.dg/torture/pr93110.c: New test.

From-SVN: r279855

4 years agore PR rtl-optimization/93088 (Compile time hog on gcc/testsuite/gcc.target/i386/pr563...
Jakub Jelinek [Fri, 3 Jan 2020 09:10:13 +0000 (10:10 +0100)]
re PR rtl-optimization/93088 (Compile time hog on gcc/testsuite/gcc.target/i386/pr56348.c w/ -O3 -funroll-loops -fno-tree-dominator-opts -fno-tree-vrp)

PR rtl-optimization/93088
* loop-iv.c (find_single_def_src): Punt after looking through
128 reg copies for regs with single definitions.  Move definitions
to first uses.

* gcc.target/i386/pr93088.c: New test.

From-SVN: r279854

4 years agoFortran] PR 92994 – add more ASSOCIATE checks
Tobias Burnus [Fri, 3 Jan 2020 08:08:30 +0000 (08:08 +0000)]
Fortran] PR 92994 – add more ASSOCIATE checks

        PR fortran/92994
        * primary.c (gfc_match_rvalue): Add some flavor checks
        gfc_matching_procptr_assignment.
        * resolve.c (resolve_assoc_var): Add more checks for invalid targets.

        PR fortran/92994
        * gfortran.dg/associate_50.f90: Update dg-error.
        * gfortran.dg/associate_51.f90: New.

From-SVN: r279853

4 years agoDaily bump.
GCC Administrator [Fri, 3 Jan 2020 00:16:32 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r279852

4 years agore PR fortran/68020 (Issue with implied-shape array parameter of rank > 2)
Jakub Jelinek [Thu, 2 Jan 2020 23:58:35 +0000 (00:58 +0100)]
re PR fortran/68020 (Issue with implied-shape array parameter of rank > 2)

PR fortran/68020
* gfortran.dg/impled_shape_5.f90: Use dg-do compile rather than dg-do
run.

From-SVN: r279849

4 years agocompiler, runtime, reflect: generate hash functions only for map keys
Ian Lance Taylor [Thu, 2 Jan 2020 21:55:32 +0000 (21:55 +0000)]
compiler, runtime, reflect: generate hash functions only for map keys

    Right now we generate hash functions for all types, just in case they
    are used as map keys. That's a lot of wasted effort and binary size
    for types which will never be used as a map key. Instead, generate
    hash functions only for types that we know are map keys.

    Just doing that is a bit too simple, since maps with an interface type
    as a key might have to hash any concrete key type that implements that
    interface. So for that case, implement hashing of such types at
    runtime (instead of with generated code). It will be slower, but only
    for maps with interface types as keys, and maybe only a bit slower as
    the aeshash time probably dominates the dispatch time.

    Reorg where we keep the equals and hash functions. Move the hash function
    from the key type to the map type, saving a field in every non-map type.
    That leaves only one function in the alg structure, so get rid of that and
    just keep the equal function in the type descriptor itself.

    While we're here, reorganize the rtype struct to more closely match
    the gc version.

    This is the gofrontend version of https://golang.org/cl/191198.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/212843

From-SVN: r279848

4 years agocompiler: split writing of equal and hash functions for types
Ian Lance Taylor [Thu, 2 Jan 2020 21:51:07 +0000 (21:51 +0000)]
compiler: split writing of equal and hash functions for types

    Separate the generation of type equality and hash functions, rather
    than doing them in a single operation.

    This is almost entirely a pure refactoring in preparation for
    generating hash functions only for types that are map keys.  The only
    change in generated code is that for types that are the size of
    numeric types, but not aligned like numeric types, such as [8]byte,
    now use standard hash functions.  They previously used special-purpose
    hash functions because they required special-purpose equal functions.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/212842

From-SVN: r279847

4 years agoAdd 1bit bit-field testcases.
Andrew Pinski [Thu, 2 Jan 2020 20:27:25 +0000 (20:27 +0000)]
Add 1bit bit-field testcases.

2020-01-02  Andrew Pinski  <apinski@marvell.com>

        * gcc.c-torture/execute/bitfld-8.c: New testcase.
        * gcc.c-torture/execute/bitfld-9.c: New testcase.

From-SVN: r279846

4 years agore PR c/90677 (gcc-9.1.0 fails to build __gcc_diag__ souce: error: 'cgraph_node'...
Jakub Jelinek [Thu, 2 Jan 2020 17:29:59 +0000 (18:29 +0100)]
re PR c/90677 (gcc-9.1.0 fails to build __gcc_diag__ souce: error: 'cgraph_node' is not defined as a type)

PR c/90677
* cp-objcp-common.c (identifier_global_tag): Return NULL_TREE if name
has not been found, rather than error_mark_node.

* c-c++-common/pr90677-2.c: New test.

From-SVN: r279840

4 years ago[Arm] Enable CLI for Armv8.6-a: armv8.6-a, i8mm and bf16.
Dennis Zhang [Thu, 2 Jan 2020 17:22:53 +0000 (17:22 +0000)]
[Arm] Enable CLI for Armv8.6-a: armv8.6-a, i8mm and bf16.

2020-01-02  Dennis Zhang  <dennis.zhang@arm.com>

* config/arm/arm-c.c (arm_cpu_builtins): Define
__ARM_FEATURE_MATMUL_INT8, __ARM_FEATURE_BF16_VECTOR_ARITHMETIC,
__ARM_FEATURE_BF16_SCALAR_ARITHMETIC, and
__ARM_BF16_FORMAT_ALTERNATIVE when enabled.
* config/arm/arm-cpus.in (armv8_6, i8mm, bf16): New features.
* config/arm/arm-tables.opt: Regenerated.
* config/arm/arm.c (arm_option_reconfigure_globals): Initialize
arm_arch_i8mm and arm_arch_bf16 when enabled.
* config/arm/arm.h (TARGET_I8MM): New macro.
(TARGET_BF16_FP, TARGET_BF16_SIMD): Likewise.
* config/arm/t-aprofile: Add matching rules for -march=armv8.6-a.
* config/arm/t-arm-elf (all_v8_archs): Add armv8.6-a.
* config/arm/t-multilib: Add matching rules for -march=armv8.6-a.
(v8_6_a_simd_variants): New.
(v8_*_a_simd_variants): Add i8mm and bf16.
* doc/invoke.texi (armv8.6-a, i8mm, bf16): Document new options.

2020-01-02  Dennis Zhang  <dennis.zhang@arm.com>

* gcc.target/arm/multilib.exp: Add combination tests for armv8.6-a.

From-SVN: r279839

4 years agoAdd myself to MAINTAINERS
Dennis Zhang [Thu, 2 Jan 2020 16:09:57 +0000 (16:09 +0000)]
Add myself to MAINTAINERS

From-SVN: r279837

4 years agoFortran] PR68020 – Fix implied-shape handling for rank > 2
Tobias Burnus [Thu, 2 Jan 2020 15:40:51 +0000 (15:40 +0000)]
Fortran] PR68020 – Fix implied-shape handling for rank > 2

        PR fortran/68020
        * array.c (gfc_match_array_spec): Fix implied-type matching
        for rank > 2.

        PR fortran/68020
        * gfortran.dg/implied_shape_4.f90: New.
        * gfortran.dg/implied_shape_5.f90: New.

From-SVN: r279835

4 years agore PR ipa/93087 (Bogus `-Wsuggest-attribute=cold` on function already marked as ...
Jakub Jelinek [Thu, 2 Jan 2020 09:15:00 +0000 (10:15 +0100)]
re PR ipa/93087 (Bogus `-Wsuggest-attribute=cold` on function already marked as `__attribute__((cold))`)

PR ipa/93087
* predict.c (compute_function_frequency): Don't call
warn_function_cold on functions that already have cold attribute.

* c-c++-common/cold-1.c: New test.

From-SVN: r279829

4 years agoPR 90374 d0.d, e0.d, es0.d, en0.d, g0.d and ew.d edit descriptors.
Jerry DeLisle [Thu, 2 Jan 2020 00:57:31 +0000 (00:57 +0000)]
PR 90374 d0.d, e0.d, es0.d, en0.d, g0.d and ew.d edit descriptors.

        PR libfortran/90274
        * io/format.c (parse_format_list): Implement the E0 exponent
        width to provide smallest possible width for exponent fields.
        Refactor code for correct parsing and better readability of the
        code.
        * io/io.h (write_real_w0): Change interface to pass in pointer
        to fnode.
        * io/transfer.c: Update all calls to write_real_w0 to use the
        new interface.
        * io/write.c ((write_real_w0): Use the new interface with fnode
        to access both the decimal precision and exponent widths used in
        build_float_string.
        * io/write_float.def (build_float_string): Use the passed in
        exponent width to calculate the used width in the case of E0.

From-SVN: r279828

4 years agoDaily bump.
GCC Administrator [Thu, 2 Jan 2020 00:16:38 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r279827

4 years agore PR target/67834 (Local references inside comdat groups)
John David Anglin [Wed, 1 Jan 2020 22:57:54 +0000 (22:57 +0000)]
re PR target/67834 (Local references inside comdat groups)

PR target/67834
* config/pa/pa.c (pa_elf_select_rtx_section): New.  Put references to
COMDAT group function labels in .data.rel.ro.local section.
* config/pa/pa32-linux.h (TARGET_ASM_SELECT_RTX_SECTION): Define.

From-SVN: r279823

4 years agoFix windows libobjc build (PR libobjc/93099)
Andrew Pinski [Wed, 1 Jan 2020 22:16:35 +0000 (14:16 -0800)]
Fix windows libobjc build (PR libobjc/93099)

2020-01-01  Andrew Pinski  <pinskia@gmail.com>

        PR libobjc/93099
        * objc/objc-decls.h (objc_EXPORT): Define it to
        extern for DLL_EXPORT define case.

From-SVN: r279822

4 years agoHandle REF_INQUIRY for dependency checking.
Thomas Koenig [Wed, 1 Jan 2020 21:40:35 +0000 (21:40 +0000)]
Handle REF_INQUIRY for dependency checking.

2020-01-01  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/93113
* dependency.c (gfc_dep_resolver): Handle REF_INQUIRY in switch
for ref types.

2020-01-01  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/93113
* gfortran.dg/dependency_58.f90: New test.

From-SVN: r279821

4 years agore PR target/93111 (FAIL: gfortran.fortran-torture/compile/pr32663.f, -O3 -g ...
John David Anglin [Wed, 1 Jan 2020 20:54:58 +0000 (20:54 +0000)]
re PR target/93111 (FAIL: gfortran.fortran-torture/compile/pr32663.f,  -O3 -g   (internal compiler error))

PR target/93111
* config/pa/pa.md (scc): Use ordered_comparison_operator instead of
comparison_operator in B and S integer comparisons.  Likewise, use
ordered_comparison_operator instead of cmpib_comparison_operator in
cmpib patterns.
* config/pa/predicates.md (cmpib_comparison_operator): Remove.

From-SVN: r279818

4 years agobaseline_symbols.txt: Update.
John David Anglin [Wed, 1 Jan 2020 19:19:51 +0000 (19:19 +0000)]
baseline_symbols.txt: Update.

* config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.

From-SVN: r279816

4 years agoUpdate copyright years.
Jakub Jelinek [Wed, 1 Jan 2020 11:51:42 +0000 (12:51 +0100)]
Update copyright years.

From-SVN: r279813

4 years agoupdate-copyright.py: Add Mentor Graphics Corporation and Yoshinori Sato as external...
Jakub Jelinek [Wed, 1 Jan 2020 11:26:53 +0000 (12:26 +0100)]
update-copyright.py: Add Mentor Graphics Corporation and Yoshinori Sato as external authors.

* update-copyright.py: Add Mentor Graphics Corporation and Yoshinori
Sato as external authors.  Skip LICENSE.txt files.

From-SVN: r279812

4 years agogcc.c (process_command): Update copyright notice dates.
Jakub Jelinek [Wed, 1 Jan 2020 11:14:37 +0000 (12:14 +0100)]
gcc.c (process_command): Update copyright notice dates.

* gcc.c (process_command): Update copyright notice dates.
* gcov-dump.c (print_version): Ditto.
* gcov.c (print_version): Ditto.
* gcov-tool.c (print_version): Ditto.
* gengtype.c (create_file): Ditto.
* doc/cpp.texi: Bump @copying's copyright year.
* doc/cppinternals.texi: Ditto.
* doc/gcc.texi: Ditto.
* doc/gccint.texi: Ditto.
* doc/gcov.texi: Ditto.
* doc/install.texi: Ditto.
* doc/invoke.texi: Ditto.
gcc/fortran/
* gfortranspec.c (lang_specific_driver): Update copyright notice
dates.
* gfc-internals.texi: Bump @copying's copyright year.
* gfortran.texi: Ditto.
* intrinsic.texi: Ditto.
* invoke.texi: Ditto.
gcc/d/
* gdc.texi: Bump @copyrights-d year.
gcc/go/
* gccgo.texi: Bump @copyrights-go year.
gcc/ada/
   * gnat_ugn.texi: Bump @copying's copyright year.
   * gnat_rm.texi: Likewise.
libitm/
* libitm.texi: Bump @copying's copyright year.
libgomp/
* libgomp.texi: Bump @copying's copyright year.
libquadmath/
* libquadmath.texi: Bump @copying's copyright year.

From-SVN: r279811

4 years agoipa.c (walk_polymorphic_call_targets): Fix updating of overall summary.
Jan Hubicka [Wed, 1 Jan 2020 10:47:21 +0000 (11:47 +0100)]
ipa.c (walk_polymorphic_call_targets): Fix updating of overall summary.

* ipa.c (walk_polymorphic_call_targets): Fix updating of overall
summary.

From-SVN: r279810

4 years agore PR tree-optimization/93098 (ICE with negative shifter)
Jakub Jelinek [Wed, 1 Jan 2020 00:20:39 +0000 (01:20 +0100)]
re PR tree-optimization/93098 (ICE with negative shifter)

PR tree-optimization/93098
* match.pd (popcount): For shift amounts, use integer_onep
or wi::to_widest () == cst instead of tree_to_uhwi () == cst
tests.  Make sure that precision is power of two larger than or equal
to 16.  Ensure shift is never negative.  Use HOST_WIDE_INT_UC macro
instead of ULL suffixed constants.  Formatting fixes.

* gcc.c-torture/compile/pr93098.c: New test.

From-SVN: r279809

4 years agoDaily bump.
GCC Administrator [Wed, 1 Jan 2020 00:16:17 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r279808

4 years agoFix EXTRACT_LAST_REDUCTION segfault
Richard Sandiford [Tue, 31 Dec 2019 15:32:06 +0000 (15:32 +0000)]
Fix EXTRACT_LAST_REDUCTION segfault

This code:

      /* Make sure we don't accidentally use the old condition.  */
      cond_expr = NULL_TREE;

was misplaced, since it triggered even when we needed to force the
original unmodified cond_expr into a mask temporary and then invert it.

2019-12-31  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* tree-vect-stmts.c (vectorizable_condition): Only nullify cond_expr
if we've created a new condition.  Don't nullify it if we've decided
to keep it and then invert the result.

gcc/testsuite/
* gcc.dg/vect/vect-cond-reduc-6.c: New test.

From-SVN: r279804

4 years agore PR libgomp/93065 (libgomp: destructor missing to delete goacc_cleanup_key)
Ayush Mittal [Tue, 31 Dec 2019 10:34:34 +0000 (10:34 +0000)]
re PR libgomp/93065 (libgomp: destructor missing to delete goacc_cleanup_key)

PR libgomp/93065
* oacc-init.c (goacc_runtime_deinitialize): New function.

From-SVN: r279803

4 years agoFix SSA update when vectorisation adds a vdef to a read-only loop
Richard Sandiford [Tue, 31 Dec 2019 08:28:24 +0000 (08:28 +0000)]
Fix SSA update when vectorisation adds a vdef to a read-only loop

This patch fixes an awkward corner case in which:

(a) we apply if-conversion to a loop;

(b) the original scalar loop doesn't have a vdef, and thus doesn't
    need a virtual phi;

(c) the vectorised main loop does need a vdef and a virtual phi (see below);

(d) we also vectorise the epilogue; and

(e) the vectorised epilogue still needs a scalar epilogue

The specific case in which (c) applies is if a read-only loop is
vectorised using IFN_LOAD_LANES, which uses clobber statements to
mark the lifetime of the temporary array.

The vectoriser relies on the SSA renamer to update virtual operands.
All would probably be well if it postponed this update until after
it had vectorised both the main loop and the epilogue loop.  However,
when vectorising the epilogue, vect_do_peeling does:

  create_lcssa_for_virtual_phi (loop);
  update_ssa (TODO_update_ssa_only_virtuals);

(with "loop" in this case being the to-be-vectorised epilogue loop).
So the vectoriser puts the virtual operand into SSA form for the
vectorised main loop as a separate step, during the early stages
of vectorising the epilogue.

I wasn't sure at first why that update_ssa was there.  It looked
initially like it was related to create_lcssa_for_virtual_phi,
which seemed strange when create_lcssa_for_virtual_phi keeps the
SSA form up-to-date.  But before r241099 it had the following comment,
which AFAICT is still the reason:

  /* We might have a queued need to update virtual SSA form.  As we
     delete the update SSA machinery below after doing a regular
     incremental SSA update during loop copying make sure we don't
     lose that fact.
     ???  Needing to update virtual SSA form by renaming is unfortunate
     but not all of the vectorizer code inserting new loads / stores
     properly assigns virtual operands to those statements.  */

The patch restores that comment since IMO it's helpful.

(a), (d) and (e) mean that we copy the original un-if-converted scalar
loop to act as the scalar epilogue.  The update_ssa above means that this
copying needs to cope with any new virtual SSA names in the main loop.
The code to do that (reasonably) assumed that one of two things was true:

(1) the scalar loop and the vector loops don't have vdefs, and so no
    virtual operand update is needed.  The definition that applies
    on entry to the loops is the same in all cases.

(2) the scalar loop and the vector loops have virtual phis, and so --
    after applying create_lcssa_for_virtual_phi on the to-be-vectorised
    epilogue loop -- the virtual operand update can be handled in the
    same way as for normal SSA names.

But (b) and (c) together mean that the scalar loop and the
still-to-be-vectorised epilogue loop have no virtual phi that (2)
can use.  We'd therefore keep the original vuses when duplicating,
rather than updating them to the definition that applies on exit
from the epilogue loop.  (Since the epilogue is still unvectorised
and has no vdefs, the definition that applies on exit is the same
as the one that applies on entry.)

This patch therefore adds a third case: the scalar loop and
to-be-vectorised epilogue have no virtual defs, but the main loop does.

2019-12-31  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* tree-vect-loop-manip.c (create_lcssa_for_virtual_phi): Return
the incoming virtual operand definition.
(vect_do_peeling): When vectorizing an epilogue loop, handle the
case in which the main loop has a virtual phi and the epilogue
and scalar loops don't.  Restore an earlier comment about the
update_ssa call.

gcc/testsuite/
* gcc.dg/vect/vect-epilogues-2.c: New test.

From-SVN: r279802

4 years agoDaily bump.
GCC Administrator [Tue, 31 Dec 2019 00:16:37 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r279801

4 years agoAdd ChangeLog entry for rev 279797
Olivier Hainque [Mon, 30 Dec 2019 22:46:25 +0000 (22:46 +0000)]
Add ChangeLog entry for rev 279797

From-SVN: r279798

4 years agoundefine OFFSET in testsuite/gcc.dg/vect/tree-vect.h
Olivier Hainque [Mon, 30 Dec 2019 22:42:02 +0000 (22:42 +0000)]
undefine OFFSET in testsuite/gcc.dg/vect/tree-vect.h

2019-12-20  Olivier Hainque  <hainque@adacore.com>

* gcc.dg/vect/tree-vect.h: #undef OFFSET.

From-SVN: r279797