gcc.git
4 years agoDaily bump.
GCC Administrator [Mon, 19 Oct 2020 00:16:22 +0000 (00:16 +0000)]
Daily bump.

4 years agorevamp ada.numerics.aux
Alexandre Oliva [Sun, 18 Oct 2020 20:19:53 +0000 (17:19 -0300)]
revamp ada.numerics.aux

Instead of mapping elementary functions for all types to a single
type, use the intrinsics available for the various base types.

A new Ada.Numerics.Aux_Generic_Float is introduced to explicitly
dispatch, based on the 'Digits attribute of the base type, to the
various newly-added Aux_Short_Float, Aux_Float, Aux_Long_Float, or
Aux_Long_Long_Float.

The Aux_Short_Float unit is implemented in terms of the Aux_Float one,
and the others rely on the elementary functions from the C Math
library for float, double and long double types, respectively.

An Aux_Linker_Options is added, and units that import intrinsics from
libm/libc depend on it to provide the "-lm" linker option if needed.
The option is provided by default, but there is an alternate version
that doesn't, that is used for vxworks targets.

The Aux variant that used to open-code Sin and Cos for the ancient
ppc-darwin, because of insufficient precision in libc, is dropped,
along with the alternate dummy body for Aux.  Both are presumed no
longer needed.

The original Ada.Numerics.Aux is retained, for backward compatibility,
as a wrapper for a newly-added Aux_Compat, that renames
Aux_Long_Float, except on x86, in which an alternate version renames
Aux_Long_Long_Float.

Generic_Elementary_Functions and Generic_Complex_Types are adjusted to
use Aux_Generic_Float, avoiding the type conversions and inefficiencies of
computing results in higher precision than requested.

Generic_Complex_Elementary_Functions is adjusted to enable an
additional instance of the sincos optimization, even without -gnatn.

for  gcc/ada/ChangeLog

* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Compile Ada.Numerics
child units Aux_Generic_Float, Aux_Long_Long_Float, Aux_Long_Float,
Aux_Float, Aux_Short_Float, Aux_Compat, and Aux_Linker_Options.
(X86_TARGET_PAIRS): Drop dummy body for Aux.  Use x86 version
of Aux_Compat.
(X86_64_TARGET_PAIRS): Likewise.
(LIBGNAT_TARGET_PAIRS): On VxWorks, select the nolibm
variants.  Drop the darwin version of Aux.  Drop the redundant
libc-x86 numaux variants on x86* kfreebsd variants.
* libgnat/a-nagefl.ads: New Aux_Generic_Float.
* libgnat/a-naliop.ads: New Aux_Linker_Options.
* libgnat/a-naliop__nolibm.ads: New.
* libgnat/a-nallfl.ads: New Aux_Long_Long_Float.
* libgnat/a-nalofl.ads: New Aux_Long_Float.
* libgnat/a-nuaufl.ads: New Aux_Float.
* libgnat/a-nashfl.ads: New Aux_Short_Float.
* libgnat/a-ngcefu.adb (Exp): Factor out the Im (X) passed to
Sin and Cos in the Complex variant too.
* libgnat/a-ngcoty.adb: Switch to Aux_Generic_Float.  Drop
redundant conversions.
* libgnat/a-ngelfu.adb: Likewise.
* libgnat/a-nuauco.ads: New Aux_Compat.
* libgnat/a-nuauco__x86.ads: New.
* libgnat/a-numaux.ads: Replace with Compat wrapper.
* libgnat/a-numaux__darwin.adb: Remove.
* libgnat/a-numaux__darwin.ads: Remove.
* libgnat/a-numaux__dummy.adb: Remove.
* libgnat/a-numaux__libc-x86.ads: Remove.
* libgnat/a-numaux__vxworks.ads: Remove.

4 years agolibsanitizer, Darwin, Bootstrap : Fix bootstrap on Darwin <= 15.
Iain Sandoe [Sun, 18 Oct 2020 07:48:58 +0000 (08:48 +0100)]
libsanitizer, Darwin, Bootstrap : Fix bootstrap on Darwin <= 15.

The latest upstream merge for libsanitizer introduces code that makes
use of some macro values that are not available in SDKs for versions
of Darwin <= 15 (macOS 10.11).

Add definitions for these where they are not present.

libsanitizer/ChangeLog:

* sanitizer_common/sanitizer_mac.h: Ensure that TARGET_OS_
macros are defined where the macOS SDK does not contain
them.
(TARGET_OS_OSX, TARGET_OS_IOS, TARGET_OS_TV, TARGET_OS_WATCH):
Define where needed.

4 years agoPR libfortran/97063 - Wrong result for vector (step size is negative) * matrix
Harald Anlauf [Sun, 18 Oct 2020 18:15:26 +0000 (20:15 +0200)]
PR libfortran/97063 - Wrong result for vector (step size is negative) * matrix

The MATMUL intrinsic provided a wrong result for rank-1 times rank-2 array
when a negative stride was used for addressing the elements of the rank-1
array, because a check on strides was erroneously placed before the check
on the rank.  Interchange order of checks.

libgfortran/ChangeLog:

* m4/matmul_internal.m4: Move check for rank-1 times rank-2 before
checks on strides for rank-2 times rank-2.
* generated/matmul_c10.c: Regenerated.
* generated/matmul_c16.c: Likewise.
* generated/matmul_c4.c: Likewise.
* generated/matmul_c8.c: Likewise.
* generated/matmul_i1.c: Likewise.
* generated/matmul_i16.c: Likewise.
* generated/matmul_i2.c: Likewise.
* generated/matmul_i4.c: Likewise.
* generated/matmul_i8.c: Likewise.
* generated/matmul_r10.c: Likewise.
* generated/matmul_r16.c: Likewise.
* generated/matmul_r4.c: Likewise.
* generated/matmul_r8.c: Likewise.
* generated/matmulavx128_c10.c: Likewise.
* generated/matmulavx128_c16.c: Likewise.
* generated/matmulavx128_c4.c: Likewise.
* generated/matmulavx128_c8.c: Likewise.
* generated/matmulavx128_i1.c: Likewise.
* generated/matmulavx128_i16.c: Likewise.
* generated/matmulavx128_i2.c: Likewise.
* generated/matmulavx128_i4.c: Likewise.
* generated/matmulavx128_i8.c: Likewise.
* generated/matmulavx128_r10.c: Likewise.
* generated/matmulavx128_r16.c: Likewise.
* generated/matmulavx128_r4.c: Likewise.
* generated/matmulavx128_r8.c: Likewise.

gcc/testsuite/ChangeLog:

* gfortran.dg/matmul_20.f90: New test.

4 years agoDaily bump.
GCC Administrator [Sun, 18 Oct 2020 00:16:23 +0000 (00:16 +0000)]
Daily bump.

4 years agotestsuite: simplify target requirements for various Power9 testcases.
David Edelsohn [Sat, 17 Oct 2020 20:58:43 +0000 (16:58 -0400)]
testsuite: simplify target requirements for various Power9 testcases.

This patch removes unnnecessary or simplifies requirements for various
Power9 testcase.

gcc/testsuite/ChangeLog:

* gcc.target/powerpc/p9-dimode1.c: Remove target.
* gcc.target/powerpc/p9-dimode2.c: Remove target.
* gcc.target/powerpc/p9-fpcvt-1.c: Remove target.
* gcc.target/powerpc/p9-fpcvt-2.c: Require lp64.
* gcc.target/powerpc/p9-minmax-1.c: Remove target.
* gcc.target/powerpc/p9-minmax-2.c: Remove target.
* gcc.target/powerpc/p9-minmax-3.c: Remove target.
* gcc.target/powerpc/p9-splat-1.c: Require lp64.
* gcc.target/powerpc/p9-splat-2.c: Remove target.
* gcc.target/powerpc/p9-splat-3.c: Remove target.
* gcc.target/powerpc/p9-splat-4.c: Require lp64.
* gcc.target/powerpc/p9-vbpermd.c: Require lp64.
* gcc.target/powerpc/p9-vneg.c: Require lp64.
* gcc.target/powerpc/p9-vparity.c: Require lp64.
* gcc.target/powerpc/p9-vpermr.c: Require LE.
* gcc.target/powerpc/p9-xxbr-1.c: Remove target.
* gcc.target/powerpc/p9-xxbr-2.c: Require lp64.
* gcc.target/powerpc/p9-xxbr-3.c: Require lp64.

4 years agolibstdc++: Fix visitor return type diagnostics [PR97449]
Ville Voutilainen [Sat, 17 Oct 2020 19:08:50 +0000 (22:08 +0300)]
libstdc++: Fix visitor return type diagnostics [PR97449]

libstdc++-v3/ChangeLog:

PR libstdc++/97449
* include/std/variant
(__gen_vtable_impl<>::_S_apply_single_alt):
Diagnose visitor return type mismatches here..
(__gen_vtable_impl</*base case*/>::_S_apply):
..not here.

4 years agotestsuite: Enable builtins-3-p9.c on BE targets.
David Edelsohn [Thu, 15 Oct 2020 22:50:05 +0000 (18:50 -0400)]
testsuite: Enable builtins-3-p9.c on BE targets.

This patch removes the unnecessary "le" target requirement
of the builtins-3-p9.c testcase.

gcc/testsuite/ChangeLog:

2020-10-16  David Edelsohn  <dje.gcc@gmail.com>

* gcc.target/powerpc/builtins-3-p9.c: Remove le.

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

4 years agotestsuite: remove explicit -m32/-m64 from testcases
David Edelsohn [Fri, 16 Oct 2020 22:09:49 +0000 (18:09 -0400)]
testsuite: remove explicit -m32/-m64 from testcases

Two tests in the powerpc-specific testsuite explicitly add the -m32
and -m64 commandline options, which only are valid for Linux.  And the
tests check for lp64 or ilp32, which is redundant.  This patch removes
the unnecessary commandline options.

gcc/testsuite/ChangeLog:

2020-10-16  David Edelsohn  <dje.gcc@gmail.com>

* gcc.target/powerpc/pr96139-a.c: Remove -m32.
* gcc.target/powerpc/pr96139-b.c: Remove -m64.

4 years agoPR fortran/95979 - ICE in get_kind, at fortran/simplify.c:129
Harald Anlauf [Fri, 16 Oct 2020 20:17:46 +0000 (22:17 +0200)]
PR fortran/95979 - ICE in get_kind, at fortran/simplify.c:129

Simplification of the elemental intrinsic INDEX with constant array-valued
arguments failed with an ICE or did not reduce to a constant array, depending
also on the presence of the optional KIND argument.  Add a further attempt of
simplification in the case of elemental intrinsics, and make sure the KIND
argument is not removed prematurely during simplification of INDEX.

gcc/fortran/ChangeLog:

PR fortran/95979
* expr.c (gfc_check_init_expr): Fix check of return code from
gfc_intrinsic_func_interface.
* intrinsic.c (gfc_intrinsic_func_interface): Add further attempt
of simplification of elemental intrinsics with array arguments.
* iresolve.c (gfc_resolve_index_func): Keep optional KIND argument
for simplification of elemental use of INDEX.

gcc/testsuite/ChangeLog:

PR fortran/95979
* gfortran.dg/index_4.f90: New test.

4 years ago[PATCH] Don't display ranges for dead ssa-names.
Andrew MacLeod [Fri, 16 Oct 2020 19:13:24 +0000 (15:13 -0400)]
[PATCH] Don't display ranges for dead ssa-names.

Dont show names that have been removed.

* vr-values.c (dump_all_value_ranges): Only dump names which are
still active.

4 years agopointer_plus [0, 0] + const folding
Andrew MacLeod [Fri, 16 Oct 2020 19:10:17 +0000 (15:10 -0400)]
pointer_plus [0, 0] + const folding

Return a constant range if POINTER_PLUS is [0,0] plus a const.

* range-op.cc (pointer_plus_operator::wi_fold): Make pointer_plus
[0, 0] + const return a [const, const] range.

4 years agoDon't invoke range_of_expr multiple times.
Andrew MacLeod [Fri, 16 Oct 2020 19:06:44 +0000 (15:06 -0400)]
Don't invoke range_of_expr multiple times.

Call evrp_folder::range_of_expr directly so we dont end up calling
hybrid_folder::range_of_expr and doing double lookups/comparisons.

* gimple-ssa-evrp.c (hybrid_folder::value_on_edge): Call
evrp_folder::value_of_expr directly.
(hybrid_folder::value_of_stmt): Ditto.

4 years agoDon't assert on a negative shift.
Andrew MacLeod [Fri, 16 Oct 2020 19:02:42 +0000 (15:02 -0400)]
Don't assert on a negative shift.

Don't assert, simply Return false for negative shifts as we can't tell
anything about the operand.

PR tree-optimization/97462
gcc/
* range-op.cc (operator_lshift::op1_range): Don't trap on negative
shifts.
gcc/testsuite/
* gcc.dg/pr97462.c: New file.

4 years agoc++: Fix nullptr deref [pr97460[
Nathan Sidwell [Fri, 16 Oct 2020 17:22:16 +0000 (10:22 -0700)]
c++: Fix nullptr deref [pr97460[

My changes to friend handling meant that there are now cases where a
friend doesn't get a lang-specific object.  So we need to check there
is one before looking inside it.

PR c++/97460
gcc/cp/
* pt.c (push_template_decl): Check DECL_LANG_SPECIFIC in friend
case.
gcc/testsuite/
* g++.dg/template/pr97460.C: New.

4 years agoc++: Fix null deref at EOF [PR96258]
Nathan Sidwell [Fri, 16 Oct 2020 16:22:22 +0000 (09:22 -0700)]
c++: Fix null deref at EOF [PR96258]

cp_parser_declaration peeks at 1 or 2 tokens, when I changed it not to
peek past EOF, I set the second token to NULL.  But there are paths
through the function that just look at the second token.  Fixed by
setting that token to EOF rather than NULL in this case.

PR c++/96258
gcc/cp/
* parser.c (cp_parser_declaration): Make token2 point to EOF if
token1 was EOF.
gcc/testsuite/
* g++.dg/parse/pr96258.C: New.

4 years agoInhibit support for C++0x threads on VxWorks < 6
Rasmus Villemoes [Fri, 2 Oct 2020 15:31:58 +0000 (15:31 +0000)]
Inhibit support for C++0x threads on VxWorks < 6

As for condition variables, the C++0x threads support relies on
VxWorks entry points not available in VxWorks versions prior to 6.

We just expose absence of support for C++0x threads on such systems.

2020-10-15  Rasmus Villemoes  <rv@rasmusvillemoes.dk>

libgcc/
* config/gthr-vxworks.h: Condition the ___GTHREADS_CXX0X
section on VxWorks >= 6.
* config/gthr-vxworks-thread.c: Condition the entire
implementation on __GTHREAD_CXX0X.

4 years agoInhibit support for gthread condvars on VxWorks < 6
Rasmus Villemoes [Fri, 2 Oct 2020 15:26:26 +0000 (15:26 +0000)]
Inhibit support for gthread condvars on VxWorks < 6

The condition variables support relies on kernel entry points
to enforce critical aspects of it's expected behavior.

Some of these entry points are not available prior to VxWorks 6,
so we just expose absence of support for condition variables on
such systems.

2020-10-15  Rasmus Villemoes  <rv@rasmusvillemoes.dk>

libgcc/
* config/gthr-vxworks.h: Condition the __GTHREAD_HAS_COND
section on VxWorks >= 6.
* config/gthr-vxworks-cond.c: Condition the entire
implementation on __GTHREAD_HAS_COND.

4 years agoAdd missing #include <taskLib.h> in gthr-vxworks.c
Rasmus Villemoes [Fri, 2 Oct 2020 13:27:19 +0000 (13:27 +0000)]
Add missing #include <taskLib.h> in gthr-vxworks.c

This fixes an oversight and addresses a few build time warnings.

2020-10-15  Rasmus Villemoes  <rv@rasmusvillemoes.dk>

libgcc/
* config/gthr-vxworks.c: #include <taskLib.h>.

4 years agoFix leftover _VXW_PRE_69 in gthr-vxworks.h
Rasmus Villemoes [Fri, 2 Oct 2020 13:03:26 +0000 (13:03 +0000)]
Fix leftover _VXW_PRE_69 in gthr-vxworks.h

2020-10-15  Rasmus Villemoes  <rv@rasmusvillemoes.dk>

libgcc/
* config/gthr-vxworks.h: Rewrite remaining occurrence
of _VXW_PRE_69 as _VXWORKS_PRE(6,9).

4 years agoStub out VX_ENTER_TLS_DTOR for VxWorks != 6
Rasmus Villemoes [Fri, 2 Oct 2020 12:58:45 +0000 (12:58 +0000)]
Stub out VX_ENTER_TLS_DTOR for VxWorks != 6

As of today, the __gthread_enter/leave entry points are
only meaningful on VxWorks 6. Refactor the VX_ENTER_TLS_DTOR
macros accordingly.

2020-10-15  Rasmus Villemoes  <rv@rasmusvillemoes.dk>

libgcc/
* config/gthr-vxworks-tls.c (VX_ENTER_TLS_DTOR): Nil
except on VxWorks 6.

Co-authored-by: Olivier Hainque <hainque@adacore.com>
4 years agoFix the vxworks crtstuff handling of kernel/rtp variations
Olivier Hainque [Thu, 15 Oct 2020 17:39:05 +0000 (17:39 +0000)]
Fix the vxworks crtstuff handling of kernel/rtp variations

The ports that support RTPs achieve the kernel/rtp compilation
and link distinction through the multilib mechanism.

This patch just removes the bogus explicit extraneous
materialization of this distinction in the common VxWorks
configuration files and leaves the rtp specialization all
to the multilib machinery.

2020-10-15  Olivier Hainque  <hainque@adacore.com>

libgcc/
* config/t-vxcrtstuff: Remove the -kernel/-rtp specialization.

gcc/
* config/vxworks.h (VX_CRTBEGIN_SPEC): Likewise.

4 years agoAllow self configured definition of _WRS_VXWORKS_MAJOR
Olivier Hainque [Tue, 13 Oct 2020 09:53:30 +0000 (09:53 +0000)]
Allow self configured definition of _WRS_VXWORKS_MAJOR

This conditions the use of system headers to fetch a
_WRS_VXWORKS_MAJOR macro on the non definition of that
macro. This allows builds where a specific value is
predefined, e.g. with a self spec, useful in environments
where the system headers don't actually define that macro
(e.g. vxworks 5 or 653).

In addition, _WRS_VXWORKS_MINOR is only provided by the
system headers when really meaningful, e.g. from 6.4 to 6.9.

We just pick a conservative default to 0 for all the cases
where it is not exposed by the system headers or otherwise.

2020-10-15  Olivier Hainque  <hainque@adacore.com>

gcc/
* config/vxworks/_vxworks-versions.h: Only include
version.h if _WRS_VXWORKS_MAJOR is not defined.
Provide a default _WRS_VXWORKS_MINOR (0).

4 years agoarm: Fix the warning -mcpu=cortex-m55 conflicting with -march=armv8.1-m.main (pr97327).
Srinath Parvathaneni [Fri, 16 Oct 2020 13:53:28 +0000 (14:53 +0100)]
arm: Fix the warning -mcpu=cortex-m55 conflicting with -march=armv8.1-m.main (pr97327).

This patch fixes (PR97327) the warning -mcpu=cortex-m55 conflicts with -march=armv8.1-m.main
for -mfloat-abi=soft by adding the isa_bit_mve_float to clearing FP bit list.

The following combination are fixed with this patch:
$ cat bug.c
int main(){
return 0;
}

$ arm-none-eabi-gcc -mcpu=cortex-m55 -mfloat-abi=soft bug.c -c
$ arm-none-eabi-gcc -mcpu=cortex-m55 -mfloat-abi=soft -march=armv8.1-m.main+mve bug.c -c

Before this patch for above combinations:
cc1: warning: switch '-mcpu=cortex-m55' conflicts with '-march=armv8.1-m.main' switch

After this patch for above combinations no warning/errors.

gcc/ChangeLog:

2020-10-16  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>

PR target/97327
* config/arm/arm.c (fp_bitlist): Add isa_bit_mve_float to FP bits array.

gcc/testsuite/ChangeLog:

PR target/97327
* gcc.target/arm/mve/intrinsics/pr97327.c: New test.

4 years agoAdjust BB vectorization SLP build heuristics
Richard Biener [Wed, 14 Oct 2020 13:37:51 +0000 (15:37 +0200)]
Adjust BB vectorization SLP build heuristics

This changes SLP def gathering to not fail due to mismatched
def type but instead demote the def to external.  This allows the
new testcase to be vectorized in full (with GCC 10 it is not
vectorized at all and with current trunk we vectorize only the
store).  This is important since with BB vectorization being
applied to bigger pieces of code the chance that we mix
internal and external defs for an operand that should end up
treated as external (built from scalars) increases.

2020-10-16  Richard Biener  <rguenther@suse.de>

* tree-vect-slp.c (vect_get_and_check_slp_defs): For BB
vectorization swap operands only if it helps, demote mismatches to
external.

* gcc.dg/vect/bb-slp-53.c: New testcase.

4 years agoarm: Fix wrong code generated for mve scatter store with writeback intrinsics with...
Srinath Parvathaneni [Fri, 16 Oct 2020 10:40:25 +0000 (11:40 +0100)]
arm: Fix wrong code generated for mve scatter store with writeback intrinsics with -O2 (PR97271).

This patch fixes (PR97271) the wrong code-gen for mve scatter store with writeback intrinsics with -O2.

$cat bug.c
void
foo (uint32x4_t * addr, const int offset, int32x4_t value)
{
  vstrwq_scatter_base_wb_s32 (addr, 8, value);
}

$ arm-none-eabi-gcc  bug.c -S -O2 -march=armv8.1-m.main+mve -mfloat-abi=hard -o -
Without this patch:
...
foo:
vldrw.32 q3, [r0]
vstrw.u32       q0, [q3, #8]!  ---> (A)
vldr.64 d4, .L3
vldr.64 d5, .L3+8
vldrw.32 q3, [r0]
vstrw.u32       q2, [q3, #8]!  ---> (B)
bx      lr
...

With this patch:
...
foo:
vldrw.32 q3, [r0]
vstrw.u32       q0, [q3, #8]!  --> (C)
vstrw.32 q3, [r0]
bx      lr
...

Without this patch 2 vstrw assembly instructions (A and B) are generated for vstrwq_scatter_base_wb_s32
intrinsic where as fix generates only one vstrw assembly instruction (C).

gcc/ChangeLog:

2020-10-06  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>

PR target/97291
* config/arm/arm-builtins.c (arm_strsbwbs_qualifiers): Modify array.
(arm_strsbwbu_qualifiers): Likewise.
(arm_strsbwbs_p_qualifiers): Likewise.
(arm_strsbwbu_p_qualifiers): Likewise.
* config/arm/arm_mve.h (__arm_vstrdq_scatter_base_wb_s64): Modify
function definition.
(__arm_vstrdq_scatter_base_wb_u64): Likewise.
(__arm_vstrdq_scatter_base_wb_p_s64): Likewise.
(__arm_vstrdq_scatter_base_wb_p_u64): Likewise.
(__arm_vstrwq_scatter_base_wb_p_s32): Likewise.
(__arm_vstrwq_scatter_base_wb_p_u32): Likewise.
(__arm_vstrwq_scatter_base_wb_s32): Likewise.
(__arm_vstrwq_scatter_base_wb_u32): Likewise.
(__arm_vstrwq_scatter_base_wb_f32): Likewise.
(__arm_vstrwq_scatter_base_wb_p_f32): Likewise.
* config/arm/arm_mve_builtins.def (vstrwq_scatter_base_wb_add_u): Remove
expansion for the builtin.
(vstrwq_scatter_base_wb_add_s): Likewise.
(vstrwq_scatter_base_wb_add_f): Likewise.
(vstrdq_scatter_base_wb_add_u): Likewise.
(vstrdq_scatter_base_wb_add_s): Likewise.
(vstrwq_scatter_base_wb_p_add_u): Likewise.
(vstrwq_scatter_base_wb_p_add_s): Likewise.
(vstrwq_scatter_base_wb_p_add_f): Likewise.
(vstrdq_scatter_base_wb_p_add_u): Likewise.
(vstrdq_scatter_base_wb_p_add_s): Likewise.
* config/arm/mve.md (mve_vstrwq_scatter_base_wb_<supf>v4si): Remove
expand.
(mve_vstrwq_scatter_base_wb_add_<supf>v4si): Likewise.
(mve_vstrwq_scatter_base_wb_<supf>v4si_insn): Rename pattern to ...
(mve_vstrwq_scatter_base_wb_<supf>v4si): This.
(mve_vstrwq_scatter_base_wb_p_<supf>v4si): Remove expand.
(mve_vstrwq_scatter_base_wb_p_add_<supf>v4si): Likewise.
(mve_vstrwq_scatter_base_wb_p_<supf>v4si_insn): Rename pattern to ...
(mve_vstrwq_scatter_base_wb_p_<supf>v4si): This.
(mve_vstrwq_scatter_base_wb_fv4sf): Remove expand.
(mve_vstrwq_scatter_base_wb_add_fv4sf): Likewise.
(mve_vstrwq_scatter_base_wb_fv4sf_insn): Rename pattern to ...
(mve_vstrwq_scatter_base_wb_fv4sf): This.
(mve_vstrwq_scatter_base_wb_p_fv4sf): Remove expand.
(mve_vstrwq_scatter_base_wb_p_add_fv4sf): Likewise.
(mve_vstrwq_scatter_base_wb_p_fv4sf_insn): Rename pattern to ...
(mve_vstrwq_scatter_base_wb_p_fv4sf): This.
(mve_vstrdq_scatter_base_wb_<supf>v2di): Remove expand.
(mve_vstrdq_scatter_base_wb_add_<supf>v2di): Likewise.
(mve_vstrdq_scatter_base_wb_<supf>v2di_insn): Rename pattern to ...
(mve_vstrdq_scatter_base_wb_<supf>v2di): This.
(mve_vstrdq_scatter_base_wb_p_<supf>v2di): Remove expand.
(mve_vstrdq_scatter_base_wb_p_add_<supf>v2di): Likewise.
(mve_vstrdq_scatter_base_wb_p_<supf>v2di_insn): Rename pattern to ...
(mve_vstrdq_scatter_base_wb_p_<supf>v2di): This.

gcc/testsuite/ChangeLog:

PR target/97291
* gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_s64.c: Modify.
* gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_u64.c:
Likewise.
* gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_s64.c: Likewise.
* gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_u64.c: Likewise.
* gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_f32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_f32.c:
Likewise.
* gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_s32.c:
Likewise.
* gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_u32.c:
Likewise.
* gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_s32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_u32.c: Likewise.

4 years agoFix modref-4.c testcase
Jan Hubicka [Fri, 16 Oct 2020 10:24:16 +0000 (12:24 +0200)]
Fix modref-4.c testcase

PR testsuite/97426
* gcc.dg/tree-ssa/modref-4.c: Fix return test.

4 years agolibsanitizer: update locale patches
Martin Liska [Fri, 16 Oct 2020 08:58:03 +0000 (10:58 +0200)]
libsanitizer: update locale patches

libsanitizer/ChangeLog:

* LOCAL_PATCHES: Update revision.

4 years agoReapply all revisions mentioned in LOCAL_PATCHES.
Martin Liska [Thu, 7 Nov 2019 09:34:14 +0000 (10:34 +0100)]
Reapply all revisions mentioned in LOCAL_PATCHES.

(cherry picked from commit 21bb1625bd4f183984223ce31bd03ba47ed62f27)

4 years agolibsanitizer: merge from master
Martin Liska [Fri, 16 Oct 2020 08:03:04 +0000 (10:03 +0200)]
libsanitizer: merge from master

4 years agoRISC-V: Handle implied extension in multilib-generator
Kito Cheng [Fri, 16 Oct 2020 08:36:45 +0000 (16:36 +0800)]
RISC-V: Handle implied extension in multilib-generator

 - -march has handle implied extension for a while, so I think
   multilib-generator should handle this well too.

 - Currently only add rule for D imply F.

gcc/ChangeLog:

* config/riscv/multilib-generator (IMPLIED_EXT): New.
(arch_canonicalize): Update comment and handle implied extensions.

4 years agoRefactor vect_get_and_check_slp_defs some more
Richard Biener [Wed, 14 Oct 2020 13:37:51 +0000 (15:37 +0200)]
Refactor vect_get_and_check_slp_defs some more

This refactors vect_get_and_check_slp_defs so that the ops and def_stmts
arrays are filled for all stmts and operands even when we signal failure.
This allows later changes for BB vectorization SLP discovery heuristics.

2020-10-16  Richard Biener  <rguenther@suse.de>

* tree-vect-slp.c (vect_get_and_check_slp_defs): First analyze
all operands and fill in the def_stmts and ops entries.
(vect_def_types_match): New helper.

4 years agoIPA: compare VRP types.
Martin Liska [Thu, 15 Oct 2020 12:57:31 +0000 (14:57 +0200)]
IPA: compare VRP types.

gcc/ChangeLog:

PR ipa/97404
* ipa-prop.c (struct ipa_vr_ggc_hash_traits):
Compare types of VRP as we can merge ranges of different types.

gcc/testsuite/ChangeLog:

PR ipa/97404
* gcc.c-torture/execute/pr97404.c: New test.

4 years ago[Ada] Assorted style cleanups
Piotr Trojanek [Thu, 2 Jul 2020 12:01:18 +0000 (14:01 +0200)]
[Ada] Assorted style cleanups

gcc/ada/

* checks.adb, exp_aggr.adb, exp_attr.adb, exp_ch6.adb,
freeze.adb, sem_aggr.adb, sem_attr.adb, sem_ch13.adb,
sem_ch13.ads, sem_ch6.adb, sem_eval.adb, sem_util.adb: Fix style
and typos.

4 years ago[Ada] Preelaborate rules not fully enforced
Arnaud Charlet [Tue, 30 Jun 2020 16:06:12 +0000 (12:06 -0400)]
[Ada] Preelaborate rules not fully enforced

gcc/ada/

* sem_cat.adb (Is_Primary): Handle N_Range properly.

4 years ago[Ada] Implement expansion of CUDA_Execute pragma
Ghjuvan Lacambre [Wed, 24 Jun 2020 15:12:19 +0000 (17:12 +0200)]
[Ada] Implement expansion of CUDA_Execute pragma

gcc/ada/

* elists.ads (New_Elmt_List): New functions.
* elists.adb (New_Elmt_List): New functions.
* exp_prag.adb: Add dependency on Elists.
(Expand_Pragma_CUDA_Execute): New function.
(Expand_N_Pragma): Add call to Expand_Pragma_CUDA_Execute.
* rtsfind.ads: Add CUDA.Internal, CUDA.Runtime, System.C
packages and RE_Push_Call_Configuration,
RE_Pop_Call_Configuration, RE_Launch_Kernel, RO_IC_Unsigned,
RO_IC_Unsigned_Long_Long entities.
* rtsfind.adb: Extend Interfaces_Descendant to include
Interfaces_C.

4 years ago[Ada] Ada2020: parsing of qualified exprs with new agg syntax
Bob Duff [Wed, 1 Jul 2020 20:22:46 +0000 (16:22 -0400)]
[Ada] Ada2020: parsing of qualified exprs with new agg syntax

gcc/ada/

* par-ch4.adb (P_Name): Allow Tok_Left_Bracket in two places to
call P_Qualified_Expression. We don't need to modify other
places that call P_Qualified_Expression, because a
qualified_expression is a name in Ada 2012 and higher, so P_Name
is the right place.  The parser already parses aggregates with
brackets; we just need to allow that in qualified expressions.

4 years ago[Ada] Crash in generic renaming declaration of child unit
Javier Miranda [Tue, 30 Jun 2020 18:20:09 +0000 (14:20 -0400)]
[Ada] Crash in generic renaming declaration of child unit

gcc/ada/

* sem_ch12.adb (Check_Generic_Child_Unit): When the child unit
is a renaming of a generic child unit then traverse the scope
containing the renaming declaration to locate the instance of
its parent.  Otherwise the parent is not installed and the
frontend cannot process the instantiation.

4 years ago[Ada] Remove non-ASCII character
Bob Duff [Wed, 1 Jul 2020 12:40:02 +0000 (08:40 -0400)]
[Ada] Remove non-ASCII character

gcc/ada/

* libgnat/a-numeri.ads: Remove the greek letter.

4 years ago[Ada] Attribute Img on derived types
Ed Schonberg [Thu, 2 Jul 2020 00:25:09 +0000 (20:25 -0400)]
[Ada] Attribute Img on derived types

gcc/ada/

* exp_imgv.adb (Expand_Image_Attribute): Refine previous patch
to use root type (and not base type) on enumeration types.

4 years ago[Ada] Attribute Img on derived types
Ed Schonberg [Mon, 29 Jun 2020 21:06:42 +0000 (17:06 -0400)]
[Ada] Attribute Img on derived types

gcc/ada/

* exp_imgv.adb (Expand_Image_Attribute): Use the base type
instead of the root type when type of object is private. Remove
Ada_2020 guard, because it has been checked during prior
analysis. Use Underlying_Type in all cases, as it is a no-op on
types that are not private.

4 years ago[Ada] Ada2020: AI12-0129 Make protected objects more protecting
Arnaud Charlet [Tue, 30 Jun 2020 07:49:34 +0000 (03:49 -0400)]
[Ada] Ada2020: AI12-0129 Make protected objects more protecting

gcc/ada/

* aspects.ads, snames.ads-tmpl: Add support for
Exclusive_Functions aspect.
* sem_ch13.adb (Analyze_Aspect_Specifications): Ditto.
* exp_ch9.adb (Build_Protected_Subprogram_Body): Take aspect
Exclusive_Functions into account.

4 years ago[Ada] Clean up in system.ads dependencies during compiler build
Arnaud Charlet [Wed, 1 Jul 2020 08:53:39 +0000 (04:53 -0400)]
[Ada] Clean up in system.ads dependencies during compiler build

gcc/ada/

* gcc-interface/Make-lang.in: Update dependencies on system.ads,
add gnatbind switch -t to avoid timestamp inconsistencies during
build.
* libgnat/system.ads: Move...
* gcc-interface/system.ads: ... here.

4 years ago[Ada] Legal actual type with inherited discriminants rejected in instantiation
Gary Dismukes [Tue, 30 Jun 2020 22:58:56 +0000 (18:58 -0400)]
[Ada] Legal actual type with inherited discriminants rejected in instantiation

gcc/ada/

* sem_eval.adb (Subtypes_Statically_Match): Retrieve
discriminant constraints from the two types via new function
Original_Discriminant_Constraint rather than
Discriminant_Constraint.
(Original_Discriminant_Constraint): New function to locate the
nearest explicit discriminant constraint associated with a type
that may possibly have inherited a constraint from an ancestor
type.

4 years ago[Ada] Remove obsolete workaround regarding array returns
Bob Duff [Wed, 24 Jun 2020 20:26:50 +0000 (16:26 -0400)]
[Ada] Remove obsolete workaround regarding array returns

gcc/ada/

* exp_ch6.adb (Expand_Simple_Function_Return): Remove obsolete
comment and code.

4 years ago[Ada] Convert from UTF_16 to UTF_8 fails for large values
Arnaud Charlet [Mon, 29 Jun 2020 08:18:27 +0000 (04:18 -0400)]
[Ada] Convert from UTF_16 to UTF_8 fails for large values

gcc/ada/

PR ada/95953
* libgnat/a-suenco.adb (Convert): Fix handling of third UTF-8
byte.

4 years ago[Ada] Avoid premature finalization of a function result
Steve Baird [Fri, 26 Jun 2020 00:15:50 +0000 (17:15 -0700)]
[Ada] Avoid premature finalization of a function result

gcc/ada/

* exp_util.adb (Is_Related_To_Func_Return): Cope with the case
where the FE introduces a type conversion.

4 years ago[Ada] Constants no longer synchronised if they are access-to-variable
Chris Martin [Tue, 16 Jun 2020 09:16:06 +0000 (10:16 +0100)]
[Ada] Constants no longer synchronised if they are access-to-variable

gcc/ada/

* sem_util.ads, sem_util.adb (Is_Access_Variable): New function.
(Is_Synchronized_Object): Call new function when determining if
a constant can be regarded as synchronized.

4 years ago[Ada] Finalization of uninitialized object with build in place call
Arnaud Charlet [Sun, 28 Jun 2020 10:24:26 +0000 (06:24 -0400)]
[Ada] Finalization of uninitialized object with build in place call

gcc/ada/

* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration):
Call Set_BIP_Initialization_Call systematically.
* exp_ch7.adb (Process_Transient_In_Scope): Take
BIP_Initialization_Call into account to decide where to insert
the Hook.

4 years ago[Ada] Detect qualified type names for AI12-0027
Piotr Trojanek [Mon, 29 Jun 2020 08:28:00 +0000 (10:28 +0200)]
[Ada] Detect qualified type names for AI12-0027

gcc/ada/

* sem_util.adb (Is_View_Conversion): Detect qualified types.
* sem_util.ads (Is_Actual_In_Out_Parameter): Fix style in
comment.

4 years ago[Ada] Relax too strong assertions
Arnaud Charlet [Fri, 26 Jun 2020 09:08:37 +0000 (05:08 -0400)]
[Ada] Relax too strong assertions

gcc/ada/

* scil_ll.adb, sem_scil.adb: Update assertions.

4 years ago[Ada] Improvements to implementation of Ada_2020 attribute Reduce
Ed Schonberg [Sun, 28 Jun 2020 19:11:33 +0000 (15:11 -0400)]
[Ada] Improvements to implementation of Ada_2020 attribute Reduce

gcc/ada/

* sem_attr.adb (Min_Max): Handle the case where attribute
name (qualified by required type) appears as the reducer of a
'Reduce attribute reference.
(Resolve_Attribute) <Reduce>: Handle properly the presence of a
procedure or an attribute reference Min/Max as a reducer.
* exp_attr.adb (Expand_Attribute_Reference) <Reduce>: New
subprogram Build_Stat, to construct the combining statement
which appears in the generated loop for Reduce, and which is
either a function call when the reducer is a function or an
attribute, or a procedure call when reducer is an appropriate
procedure.  BuilD_Stat is used both when the prefix of 'Reduce
is a value sequence and when it is an object

4 years ago[Ada] Reduce use of primary stack on string concatenation
Arnaud Charlet [Fri, 26 Jun 2020 11:49:37 +0000 (07:49 -0400)]
[Ada] Reduce use of primary stack on string concatenation

gcc/ada/

* exp_ch4.adb (Expand_Concatenate): Allocate result of string
concatenation on secondary stack when relevant.

4 years ago[Ada] Spurious visibility error on Declare_Expression with renames
Ed Schonberg [Thu, 25 Jun 2020 20:44:27 +0000 (16:44 -0400)]
[Ada] Spurious visibility error on Declare_Expression with renames

gcc/ada/

* sem_res.adb (Resolve_Declare_Expression): Retrieve the created
block entity that is the scope of the local declarations, from
either a local object declaration or an object renaming
declaration. The block entity does not have an explicit
declaration, but appears as the scope of all locally declared
objects.

4 years ago[Ada] Use new Max_Integer_Size attribute in system.ads files
Eric Botcazou [Fri, 26 Jun 2020 14:16:08 +0000 (16:16 +0200)]
[Ada] Use new Max_Integer_Size attribute in system.ads files

gcc/ada/

* libgnat/system-aix.ads: Likewise.
* libgnat/system-darwin-arm.ads: Likewise.
* libgnat/system-darwin-ppc.ads: Likewise.
* libgnat/system-darwin-x86.ads: Likewise.
* libgnat/system-djgpp.ads: Likewise.
* libgnat/system-dragonfly-x86_64.ads: Likewise.
* libgnat/system-freebsd.ads: Likewise.
* libgnat/system-hpux-ia64.ads: Likewise.
* libgnat/system-hpux.ads: Likewise.
* libgnat/system-linux-alpha.ads: Likewise.
* libgnat/system-linux-arm.ads: Likewise.
* libgnat/system-linux-hppa.ads: Likewise.
* libgnat/system-linux-ia64.ads: Likewise.
* libgnat/system-linux-m68k.ads: Likewise.
* libgnat/system-linux-mips.ads: Likewise.
* libgnat/system-linux-ppc.ads: Likewise.
* libgnat/system-linux-riscv.ads: Likewise.
* libgnat/system-linux-s390.ads: Likewise.
* libgnat/system-linux-sh4.ads: Likewise.
* libgnat/system-linux-sparc.ads: Likewise.
* libgnat/system-linux-x86.ads: Likewise.
* libgnat/system-lynxos178-ppc.ads: Likewise.
* libgnat/system-lynxos178-x86.ads: Likewise.
* libgnat/system-mingw.ads: Likewise.
* libgnat/system-qnx-aarch64.ads: Likewise.
* libgnat/system-rtems.ads: Likewise.
* libgnat/system-solaris-sparc.ads: Likewise.
* libgnat/system-solaris-x86.ads: Likewise.
* libgnat/system-vxworks-arm-rtp-smp.ads: Likewise.
* libgnat/system-vxworks-arm-rtp.ads: Likewise.
* libgnat/system-vxworks-arm.ads: Likewise.
* libgnat/system-vxworks-e500-kernel.ads: Likewise.
* libgnat/system-vxworks-e500-rtp-smp.ads: Likewise.
* libgnat/system-vxworks-e500-rtp.ads: Likewise.
* libgnat/system-vxworks-e500-vthread.ads: Likewise.
* libgnat/system-vxworks-ppc-kernel.ads: Likewise.
* libgnat/system-vxworks-ppc-ravenscar.ads: Likewise.
* libgnat/system-vxworks-ppc-rtp-smp.ads: Likewise.
* libgnat/system-vxworks-ppc-rtp.ads: Likewise.
* libgnat/system-vxworks-ppc-vthread.ads: Likewise.
* libgnat/system-vxworks-ppc.ads: Likewise.
* libgnat/system-vxworks-x86-kernel.ads: Likewise.
* libgnat/system-vxworks-x86-rtp-smp.ads: Likewise.
* libgnat/system-vxworks-x86-rtp.ads: Likewise.
* libgnat/system-vxworks-x86-vthread.ads: Likewise.
* libgnat/system-vxworks-x86.ads: Likewise.
* libgnat/system-vxworks7-aarch64-rtp-smp.ads: Likewise.
* libgnat/system-vxworks7-aarch64.ads: Likewise.
* libgnat/system-vxworks7-arm-rtp-smp.ads: Likewise.
* libgnat/system-vxworks7-arm.ads: Likewise.
* libgnat/system-vxworks7-e500-kernel.ads: Likewise.
* libgnat/system-vxworks7-e500-rtp-smp.ads: Likewise.
* libgnat/system-vxworks7-e500-rtp.ads: Likewise.
* libgnat/system-vxworks7-ppc-kernel.ads: Likewise.
* libgnat/system-vxworks7-ppc-rtp-smp.ads: Likewise.
* libgnat/system-vxworks7-ppc-rtp.ads: Likewise.
* libgnat/system-vxworks7-ppc64-kernel.ads: Likewise.
* libgnat/system-vxworks7-ppc64-rtp-smp.ads: Likewise.
* libgnat/system-vxworks7-x86-kernel.ads: Likewise.
* libgnat/system-vxworks7-x86-rtp-smp.ads: Likewise.
* libgnat/system-vxworks7-x86-rtp.ads: Likewise.
* libgnat/system-vxworks7-x86_64-kernel.ads: Likewise.
* libgnat/system-vxworks7-x86_64-rtp-smp.ads: Likewise.

4 years ago[Ada] Remove support for -gnatP and pragma Polling
Arnaud Charlet [Thu, 25 Jun 2020 08:02:29 +0000 (04:02 -0400)]
[Ada] Remove support for -gnatP and pragma Polling

gcc/ada/

* Makefile.rtl, gnat1drv.adb, expander.adb
doc/gnat_rm/implementation_defined_pragmas.rst,
doc/gnat_ugn/building_executable_programs_with_gnat.rst,
doc/gnat_ugn/the_gnat_compilation_model.rst, exp_ch5.ads,
exp_ch5.adb, exp_ch6.adb, exp_ch7.adb, exp_util.adb,
exp_util.ads, libgnarl/s-osinte__aix.adb,
libgnarl/s-osinte__android.adb, libgnarl/s-osinte__darwin.adb,
libgnarl/s-osinte__gnu.adb, libgnarl/s-osinte__hpux-dce.adb,
libgnarl/s-osinte__lynxos178.adb, libgnarl/s-osinte__posix.adb,
libgnarl/s-osinte__qnx.adb, libgnarl/s-osinte__rtems.adb,
libgnarl/s-osinte__solaris.adb, libgnarl/s-osinte__vxworks.adb,
libgnarl/s-osinte__x32.adb, libgnarl/s-solita.adb,
libgnarl/s-taasde.adb, libgnarl/s-taprob.adb,
libgnarl/s-taprop__dummy.adb, libgnarl/s-taprop__hpux-dce.adb,
libgnarl/s-taprop__linux.adb, libgnarl/s-taprop__mingw.adb,
libgnarl/s-taprop__posix.adb, libgnarl/s-taprop__qnx.adb,
libgnarl/s-taprop__solaris.adb, libgnarl/s-taprop__vxworks.adb,
libgnarl/s-tarest.adb, libgnarl/s-tasini.adb,
libgnarl/s-taskin.adb, libgnarl/s-taspri__dummy.ads,
libgnarl/s-taspri__hpux-dce.ads, libgnarl/s-taspri__lynxos.ads,
libgnarl/s-taspri__mingw.ads,
libgnarl/s-taspri__posix-noaltstack.ads,
libgnarl/s-taspri__posix.ads, libgnarl/s-taspri__solaris.ads,
libgnarl/s-taspri__vxworks.ads, libgnarl/s-tassta.adb,
libgnarl/s-tasuti.adb, libgnarl/s-tposen.adb,
libgnat/a-except.adb, libgnat/a-except.ads,
libgnat/s-dwalin.adb, libgnat/s-dwalin.ads,
libgnat/s-mastop.ads, libgnat/s-soflin.adb,
libgnat/s-stalib.adb, libgnat/s-stalib.ads,
libgnat/s-stchop.adb, libgnat/s-stchop.ads,
libgnat/s-stchop__limit.ads, libgnat/s-traceb.ads,
libgnat/s-traent.adb, libgnat/s-traent.ads,
libgnat/s-trasym.adb, libgnat/s-trasym.ads,
libgnat/s-trasym__dwarf.adb, opt.adb, opt.ads, par-prag.adb,
sem_prag.adb, snames.ads-tmpl, switch-c.adb, targparm.adb,
targparm.ads, usage.adb: Remove support for -gnatP and pragma
Polling.
* gnat_ugn.texi: Regenerate.
* libgnat/a-excpol.adb, libgnat/a-excpol__abort.adb: Removed.

4 years ago[Ada] Unique itypes names for unconstrained array object declaration
Piotr Trojanek [Thu, 25 Jun 2020 19:48:51 +0000 (21:48 +0200)]
[Ada] Unique itypes names for unconstrained array object declaration

gcc/ada/

* sem_ch3.adb (Array_Type_Declaration): Create itype with unique
name.

4 years ago[Ada] Cleanup related to itypes for unconstrained object declaration
Piotr Trojanek [Thu, 25 Jun 2020 13:42:23 +0000 (15:42 +0200)]
[Ada] Cleanup related to itypes for unconstrained object declaration

gcc/ada/

* sem_ch3.adb (Analyze_Object_Declaration): Limit scope of a
local object by hiding it from local subprograms; simplify
nested if-then-if-then condition for an Ada 83 restriction.
(Array_Type_Declaration): Confirm with assertion when the else
branch is executed.
(Find_Type_Of_Object): Simplify membership test with a subtype
range.

4 years ago[Ada] SPARK: update for effectively volatile types and objects
Yannick Moy [Tue, 2 Jun 2020 16:24:16 +0000 (18:24 +0200)]
[Ada] SPARK: update for effectively volatile types and objects

gcc/ada/

* sem_prag.adb (Analyze_Global_In_Decl_Part): Update check to
reject volatile object for reading.
* sem_res.adb (Resolve_Actuals, Resolve_Entity_Name): Update
check to reject volatile object for reading.
* sem_util.adb, sem_util.ads
(Check_Nonvolatile_Function_Profile,
Has_Effectively_Volatile_Profile): Detect use of volatile object
for reading.
(Has_Enabled_Property): Accept constants as well.
(Is_Effectively_Volatile_For_Reading): New function based on
existing Is_Effectively_Volatile.
(Is_Effectively_Volatile_Object_For_Reading): Adapted from the
existing Is_Effectively_Volatile_Object, using a shared
implementation in Is_Effectively_Volatile_Object_Shared.

4 years ago[Ada] GNAT-LLVM unnesting issues in elaboration code
Gary Dismukes [Wed, 24 Jun 2020 21:22:58 +0000 (17:22 -0400)]
[Ada] GNAT-LLVM unnesting issues in elaboration code

gcc/ada/

* exp_ch7.adb (Check_Unnesting_In_Decls_Or_Stmts): In the case
of an if-statement, call Unnest_If_Statement to determine
whether there are nested subprograms in any of the statement
lists of the "if" parts that require a wrapping procedure to
handle possible up-level refeferences.
(Unnest_Block): Call Check_Unnesting_In_Handlers to do unnesting
of subprograms in exception handlers of the block statement.
(Unnest_If_Statement): New procedure to traverse the parts of an
if-statement and create wrapper procedures as needed to
encapsulate nested subprograms that may make up-level
references.
(Check_Stmts_For_Subp_Unnesting): New support procedure in
Unnest_If_Statement to traverse a statement list looking for
top-level subprogram bodies that require wrapping inside a
procedure (via Unnest_Statement_List) as well as possibly having
other statements (block, loop, if) that may themselves require
an unnesting transformation (via
Check_Unnesting_In_Decls_Or_Stmts).
(Unnest_Statement_List): New support procedure to traverse the
statements of a statement list that contains subprogram bodies
at the top level and replace the statement list with a wrapper
procedure body encapsulating the statements and a call to the
procedure.

4 years ago[Ada] Crash when specifying an abstract subprogram with Stream_Convert
Arnaud Charlet [Thu, 25 Jun 2020 09:36:54 +0000 (05:36 -0400)]
[Ada] Crash when specifying an abstract subprogram with Stream_Convert

gcc/ada/

* sem_prag.adb (Check_OK_Stream_Convert_Function): Check for
abstract subprograms.

4 years ago[Ada] Fix documentation of No_Local_Timing_Events
Piotr Trojanek [Thu, 25 Jun 2020 12:37:44 +0000 (14:37 +0200)]
[Ada] Fix documentation of No_Local_Timing_Events

gcc/ada/

* doc/gnat_rm/standard_and_implementation_defined_restrictions.rst
(No_Local_Timing_Events): Package Timing_Events is a child of
Ada.Real_Time, not of Ada.
* gnat_rm.texi: Regenerate.

4 years ago[Ada] Add Max_Integer_Size attribute and couple of helper functions
Eric Botcazou [Tue, 23 Jun 2020 10:49:04 +0000 (12:49 +0200)]
[Ada] Add Max_Integer_Size attribute and couple of helper functions

gcc/ada/

* doc/gnat_rm/implementation_defined_attributes.rst: Document the
new Max_Integer_Size attribute.
* gnat_rm.texi: Regenerate.
* exp_attr.adb (Get_Integer_Type): Call Small_Integer_Type_For.
(Expand_N_Attribute_Reference) <Attribute_Pred>: Replace selection
code with call to Integer_Type_For.
<Attribute_Succ>: Likewise.
<Attribute_Val>: Likewise.
<Attribute_Valid>: Likewise.
<Attribute_Max_Integer_Size>: Raise Program_Error.
* exp_ch3.adb (Expand_Freeze_Enumeration_Type): Replace selection
code with call to Integer_Type_For.
(Simple_Init_Initialize_Scalars_Type): Use Long_Long_Unsigned and
System_Max_Integer_Size to size the largest integer type.
* exp_pakd.adb (Compute_Linear_Subscript): Minor tweak.
(Create_Packed_Array_Impl_Type): Use Small_Integer_Type_For.
* exp_util.ads (Integer_Type_For): New function.
(Small_Integer_Type_For): Likewise.
* exp_util.adb (Adjust_Condition): Use Integer_Type_For.
(Component_May_Be_Bit_Aligned): Use System_Max_Integer_Size.
(Integer_Type_For): New function.
(Small_Integer_Type_For): Likewise.
(Matching_Standard_Type): Use Small_Integer_Type_For.
(Needs_Constant_Address): Replace 64 with System_Max_Integer_Size.
* freeze.adb (Set_Small_Size): Likewise.
(Size_Known): Likewise.
(Check_Suspicious_Modulus): Likewise.
(Check_Large_Modular_Array): Likewise.
(Freeze_Entity): Likewise.
* layout.adb (Layout_Type): Likewise.
* sem_aggr.adb: Add with and use clauses for Ttypes.
(Resolve_Aggregate): Replace 64 with System_Max_Integer_Size.
* sem_attr.ads (Attribute_Impl_Def): Add Attribute_Max_Integer_Size.
* sem_attr.adb (Analyze_Attribute) <Attribute_Max_Integer_Size>: New
(Eval_Attribute): Likewise.
* sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order): Change max
scalar size to System_Max_Integer_Size.
(Check_Array_Type): Replace 64 with System_Max_Integer_Size and
remove superfluous test.
(OK_Component): Likewise.
* sem_ch5.adb: Add with and use clauses for Ttypes.
(Analyze_Assignment): Replace 64 with System_Max_Integer_Size.
* snames.ads-tmpl (Name_Max_Integer_Size): New attribute name.
(Attribute_Id): Add Attribute_Max_Integer_Size.
* ttypes.ads (System_Max_Integer_Size): New constant.

4 years agotree-optimization/97428 - split SLP groups for loop vectorization
Richard Biener [Thu, 15 Oct 2020 09:55:53 +0000 (11:55 +0200)]
tree-optimization/97428 - split SLP groups for loop vectorization

This enables SLP store group splitting also for loop vectorization.
For the existing testcase gcc.dg/vect/vect-complex-5.c this then
generates much better code, likewise for the PR97428 testcase.

Both of those have a splitting opportunity splitting the group
into two equal (vector-sized) halves, still the patch enables
quite arbitrary splitting since generally the interleaving scheme
results in quite awkward code for even small groups.  If any
problems surface with this it's easy to restrict the splitting
to known-good cases.

2020-10-15  Richard Biener  <rguenther@suse.de>

PR tree-optimization/97428
* tree-vect-slp.c (vect_analyze_slp_instance): Split store
groups also for loop vectorization.

* gcc.dg/vect/vect-complex-5.c: Expect to SLP.
* gcc.dg/vect/pr97428.c: Likewise.

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

4 years agocompiler: don't export function type parameter names
Ian Lance Taylor [Thu, 15 Oct 2020 22:34:14 +0000 (15:34 -0700)]
compiler: don't export function type parameter names

When hashing a function type the parameter names are ignored.
Therefore, we should not write them into the export data.
Otherwise, minor changes in the order in which we process the
types can cause the export data to change uselessly, leading to
unnecessary rebuilds.

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

4 years agoruntime: use correct types in __go_ptrace shim
Nikhil Benesch [Wed, 14 Oct 2020 19:02:12 +0000 (19:02 +0000)]
runtime: use correct types in __go_ptrace shim

Make the types of the addr and data arguments in the __go_ptrace shim
match the types declared in Go and the types declared by the C ptrace
function, i.e., void*. This avoids a warning about an implicit
int-to-pointer cast on some platforms.

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

4 years agolibgo: correct Makefile typo in path to x/net/route package
Nikhil Benesch [Wed, 14 Oct 2020 19:24:49 +0000 (19:24 +0000)]
libgo: correct Makefile typo in path to x/net/route package

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

4 years agocompiler: export type for string and bool constants
Ian Lance Taylor [Wed, 14 Oct 2020 22:30:00 +0000 (15:30 -0700)]
compiler: export type for string and bool constants

Also consolidate the identical code for constant type export into a
pair of static methods.

Fixes golang/go#35739

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

4 years agotestsuite: Fix some endianness bugs in p9 runnable tests.
David Edelsohn [Thu, 15 Oct 2020 18:12:52 +0000 (14:12 -0400)]
testsuite: Fix some endianness bugs in p9 runnable tests.

This patch fixes some bugs in the powerpc testsuite for runnable tests
whose expected values were endian dependent.

gcc/testsuite/ChangeLog:

2020-10-15  David Edelsohn  <dje.gcc@gmail.com>

* gcc.target/powerpc/builtins-1-p9-runnable.c: Adjust for big endian.
* gcc.target/powerpc/builtins-7-p9-runnable.c: Same.

4 years agolibstdc++: Fix typos in copyright notice
Jonathan Wakely [Thu, 15 Oct 2020 18:19:15 +0000 (19:19 +0100)]
libstdc++: Fix typos in copyright notice

It looks like I did a s/a/__a/ substition in one of these headers, and
then copied it to the other one.

libstdc++-v3/ChangeLog:

* include/std/concepts: Fix typos in copyright notice.
* include/std/ranges: Likewise.

4 years agoc++: Fix [[deprecated]] and implicit operator==. [PR97358]
Jason Merrill [Thu, 15 Oct 2020 16:54:16 +0000 (12:54 -0400)]
c++: Fix [[deprecated]] and implicit operator==. [PR97358]

Trying to diagnose the problem with an implicit copy function breaks if the
function isn't actually a copy function.

gcc/cp/ChangeLog:

PR c++/95844
* decl.c (copy_fn_p): Return false for a function that is neither a
constructor nor an assignment operator.
(move_signature_fn_p): Likewise.

gcc/testsuite/ChangeLog:

PR c++/95844
* g++.dg/cpp2a/spaceship-eq10.C: New test.

4 years agotestsuite: Add appropriate target requirements to P9 testcases.
David Edelsohn [Thu, 15 Oct 2020 02:05:09 +0000 (22:05 -0400)]
testsuite: Add appropriate target requirements to P9 testcases.

This patch adds effective target and target specific expected results
to a few P9 testcases.

gcc/testsuite/ChangeLog:

* gcc.target/powerpc/builtins-5-p9-runnable.c: Require lp64.
* gcc.target/powerpc/builtins-msum-runnable.c: Require int128.
* gcc.target/powerpc/float128-cmp2-runnable.c: Require float128.
* gcc.target/powerpc/fold-vec-extract-double.p9.c: Require lp64.

4 years agoc++: Improve printing of pointers-to-members [PR97406, PR85901]
Marek Polacek [Wed, 14 Oct 2020 16:59:58 +0000 (12:59 -0400)]
c++: Improve printing of pointers-to-members [PR97406, PR85901]

This PR points out that when printing the parameter mapping for a
pointer-to-member-function, the output was truncated:

  [with T = void (X::*]

Fixed by printing the abstract declarator for pointers-to-members in
cxx_pretty_printer::type_id.  So now we print:

  [with T = void (X::*)()]

But when I tried a pointer-to-data-member, I got

  [with T = ‘offset_type’ not supported by simple_type_specifier)‘offset_type’ not supported by direct_abstract_declarator]

so had to fix that too so that we now print:

  [with T = int X::*]

or

  [with T = int (X::*)[5]]

when the type is an array type.  Which is what PR85901 was about.

gcc/cp/ChangeLog:

PR c++/97406
PR c++/85901
* cxx-pretty-print.c (pp_cxx_type_specifier_seq): Handle OFFSET_TYPE.
(cxx_pretty_printer::abstract_declarator): Fix the printing of ')'.
(cxx_pretty_printer::direct_abstract_declarator): Handle OFFSET_TYPE.
(cxx_pretty_printer::type_id): Likewise.  Print the abstract declarator
for pointers-to-members.

gcc/testsuite/ChangeLog:

PR c++/97406
PR c++/85901
* g++.dg/diagnostic/ptrtomem1.C: New test.
* g++.dg/diagnostic/ptrtomem2.C: New test.

4 years ago[nvptx, testsuite] Xfail stack atomics
Tom de Vries [Thu, 15 Oct 2020 13:55:24 +0000 (15:55 +0200)]
[nvptx, testsuite] Xfail stack atomics

Nvptx currently doesn't support atomics if it involves a stack address.
PR97444 is open about.

Xfail corresponding execution fails in gcc.dg/atomic.  Tested on nvptx.

gcc/testsuite/ChangeLog:

2020-10-15  Tom de Vries  <tdevries@suse.de>

* gcc.dg/atomic/c11-atomic-exec-6.c: Xfail execution for nvptx.
* gcc.dg/atomic/c11-atomic-exec-7.c: Same.
* gcc.dg/atomic/stdatomic-op-5.c: Same.

4 years agoFix fndecl's for fortran coarray calls.
Andre Vehreschild [Thu, 15 Oct 2020 13:43:35 +0000 (15:43 +0200)]
Fix fndecl's for fortran coarray calls.

gcc/fortran/ChangeLog:

* trans-decl.c (gfc_build_builtin_function_decls): Fix the coarray fndecls.

4 years ago[nvptx] Remove -m32
Tom de Vries [Thu, 15 Oct 2020 09:37:43 +0000 (11:37 +0200)]
[nvptx] Remove -m32

The nvptx port has an -m32 option, but it's not clear whether this
was ever build/tested/used.

Don't expose to user anymore.  Tested on nvptx.

gcc/ChangeLog:

2020-10-15  Tom de Vries  <tdevries@suse.de>

PR target/97436
* config/nvptx/nvptx.opt (m32): Comment out.
* doc/invoke.texi (NVPTX options): Remove -m32.

gcc/testsuite/ChangeLog:

2020-10-15  Tom de Vries  <tdevries@suse.de>

PR target/97436
* gcc.target/nvptx/atomic_fetch-3.c: Remove.

4 years agoFix toplevel comment of attr-fnspec.h
Jan Hubicka [Thu, 15 Oct 2020 12:46:12 +0000 (14:46 +0200)]
Fix toplevel comment of attr-fnspec.h

gcc/ChangeLog:

2020-10-15  Jan Hubicka  <hubicka@ucw.cz>
    Richard Biener  <rguenther@suse.de>

* attr-fnspec.h: Fix toplevel comment.

4 years agofix TARGET_MEM_REF dumping
Richard Biener [Thu, 15 Oct 2020 11:08:48 +0000 (13:08 +0200)]
fix TARGET_MEM_REF dumping

This fixes the missing constant offset from TARGET_MEM_REF dumping.

2020-10-15  Richard Biener  <rguenther@suse.de>

* tree-pretty-print.c (dump_mem_ref): Print constant offset
also for TARGET_MEM_REF.

4 years agoAlso accept symbols in other partition in symtab_node::binds_to_current_def_p
Jan Hubicka [Thu, 15 Oct 2020 11:50:22 +0000 (13:50 +0200)]
Also accept symbols in other partition in symtab_node::binds_to_current_def_p

* symtab.c (symtab_node::binds_to_current_def_p): Also accept symbols
defined in other partition.

4 years agolibgomp: Amend documentation for omp_get_max_active_levels and omp_get_supported_acti...
Kwok Cheung Yeung [Thu, 15 Oct 2020 09:32:09 +0000 (02:32 -0700)]
libgomp: Amend documentation for omp_get_max_active_levels and omp_get_supported_active_levels

2020-10-15  Kwok Cheung Yeung  <kcy@codesourcery.com>

libgomp/
* libgomp.texi (omp_get_max_active_levels): Modify description.
(omp_get_supported_active_levels): Make descriptions consistent.

4 years agoFix ICE in vectorizable_live_operation
Richard Biener [Thu, 15 Oct 2020 08:58:41 +0000 (10:58 +0200)]
Fix ICE in vectorizable_live_operation

This fixes the case where the insertion iterator for the live stmt
is the end of a BB by adjusting the dominance query to the definition
of the def we're substituting.

2020-10-15  Richard Biener  <rguenther@suse.de>

* tree-vect-loop.c (vectorizable_live_operation): Adjust
dominance query.

* gcc.dg/vect/bb-slp-52.c: New testcase.

4 years ago[Ada] Spurious visibility on private with package
Arnaud Charlet [Tue, 23 Jun 2020 14:39:12 +0000 (10:39 -0400)]
[Ada] Spurious visibility on private with package

gcc/ada/

* sem_ch10.adb (Install_With_Clause): Fix implementation of Ada
2005 AI-262 by taking into account generic packages.  Minor
reformatting.
* libgnat/a-cbhase.ads, libgnat/a-cbhase.adb: Remove use clause
on runtime unit spec.

4 years ago[Ada] Wrong use of Scope_Depth_Value
Arnaud Charlet [Tue, 23 Jun 2020 16:14:03 +0000 (12:14 -0400)]
[Ada] Wrong use of Scope_Depth_Value

gcc/ada/

* einfo.ads, einfo.adb (Scope_Depth_Value,
Set_Scope_Depth_Value): Add assertions on valid nodes and update
documentation accordingly.
(Write_Field22_Name): Sync with change in Scope_Depth_Value.
* sem_ch8.adb (Find_Direct_Name): Fix call to Scope_Depth_Value.

4 years ago[Ada] Ada2020: AI12-0003 Specifying the standard storage pool
Javier Miranda [Wed, 24 Jun 2020 19:05:14 +0000 (15:05 -0400)]
[Ada] Ada2020: AI12-0003 Specifying the standard storage pool

gcc/ada/

* sem_prag.adb (Analyze_Pragma): Adding semantic support of
Standard to Default_Storage_Pool.
* freeze.adb (Freeze_Entity): If pragma Default_Storage_Pool
applies and it is set to Standard then use the global pool as
the associated storage pool of the access type.

4 years ago[Ada] Cleanup definition of Might_Have_Tasks
Javier Miranda [Wed, 24 Jun 2020 19:57:36 +0000 (15:57 -0400)]
[Ada] Cleanup definition of Might_Have_Tasks

gcc/ada/

* exp_ch6.ads (Might_Have_Tasks): Update documentation.
* exp_ch6.adb (Might_Have_Tasks): Return also true when the type
has tasks.
(Make_Build_In_Place_Call_In_Allocator): Code cleanup.
* exp_ch3.adb (Ensure_Activation_Chain_And_Master,
Expand_N_Full_Type_Declaration, Expand_N_Object_Declaration):
Code cleanup.

4 years ago[Ada] Get finalization right when a function returns a function call
Steve Baird [Tue, 23 Jun 2020 23:12:36 +0000 (16:12 -0700)]
[Ada] Get finalization right when a function returns a function call

gcc/ada/

* checks.adb (Apply_Predicate_Check): Generate "infinite
recursion" warning message even if run-time predicate checking
is disabled.
* exp_ch6.adb (Expand_Simple_Function_Return): In testing
whether the returned expression is a function call, look for the
case where the call has been transformed into a dereference of
an access value that designates the result of a function call.
* sem_ch3.adb (Analyze_Object_Declaration): Legality checking
for a static expression is unaffected by assertion policy (and,
in particular, enabling/disabling of subtype predicates.  To get
the right legality checking, we need to call
Check_Expression_Against_Static_Predicate for a static
expression even if predicate checking is disabled for the given
predicate-bearing subtype.  On the other hand, we don't want to
call Make_Predicate_Check unless predicate checking is enabled.
* sem_ch7.adb (Uninstall_Declarations.Preserve_Full_Attributes):
Preserve the Predicates_Ignored attribute.
* sem_eval.adb (Check_Expression_Against_Static_Predicate):
Previously callers ensured that this procedure was only called
if predicate checking was enabled; that is no longer the case,
so predicates-disabled case must be handled.
* sem_prag.adb (Analyze_Pragma): Fix bug in setting
Predicates_Ignored attribute in Predicate pragma case.

4 years ago[Ada] Crash on subtype of fixed-point type
Ed Schonberg [Wed, 24 Jun 2020 17:24:49 +0000 (13:24 -0400)]
[Ada] Crash on subtype of fixed-point type

gcc/ada/

* freeze.adb (Freeze_Fixed_Point_Type): Do not scale the bounds
of a declared subtype using the 'Small of the type;  this is
done during resolution of the bound itself, unlike what is done
for the bounds of the base type, which are used to determine its
required size. Previous code performed this scaling twice,
leading to meaningless values for such a subtype.

4 years ago[Ada] Fix access to uninitialized global variable when emitting error
Piotr Trojanek [Wed, 24 Jun 2020 17:18:19 +0000 (19:18 +0200)]
[Ada] Fix access to uninitialized global variable when emitting error

gcc/ada/

* sem_util.adb (Bad_Predicated_Subtype_Use): Emit an
unconditional error, not a conditional warning.

4 years ago[Ada] Cleanup defensive guards for Null_Exclusion_Present
Piotr Trojanek [Wed, 24 Jun 2020 08:25:23 +0000 (10:25 +0200)]
[Ada] Cleanup defensive guards for Null_Exclusion_Present

gcc/ada/

* sem_ch3.adb (Process_Subtype): Combine guards for
Null_Exclusion_Present in May_Have_Null_Exclusion; use this
combined guard when checking AI-231.

4 years ago[Ada] Bring defensive guard for Null_Exclusion_Present up to date
Piotr Trojanek [Wed, 24 Jun 2020 07:57:53 +0000 (09:57 +0200)]
[Ada] Bring defensive guard for Null_Exclusion_Present up to date

gcc/ada/

* sem_ch3.adb (Process_Subtype): Sync May_Have_Null_Exclusion
with assertion in Null_Exclusion_Present; clarify the scope of
local variables.

4 years ago[Ada] Explain predicate function not being inherited by index type
Piotr Trojanek [Tue, 23 Jun 2020 19:45:31 +0000 (21:45 +0200)]
[Ada] Explain predicate function not being inherited by index type

gcc/ada/

* sem_ch3.adb (Analyze_Subtype_Declaration): Fix style.
(Make_Index): Refactor to avoid repeated detection of subtype
indication; add comment.

4 years ago[Ada] Adjust style in support for CUDA_Execute pragma
Piotr Trojanek [Wed, 24 Jun 2020 07:30:10 +0000 (09:30 +0200)]
[Ada] Adjust style in support for CUDA_Execute pragma

gcc/ada/

* sem_prag.adb (Is_Acceptable_Dim3): Use Is_RTE to not pull CUDA
package unless necessary; rename local Tmp variable; iterate
with procedural Next.

4 years ago[Ada] Avoid unnecessary (re)assignments in Make_Info
Piotr Trojanek [Tue, 23 Jun 2020 17:50:18 +0000 (19:50 +0200)]
[Ada] Avoid unnecessary (re)assignments in Make_Info

gcc/ada/

* sem_ch3.adb (Array_Type_Declaration): Refine type of a local
variable.
(Make_Index): Simplify to avoid assignment with a type entity
and then backtracking by reassigning to Empty; remove excessive
whitespace.
* sem_ch9.adb (Analyze_Entry_Body): Remove extra parens.

4 years ago[Ada] Remove excessive defensive calls to Is_Type
Piotr Trojanek [Tue, 23 Jun 2020 15:40:22 +0000 (17:40 +0200)]
[Ada] Remove excessive defensive calls to Is_Type

gcc/ada/

* sem_ch3.adb (Access_Subprogram_Declaration): Remove extra
parens.
(Make_Index): Remove excessive calls to Is_Type.

4 years ago[Ada] Code cleanup
Arnaud Charlet [Tue, 23 Jun 2020 14:43:01 +0000 (10:43 -0400)]
[Ada] Code cleanup

gcc/ada/

* sem_util.adb (Enter_Name): Remove unnecessary conditions in
Enter_Name that come from the beginning of times.

4 years ago[Ada] Remove obsolete DSP comment
Bob Duff [Tue, 23 Jun 2020 15:38:40 +0000 (11:38 -0400)]
[Ada] Remove obsolete DSP comment

gcc/ada/

* exp_ch6.adb (Expand_Simple_Function_Return): Remove DSP part
of comment, and reformat.

4 years ago[Ada] Do not expand 'Initialized in codepeer mode
Boris Yakobowski [Tue, 23 Jun 2020 10:16:53 +0000 (12:16 +0200)]
[Ada] Do not expand 'Initialized in codepeer mode

gcc/ada/

* exp_attr.adb (Expand_N_Attribute_Reference): Do not expand
'Initialized in CodePeer mode.

4 years ago[Ada] Assert failure on incorrect code
Arnaud Charlet [Tue, 23 Jun 2020 07:56:34 +0000 (03:56 -0400)]
[Ada] Assert failure on incorrect code

gcc/ada/

* sem_ch12.adb (Reset_Entity): Protect against malformed tree.