Commit Graph

180398 Commits

Author SHA1 Message Date
Yannick Moy
fa366a96d0 [Ada] Clarify current design of Errout wrt global variable usage
gcc/ada/

	* errout.ads: Add comment regarding lack of preservation of
	Errout state across successive calls to the API.
2020-10-19 05:53:36 -04:00
Bob Duff
26349b6d9a [Ada] Ada2020: AI12-0304 Put_Image attrs of lang-def types
gcc/ada/

	* exp_put_image.adb (Build_Elementary_Put_Image_Call): Use the
	base type to recognize various cases of access types.
	* libgnat/a-cbdlli.adb, libgnat/a-cbdlli.ads, libgnat/a-cbhama.adb,
	libgnat/a-cbhama.ads, libgnat/a-cbhase.adb, libgnat/a-cbhase.ads,
	libgnat/a-cbmutr.adb, libgnat/a-cbmutr.ads, libgnat/a-cborma.adb,
	libgnat/a-cborma.ads, libgnat/a-cborse.adb, libgnat/a-cborse.ads,
	libgnat/a-cdlili.adb, libgnat/a-cdlili.ads, libgnat/a-cidlli.adb,
	libgnat/a-cidlli.ads, libgnat/a-cihama.adb, libgnat/a-cihama.ads,
	libgnat/a-cihase.adb, libgnat/a-cihase.ads, libgnat/a-cimutr.adb,
	libgnat/a-cimutr.ads, libgnat/a-ciorma.adb, libgnat/a-ciorma.ads,
	libgnat/a-ciormu.adb, libgnat/a-ciormu.ads, libgnat/a-ciorse.adb,
	libgnat/a-ciorse.ads, libgnat/a-coboho.adb, libgnat/a-coboho.ads,
	libgnat/a-cobove.adb, libgnat/a-cobove.ads, libgnat/a-cohama.adb,
	libgnat/a-cohama.ads, libgnat/a-cohase.adb, libgnat/a-cohase.ads,
	libgnat/a-coinho.adb, libgnat/a-coinho.ads,
	libgnat/a-coinho__shared.adb, libgnat/a-coinho__shared.ads,
	libgnat/a-coinve.adb, libgnat/a-coinve.ads, libgnat/a-comutr.adb,
	libgnat/a-comutr.ads, libgnat/a-coorma.adb, libgnat/a-coorma.ads,
	libgnat/a-coormu.adb, libgnat/a-coormu.ads, libgnat/a-coorse.adb,
	libgnat/a-coorse.ads, libgnat/a-strunb.adb, libgnat/a-strunb.ads,
	libgnat/a-strunb__shared.adb, libgnat/a-strunb__shared.ads:
	Implement Put_Image attibute.
	* libgnat/a-stteou.ads, libgnat/s-putima.ads,
	libgnat/a-stouut.ads, libgnat/a-stoubu.adb: Make
	Ada.Strings.Text_Output, Ada.Strings.Text_Output.Utils, and
	System.Put_Images Pure, so they can be with'ed by Pure units
	that should have Put_Image defined.
	* libgnat/a-stouut.adb: Add missing column adjustments, and
	remove a redundant one.
	* libgnat/s-putima.adb (Put_Arrow): New routine to print an
	arrow. Avoids adding a with clause to some containers.
2020-10-19 05:53:36 -04:00
Bob Duff
8c8b92dcc8 [Ada] Ada2020: matching parentheses and brackets
gcc/ada/

	* par-ch4.adb (P_Aggregate_Or_Paren_Expr): Require matching
	parens or brackets.
	* par.adb, par-tchk.adb (T_Right_Bracket): New procedure to give
	an error on missing ].
2020-10-19 05:53:36 -04:00
Javier Miranda
b9d685922c [Ada] Crash in expression function defined in protected object
gcc/ada/

	* sem_ch8.adb (Find_Direct_Name): Do not trust in the decoration
	of the Entity attribute in constants associated with
	discriminals of protected types.
2020-10-19 05:53:36 -04:00
Gary Dismukes
c95f21001d [Ada] AI12-0170: Abstract subprogram calls in class-wide precond exprs
gcc/ada/

	* sem_disp.adb (Check_Dispatching_Context): When the enclosing
	subprogram is abstract, bypass early return if the call is
	tag-indeterminate, to continue with the later error checking.
2020-10-19 05:53:35 -04:00
Javier Miranda
e40cb362d0 [Ada] Private type unexpectedly visible
gcc/ada/

	* sem_ch7.adb (Uninstall_Declarations): Uninstall the
	declaration of a subtype declaration defined in the private part
	of a package.
2020-10-19 05:53:35 -04:00
Arnaud Charlet
e335bd2e6e [Ada] Clean up support of square brackets
gcc/ada/

	* par-ch4.adb (P_Aggregate_Or_Paren_Expr): Simplify code since
	we are always under -gnatX if we encounter a Tok_Left_Bracket.
	* scng.adb (Scan): [] is an aggregate under -gnatX and a wide
	character otherwise.
2020-10-19 05:53:35 -04:00
Piotr Trojanek
52ad13baa5 [Ada] Remove useless initialization and refine type of a local variable
gcc/ada/

	* exp_ch6.adb (Expand_Call_Helper): Cleanup.
2020-10-19 05:53:34 -04:00
Piotr Trojanek
b0fa1c6806 [Ada] Refine type of a local variable
gcc/ada/

	* exp_ch6.adb (Is_Direct_Deep_Call): Refine type from Node_Id to
	Entity_Id.
2020-10-19 05:53:34 -04:00
Piotr Trojanek
5a36f3d9b8 [Ada] Simplify membership test for operators
gcc/ada/

	* exp_ch6.adb (May_Fold): Detect all operators, i.e. both binary
	and unary ones.
2020-10-19 05:53:34 -04:00
Piotr Trojanek
00bccdf048 [Ada] Simplify repeated calls with membership test
gcc/ada/

	* inline.adb (Expand_Inlined_Call): Simplify repeated calls to
	Nkind.
2020-10-19 05:53:34 -04:00
Aldy Hernandez
5b80069c7e Handle right shifts by zero in range-ops.
If the shift amount in operator_lshift::op1_range was zero, an invalid range
of [1, 0] was being created.

gcc/ChangeLog:

	PR tree-optimization/97467
	* range-op.cc (operator_lshift::op1_range): Handle shifts by 0.

gcc/testsuite/ChangeLog:

	* gcc.dg/pr97467.c: New test.
2020-10-19 11:37:15 +02:00
Richard Biener
95f27849a5 tree-optimization/97466 - remove spurious assert
This removes an assertion that was supposed to be only for temporary
debugging.  I've also re-indented the code which I missed as well.

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

	PR tree-optimization/97466
	* tree-vect-slp.c (vect_get_and_check_slp_defs): Remove
	spurious assert, re-indent.
2020-10-19 11:35:24 +02:00
guojiufu
222f312a77 [PATCH] fold x << (n % C) to x << (n & C-1) if C meets power2
This patch fixes PR66552 which is also as:
https://gcc.gnu.org/pipermail/gcc-patches/2020-February/540930.html
which requests to optimizes (x shift (n mod C)) to
(x shift (n bit_and (C - 1))) when C is a constant and power of two.

gcc/ChangeLog
2020-10-19  Li Jia He  <helijia@gcc.gnu.org>

	PR tree-optimization/66552
	* match.pd (x << (n % C) -> x << (n & C-1)): New simplification.

gcc/testsuite/ChangeLog
2020-10-19  Li Jia He  <helijia@gcc.gnu.org>

	PR tree-optimization/66552
	* gcc.dg/pr66552.c: New testcase.
2020-10-19 17:26:41 +08:00
Richard Biener
dccb0f8801 Simplify comparison GIMPLE IL verification
There's an old extra allowance for same-mode pointer comparison
for which I don't see any good reason today where the only special-case
of pointers in useless_type_conversion_p is that of function/method
pointers vs. non-function/method pointers.

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

	* tree-cfg.c (verify_gimple_comparison): Drop special-case
	for pointer comparison.
2020-10-19 10:44:11 +02:00
Martin Liska
04ffed2ef2 libsanitizer: Add recently added commit to LOCAL_PATCHES.
libsanitizer/ChangeLog:

	* LOCAL_PATCHES: Add one commit.
2020-10-19 09:05:34 +02:00
GCC Administrator
3acb91a48e Daily bump. 2020-10-19 00:16:22 +00:00
Alexandre Oliva
1e70b1a358 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.
2020-10-18 17:19:53 -03:00
Iain Sandoe
476036b35c 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.
2020-10-18 20:55:58 +01:00
Harald Anlauf
cd6cd6aed1 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.
2020-10-18 20:15:26 +02:00
GCC Administrator
019e1c85fe Daily bump. 2020-10-18 00:16:23 +00:00
David Edelsohn
cb6b952a22 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.
2020-10-17 17:07:19 -04:00
Ville Voutilainen
1f65bf2aa6 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.
2020-10-17 23:10:40 +03:00
David Edelsohn
f476a9fe91 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.
2020-10-16 20:27:41 -04:00
GCC Administrator
56e4eee935 Daily bump. 2020-10-17 00:16:29 +00:00
David Edelsohn
4e4d0f703d 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.
2020-10-16 20:11:26 -04:00
Harald Anlauf
02629b116e 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.
2020-10-16 22:17:46 +02:00
Andrew MacLeod
3e8d8f3b88 [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.
2020-10-16 15:13:24 -04:00
Andrew MacLeod
58492575a1 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.
2020-10-16 15:10:17 -04:00
Andrew MacLeod
aabc96c919 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.
2020-10-16 15:06:44 -04:00
Andrew MacLeod
4a135bd987 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.
2020-10-16 15:05:11 -04:00
Nathan Sidwell
ccb4f20cbe 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.
2020-10-16 10:22:16 -07:00
Nathan Sidwell
a16da48bf1 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.
2020-10-16 09:25:47 -07:00
Rasmus Villemoes
a6590686f7 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.
2020-10-16 16:16:17 +00:00
Rasmus Villemoes
e94d5836e5 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.
2020-10-16 16:14:52 +00:00
Rasmus Villemoes
0aeeda8fc2 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>.
2020-10-16 16:14:52 +00:00
Rasmus Villemoes
21295f44f3 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).
2020-10-16 16:14:52 +00:00
Rasmus Villemoes
4cde835fd7 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>
2020-10-16 16:14:52 +00:00
Olivier Hainque
2d23fd23bb 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.
2020-10-16 15:33:35 +00:00
Olivier Hainque
57dd4e7bb7 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).
2020-10-16 15:33:35 +00:00
Srinath Parvathaneni
90042c43a9 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.
2020-10-16 14:53:40 +01:00
Richard Biener
6c6e0cafa3 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.
2020-10-16 13:44:37 +02:00
Srinath Parvathaneni
3775358811 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.
2020-10-16 11:40:31 +01:00
Jan Hubicka
e27c8cc931 Fix modref-4.c testcase
PR testsuite/97426
	* gcc.dg/tree-ssa/modref-4.c: Fix return test.
2020-10-16 12:24:16 +02:00
Martin Liska
9791b4bb4b libsanitizer: update locale patches
libsanitizer/ChangeLog:

	* LOCAL_PATCHES: Update revision.
2020-10-16 10:58:03 +02:00
Martin Liska
b040b1ce1f Reapply all revisions mentioned in LOCAL_PATCHES.
(cherry picked from commit 21bb1625bd)
2020-10-16 10:57:16 +02:00
Martin Liska
0b997f6e07 libsanitizer: merge from master 2020-10-16 10:57:03 +02:00
Kito Cheng
4a70aa7a62 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.
2020-10-16 16:52:13 +08:00
Richard Biener
540d5f4f02 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.
2020-10-16 10:24:17 +02:00
Martin Liska
a866239027 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.
2020-10-16 09:42:40 +02:00