Commit Graph

173771 Commits

Author SHA1 Message Date
Ayush Mittal
2c8297996a 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
2019-12-31 11:34:34 +01:00
Richard Sandiford
e3969868d6 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
2019-12-31 08:28:24 +00:00
GCC Administrator
657ccd4d5b Daily bump.
From-SVN: r279801
2019-12-31 00:16:37 +00:00
Olivier Hainque
8c3dbddbe6 Add ChangeLog entry for rev 279797
From-SVN: r279798
2019-12-30 22:46:25 +00:00
Olivier Hainque
5d8ccdc9a4 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
2019-12-30 22:42:02 +00:00
Corentin Gay
784daa979b VxWorks has_nanosleep for libstdc++ enable-libstdcxx-time auto
2019-12-30  Corentin Gay  <gay@adacore.com>

	* acinclude.m4 (vxworks*): New entry. Set ac_has_nanosleep=yes.
	* configure: Regenerate.

From-SVN: r279796
2019-12-30 22:36:14 +00:00
Olivier Hainque
1cf49e515c Prevent redefinition of WCHAR_MAX from testsuite/gcc.dg/cpp/ucs.c
gcc/testsuite/gcc.dg/cpp/ucs.c #include <limits.h>
and then crafts a definition of WCHAR_MAX depending
on __WCHAR_TYPE__.

The test fails in VxWorks configurations because WCHAR_MAX
is already exposed by the system limits.h.

The patch simply guards the tentative definition
by a check verifying if the macro is defined already, so
we're using the value exposed by limits.h in this case.

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

	* testsuite/gcc.dg/cpp/ucs.c: Prevent redefinition
	of WCHAR_MAX if already exposed by limits.h.

From-SVN: r279795
2019-12-30 22:31:37 +00:00
Olivier Hainque
8ee81b4d27 allow $ in scan-tree-dump expressions matching symbol names
This change adjusts a few scan-tree-dump expressions
to allow '$' as well as '.' when matching symbol names,

This improves results on VxWorks targets configured with:

 #undef NO_DOLLAR_IN_LABEL
 #define NO_DOT_IN_LABEL

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

	* c-c++-common/pr56493.c: Allow '$' in addition to '.'
	scan-tree-dump expressions matching symbol names.
	* gcc.dg/tree-ssa/sra-17.c: Likewise.
	* gcc.dg/tree-ssa/sra-18.c: Likewise.

Co-Authored-By: Jerome Lambourg <lambourg@adacore.com>

From-SVN: r279794
2019-12-30 22:28:18 +00:00
Joel Brobecker
2f7f96b166 Guard aarch64/aapcs64 tests using abitest.S by check_weak_available
2019-12-16  Joel Brobecker  <brobecker@adacore.com>
           Olivier Hainque  <hainque@adacore.com>

	* gcc.target/aarch64/aapcs64/aapcs64.exp: Guard tests using
	abitest.S by check_weak_available.

Co-Authored-By: Olivier Hainque <hainque@adacore.com>

From-SVN: r279793
2019-12-30 22:26:29 +00:00
Jerome Lambourg
c75e82cd60 Adapt libstdc++ os_defines for VxWorks to more recent versions
This change reworks the VxWorks specific os_defines.h internal
lisbstdc++ header to help fix build and runtime failures of various
kinds in environments from 6.4/6.9 to 7 SR640, based on experiments
and observations conducted against real installs of these OSes for
different CPU architectures.

2019-12-30  Jerome Lambourg  <lambourg@adacore.com>
           Olivier Hainque  <hainque@adacore.com>

	libstdc++
	* config/os/vxworks/os_defines.h
	(NOMINMAX): Always redefine to 1.
	(_NO_CPP_INLINES): Likewise.
	(_GLIBCXX_USE_WEAK_REF): Define to 1 for RTP on
	VxWorks >= 7, to 0 otherwise.
	(_GLIBCXX_HAVE_TLS): Define to 1.
	For VxWorks >= 7:
	(_GLIBCXX_USE_C99_MATH): Define to 1.
	(_GLIBCXX_USE_C99_MATH_FP_MACROS_DYNAMIC): Define to 0.
	(_HAS_TR1_DECLARATIONS): Redefine to 0.
	For VxWorks < 7, RTP:
	(_GLIBCXX_INCLUDE_NEXT_C_HEADERS): Define to 1.
	(_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC): Redefine to 1.
	(__CORRECT_ISO_CPP11_MATH_H_PROTO_FP): Define.
	For VxWorks < 7, kernel: #include <vxWorks.h>

Co-Authored-By: Olivier Hainque <hainque@adacore.com>

From-SVN: r279792
2019-12-30 22:22:34 +00:00
Olivier Hainque
bbbc05957e Arrange to preinclude yvals.h ahead of stdint on VxWorks 7
On Vxworks 7, includers of stdint.h (which we currently "provide")
need yvals.h to have been included ahead.

Instead of altering the common stdint-gcc.h with unpleasant
vxworks specific bits to do that, we arrange to provide stdint-gcc.h
on its own along with a stdint.h wrapper which preincludes yvals.h
on vx7 then includes stdint-gcc.h.

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

	* config/vxworks/stdint.h: New file.  Include _yvals.h
	then stdint-gcc.h.
	* config/t-vxworks: Arrange to install the stdint.h wrapper.
	* config.gcc (*-*-vxworks*): Add stdint-gcc.h to $extra_headers
	so it gets copied.  Set use_gcc_stdint to request _not_ crafting
	stdint.h through the common Makefile rules.

From-SVN: r279791
2019-12-30 22:16:37 +00:00
Olivier Hainque
9905fec4d9 Add missing file expected with rev 279781
* config/vxworks-c.c: New file.

From-SVN: r279790
2019-12-30 22:09:26 +00:00
Joseph Myers
c1a75e9b74 * fi.po: Update.
From-SVN: r279788
2019-12-30 22:08:39 +00:00
Olivier Hainque
1d28a854b0 Add missing files expected with rev 279784
* config/vxworks/_yvals.h: New file.
	* config/vxworks/_yvals-wrapper.h: New file.
	* config/vxworks/math.h: Use it to wrap the VxWorks
	math.h header.
	* config/vxworks/complex.h: Likewise.
	* config/vxworks/setjmp.h: Likewise.
	* config/vxworks/inttypes.h: Likewise.

From-SVN: r279787
2019-12-30 21:55:47 +00:00
Olivier Hainque
f5109bbfc5 Add missing file expected with rev 279783
* config/vxworks/_vxworks-versions.h: New File.

From-SVN: r279786
2019-12-30 21:55:39 +00:00
Olivier Hainque
ca405dbcde Add missing file expected with rev 279781
From-SVN: r279785
2019-12-30 21:50:40 +00:00
Olivier Hainque
41c1b91344 Setup system header wrappers for C++ on VxWorks
Starting from VxWorks 7, the system comes with a Dinkumware
environment which requires the inclusion of "yvals.h" before other
system headers.  We provide wrapped versions of a few headers to
accommodate such constraints.

2019-12-30  Jerome Lambourg  <lambourg@adaccore.com>
            Olivier Hainque  <hainque@adacore.com>

	gcc/
	* config/vxworks/_yvals.h: New file.
	* config/vxworks/_yvals-wrapper.h: New file.
	* gcc/config/vxworks/math.h: Use it to wrap the VxWorks
	math.h header.
	* gcc/config/vxworks/complex.h: Likewise.
	* gcc/config/vxworks/setjmp.h: Likewise.
	* gcc/config/vxworks/inttypes.h: Likewise.
	* config.gcc (*-*-vxworks*): Add system header wrappers
	to extra_headers.
	(powerpc-*-vxworks*): Reuse the common extra_headers.

From-SVN: r279784
2019-12-30 21:46:21 +00:00
Olivier Hainque
abb6c3eecf Introduce an internal API for VxWorks version checks
This changes introduces an internal API for VxWorks version checks
within runtime files, a prerequisite to a few fixes coming up for libstdc++
builds on more recent versions of the OS.

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

	gcc/
	* config/vxworks/_vxworks-versions.h: New file.
	* config.gcc (*-*-vxworks*): Add it to extra_headers.

	libgcc/
	* config/gthr-vxworks.h: Use _vxworks-versions.h.
	* config/gthr-vxworks-tls.c: Likewise.

From-SVN: r279783
2019-12-30 21:42:26 +00:00
Olivier Hainque
c62f986a37 Simplify the compilation commands for config/vxworks.c
2019-12-30  Olivier Hainque  <hainque@adacore.com>

	* config/t-vxworks: Rework the vxworks.o compilation
	rules to use $(COMPILE).

From-SVN: r279782
2019-12-30 21:39:15 +00:00
Joel Brobecker
b3405ddc5d Setup TARGET_C_PREINCLUDE for VxWorks
This patch modifies the C & C++ VxWorks compiler to predefine
the __STDC_ macros verified by gcc.dg/c99-predef-1.c in the testsuite.

2019-12-13  Joel Brobecker  <brobecker@adacore.com>

	* config.gcc <*-*-vxworks*>: Add vxworks-c.o to c_target_objs
	and cxx_target_objs. Set target_has_targetcm to "yes". Add
	vxworks-predef.h to extra_headers.
	* config/t-vxworks (vxworks-c.o): New target.
	* config/vxworks-c.c: New file.
	* config/vxworks/vxworks-predef.h: New file.

From-SVN: r279781
2019-12-30 21:36:34 +00:00
Alexandre Oliva
1361ae0e76 Refine definitions for wchar_t/wint_t on VxWorks
This change refines the VxWorks macro definitions configuring
wchar_t to accommodate the VxWorks7 environment, where wchar_t
is now typically a 32bit type.

We also ensure that the definitions for wint_t are always based
on those for wchar_t, so the two remain in sync in environments
where WCHAR_TYPE is redefined for a specific CPU architecture.

2019-12-30  Alexandre Oliva  <oliva@adacore.com>
           Olivier Hainque  <hainque@adacore.com>

	* config/vx-common.h (WCHAR_TYPE_SIZE): 32 on VxWorks 7.
	(WCHAR_TYPE): Pick accordingly.
	(WINT_TYPE_SIZE): Define in terms of WCHAR_TYPE_SIZE.
	(WINT_TYPE): Define in terms of WCHAR_TYPE.

Co-Authored-By: Olivier Hainque <hainque@adacore.com>

From-SVN: r279780
2019-12-30 21:34:35 +00:00
Olivier Hainque
4e6bcaa662 Identify sections in vx-common.h
2019-12-30  Olivier Hainque  <hainque@adacore.com>

        * config/vx-common.h: Minor reorganization and add
        sectioning comments.

From-SVN: r279779
2019-12-30 21:31:18 +00:00
Doug Rupp
bd8efb667b Define STARTFILE_PREFIX_SPEC for powerpc VxWorks < 7
2019-12-30  Doug Rupp  <rupp@adacore.com>

	* config/rs6000/vxworks.h (STARTFILE_PREFIX_SPEC): Define.

From-SVN: r279778
2019-12-30 21:28:50 +00:00
Olivier Hainque
7800631f7c Improve recursion protection for VxWorks limits.h
2019-12-30  Olivier Hainque  <hainque@adacore.com>
            Jerome Lambourg  <labourg@adacore.com>

   	* config/t-vxworks: Arrange to alter/restore glimits.h
   	before/after stmp-int-hdrs, so it uses a different macro
   	name to protect itself against recursive inclusions.

Co-Authored-By: Jerome Lambourg <lambourg@adacore.com>

From-SVN: r279777
2019-12-30 21:26:08 +00:00
Olivier Hainque
d7f5094aa3 Improve VxWorks GTHREAD_ONCE_INIT
2019-12-30  Olivier Hainque  <hainque@adacore.com>

	* config/gthr-vxworks.h (GTHREAD_ONCE_INIT): Use
	standard zero-initializer syntax.

From-SVN: r279776
2019-12-30 21:22:21 +00:00
Olivier Hainque
49cfaa2a71 Fix macro reference in gthr-vxworks-tls.c
2019-12-30  Olivier Hainque  <hainque@adacore.com>

	libgcc/
	* config/gthr-vxworks-tls.c (__gthread_getspecific): Fix
	reference to the internal VX_GET_TLS_DATA interface.

From-SVN: r279775
2019-12-30 21:14:35 +00:00
Olivier Hainque
89b9a55472 Fix typo in macro name guarding conditional in vxcrtstuff.c
2019-12-30  Olivier Hainque  <hainque@adacore.com>

	libgcc/
	* config/vxcrtstuff.c: Fix incorrect spelling of
	USE_INITFINI_ARRAY in guard.

From-SVN: r279774
2019-12-30 21:11:22 +00:00
John David Anglin
5ee5eddb26 re PR libgomp/93066 (libgomp/target.c:525:46: error: expected expression before ')' token)
PR libgomp/93066
	* inclhack.def (hpux_c99_inttypes3): Fix defines for INTPTR_MAX
	and UINTPTR_MAX, and missing define for SIZE_MAX.
	* fixincl.x: Regenerate.
	* tests/base/inttypes.h: Update for above fix.

From-SVN: r279773
2019-12-30 20:33:17 +00:00
Peter Bergner
4559be2358 Fix builtin functions needlessly using VIEW_CONVERT_EXPRs on their operands.
gcc/
	PR target/92923
	* config/rs6000/rs6000-builtin.def (VAND, VANDC, VNOR, VOR, VXOR):
	Delete.
	(EQV_V16QI_UNS, EQV_V8HI_UNS, EQV_V4SI_UNS, EQV_V2DI_UNS, EQV_V1TI_UNS,
	NAND_V16QI_UNS, NAND_V8HI_UNS, NAND_V4SI_UNS, NAND_V2DI_UNS,
	NAND_V1TI_UNS, ORC_V16QI_UNS, ORC_V8HI_UNS, ORC_V4SI_UNS, ORC_V2DI_UNS,
	ORC_V1TI_UNS, VAND_V16QI_UNS, VAND_V16QI, VAND_V8HI_UNS, VAND_V8HI,
	VAND_V4SI_UNS, VAND_V4SI, VAND_V2DI_UNS, VAND_V2DI, VAND_V4SF,
	VAND_V2DF, VANDC_V16QI_UNS, VANDC_V16QI, VANDC_V8HI_UNS, VANDC_V8HI,
	VANDC_V4SI_UNS, VANDC_V4SI, VANDC_V2DI_UNS, VANDC_V2DI, VANDC_V4SF,
	VANDC_V2DF, VNOR_V16QI_UNS, VNOR_V16QI, VNOR_V8HI_UNS, VNOR_V8HI,
	VNOR_V4SI_UNS, VNOR_V4SI, VNOR_V2DI_UNS, VNOR_V2DI, VNOR_V4SF,
	VNOR_V2DF, VOR_V16QI_UNS, VOR_V16QI, VOR_V8HI_UNS, VOR_V8HI,
	VOR_V4SI_UNS, VOR_V4SI, VOR_V2DI_UNS, VOR_V2DI, VOR_V4SF, VOR_V2DF,
	VXOR_V16QI_UNS, VXOR_V16QI, VXOR_V8HI_UNS, VXOR_V8HI,
	VXOR_V4SI_UNS, VXOR_V4SI, VXOR_V2DI_UNS, VXOR_V2DI, VXOR_V4SF,
	VXOR_V2DF): Add definitions.
	* config/rs6000/rs6000-call.c (altivec_overloaded_builtins)
	<ALTIVEC_BUILTIN_VAND, ALTIVEC_BUILTIN_VANDC, ALTIVEC_BUILTIN_VNOR,
	ALTIVEC_BUILTIN_VOR, ALTIVEC_BUILTIN_VXOR>: Remove.
	<ALTIVEC_BUILTIN_VAND_V4SF, ALTIVEC_BUILTIN_VAND_V2DF,
	ALTIVEC_BUILTIN_VAND_V2DI, ALTIVEC_BUILTIN_VAND_V2DI_UNS,
	ALTIVEC_BUILTIN_VAND_V4SI_UNS, ALTIVEC_BUILTIN_VAND_V4SI,
	ALTIVEC_BUILTIN_VAND_V8HI_UNS, ALTIVEC_BUILTIN_VAND_V8HI,
	ALTIVEC_BUILTIN_VAND_V16QI, ALTIVEC_BUILTIN_VAND_V16QI_UNS,
	ALTIVEC_BUILTIN_VANDC_V4SF, ALTIVEC_BUILTIN_VANDC_V2DF,
	ALTIVEC_BUILTIN_VANDC_V2DI, ALTIVEC_BUILTIN_VANDC_V2DI_UNS,
	ALTIVEC_BUILTIN_VANDC_V4SI_UNS, ALTIVEC_BUILTIN_VANDC_V4SI,
	ALTIVEC_BUILTIN_VANDC_V8HI_UNS, ALTIVEC_BUILTIN_VANDC_V8HI,
	ALTIVEC_BUILTIN_VANDC_V16QI, ALTIVEC_BUILTIN_VANDC_V16QI_UNS,
	ALTIVEC_BUILTIN_VNOR_V4SF, ALTIVEC_BUILTIN_VNOR_V2DF,
	ALTIVEC_BUILTIN_VNOR_V2DI, ALTIVEC_BUILTIN_VNOR_V2DI_UNS,
	ALTIVEC_BUILTIN_VNOR_V4SI, ALTIVEC_BUILTIN_VNOR_V4SI_UNS,
	ALTIVEC_BUILTIN_VNOR_V8HI, ALTIVEC_BUILTIN_VNOR_V8HI_UNS,
	ALTIVEC_BUILTIN_VNOR_V16QI, ALTIVEC_BUILTIN_VNOR_V16QI_UNS,
	ALTIVEC_BUILTIN_VOR_V4SF, ALTIVEC_BUILTIN_VOR_V2DF,
	ALTIVEC_BUILTIN_VOR_V2DI, ALTIVEC_BUILTIN_VOR_V2DI_UNS,
	ALTIVEC_BUILTIN_VOR_V4SI_UNS, ALTIVEC_BUILTIN_VOR_V4SI,
	ALTIVEC_BUILTIN_VOR_V8HI_UNS, ALTIVEC_BUILTIN_VOR_V8HI,
	ALTIVEC_BUILTIN_VOR_V16QI, ALTIVEC_BUILTIN_VOR_V16QI_UNS,
	ALTIVEC_BUILTIN_VXOR_V4SF, ALTIVEC_BUILTIN_VXOR_V2DF,
	ALTIVEC_BUILTIN_VXOR_V2DI, ALTIVEC_BUILTIN_VXOR_V2DI_UNS,
	ALTIVEC_BUILTIN_VXOR_V4SI_UNS, ALTIVEC_BUILTIN_VXOR_V4SI,
	ALTIVEC_BUILTIN_VXOR_V8HI, ALTIVEC_BUILTIN_VXOR_V8HI_UNS,
	ALTIVEC_BUILTIN_VXOR_V16QI, ALTIVEC_BUILTIN_VXOR_V16QI_UNS>: Add
	definitions.
	<P8V_BUILTIN_EQV_V16QI, P8V_BUILTIN_EQV_V8HI, P8V_BUILTIN_EQV_V4SI,
	P8V_BUILTIN_EQV_V2DI, P8V_BUILTIN_NAND_V16QI, P8V_BUILTIN_NAND_V8HI,
	P8V_BUILTIN_NAND_V4SI, P8V_BUILTIN_NAND_V2DI, P8V_BUILTIN_ORC_V16QI,
	P8V_BUILTIN_ORC_V8HI, P8V_BUILTIN_ORC_V4SI,
	P8V_BUILTIN_ORC_V2DI>: Change unsigned usages to use the new *_UNS
	definition names.
	(rs6000_gimple_fold_builtin) <ALTIVEC_BUILTIN_VAND_V16QI_UNS,
	ALTIVEC_BUILTIN_VAND_V16QI, ALTIVEC_BUILTIN_VAND_V8HI_UNS,
	ALTIVEC_BUILTIN_VAND_V8HI, ALTIVEC_BUILTIN_VAND_V4SI_UNS,
	ALTIVEC_BUILTIN_VAND_V4SI, ALTIVEC_BUILTIN_VAND_V2DI_UNS,
	ALTIVEC_BUILTIN_VAND_V2DI, ALTIVEC_BUILTIN_VAND_V4SF,
	ALTIVEC_BUILTIN_VAND_V2DF, ALTIVEC_BUILTIN_VANDC_V16QI_UNS,
	ALTIVEC_BUILTIN_VANDC_V16QI, ALTIVEC_BUILTIN_VANDC_V8HI_UNS,
	ALTIVEC_BUILTIN_VANDC_V8HI, ALTIVEC_BUILTIN_VANDC_V4SI_UNS,
	ALTIVEC_BUILTIN_VANDC_V4SI, ALTIVEC_BUILTIN_VANDC_V2DI_UNS,
	ALTIVEC_BUILTIN_VANDC_V2DI, ALTIVEC_BUILTIN_VANDC_V4SF,
	ALTIVEC_BUILTIN_VANDC_V2DF, P8V_BUILTIN_NAND_V16QI_UNS,
	P8V_BUILTIN_NAND_V8HI_UNS, P8V_BUILTIN_NAND_V4SI_UNS,
	P8V_BUILTIN_NAND_V2DI_UNS, P8V_BUILTIN_NAND_V2DI,
	ALTIVEC_BUILTIN_VOR_V16QI_UNS, ALTIVEC_BUILTIN_VOR_V16QI,
	ALTIVEC_BUILTIN_VOR_V8HI_UNS, ALTIVEC_BUILTIN_VOR_V8HI,
	ALTIVEC_BUILTIN_VOR_V4SI_UNS, ALTIVEC_BUILTIN_VOR_V4SI,
	ALTIVEC_BUILTIN_VOR_V2DI_UNS, ALTIVEC_BUILTIN_VOR_V2DI,
	ALTIVEC_BUILTIN_VOR_V4SF, ALTIVEC_BUILTIN_VOR_V2DF,
	P8V_BUILTIN_ORC_V16QI_UNS, P8V_BUILTIN_ORC_V8HI_UNS,
	P8V_BUILTIN_ORC_V4SI_UNS, P8V_BUILTIN_ORC_V2DI_UNS,
	P8V_BUILTIN_ORC_V2DI, ALTIVEC_BUILTIN_VXOR_V16QI_UNS,
	ALTIVEC_BUILTIN_VXOR_V16QI, ALTIVEC_BUILTIN_VXOR_V8HI_UNS,
	ALTIVEC_BUILTIN_VXOR_V8HI, ALTIVEC_BUILTIN_VXOR_V4SI_UNS,
	ALTIVEC_BUILTIN_VXOR_V4SI, ALTIVEC_BUILTIN_VXOR_V2DI_UNS,
	ALTIVEC_BUILTIN_VXOR_V2DI, ALTIVEC_BUILTIN_VXOR_V4SF,
	ALTIVEC_BUILTIN_VXOR_V2DF, ALTIVEC_BUILTIN_VNOR_V16QI_UNS,
	ALTIVEC_BUILTIN_VNOR_V16QI, ALTIVEC_BUILTIN_VNOR_V8HI_UNS,
	ALTIVEC_BUILTIN_VNOR_V8HI, ALTIVEC_BUILTIN_VNOR_V4SI_UNS,
	ALTIVEC_BUILTIN_VNOR_V4SI, ALTIVEC_BUILTIN_VNOR_V2DI_UNS,
	ALTIVEC_BUILTIN_VNOR_V2DI, ALTIVEC_BUILTIN_VNOR_V4SF,
	ALTIVEC_BUILTIN_VNOR_V2DF>: Use new definition names.
	(builtin_function_type) <ALTIVEC_BUILTIN_VAND_V16QI_UNS,
	ALTIVEC_BUILTIN_VAND_V8HI_UNS, ALTIVEC_BUILTIN_VAND_V4SI_UNS,
	ALTIVEC_BUILTIN_VAND_V2DI_UNS, ALTIVEC_BUILTIN_VANDC_V16QI_UNS,
	ALTIVEC_BUILTIN_VANDC_V8HI_UNS, ALTIVEC_BUILTIN_VANDC_V4SI_UNS,
	ALTIVEC_BUILTIN_VANDC_V2DI_UNS, ALTIVEC_BUILTIN_VNOR_V16QI_UNS,
	ALTIVEC_BUILTIN_VNOR_V8HI_UNS, ALTIVEC_BUILTIN_VNOR_V4SI_UNS,
	ALTIVEC_BUILTIN_VNOR_V2DI_UNS, ALTIVEC_BUILTIN_VOR_V16QI_UNS,
	ALTIVEC_BUILTIN_VOR_V8HI_UNS, ALTIVEC_BUILTIN_VOR_V4SI_UNS,
	ALTIVEC_BUILTIN_VOR_V2DI_UNS, ALTIVEC_BUILTIN_VXOR_V16QI_UNS,
	ALTIVEC_BUILTIN_VXOR_V8HI_UNS, ALTIVEC_BUILTIN_VXOR_V4SI_UNS,
	ALTIVEC_BUILTIN_VXOR_V2DI_UNS, P8V_BUILTIN_EQV_V16QI_UNS,
	P8V_BUILTIN_EQV_V8HI_UNS, P8V_BUILTIN_EQV_V4SI_UNS,
	P8V_BUILTIN_EQV_V2DI_UNS, P8V_BUILTIN_EQV_V1TI_UNS,
	P8V_BUILTIN_NAND_V16QI_UNS, P8V_BUILTIN_NAND_V8HI_UNS,
	P8V_BUILTIN_NAND_V4SI_UNS, P8V_BUILTIN_NAND_V2DI_UNS,
	P8V_BUILTIN_NAND_V1TI_UNS, P8V_BUILTIN_ORC_V16QI_UNS,
	P8V_BUILTIN_ORC_V8HI_UNS, P8V_BUILTIN_ORC_V4SI_UNS,
	P8V_BUILTIN_ORC_V2DI_UNS, P8V_BUILTIN_ORC_V1TI_UNS>: Handle unsigned
	builtins.

gcc/testsuite/
       PR target/92923
       * gcc.target/powerpc/pr92923-1.c: New test.
       * gcc.target/powerpc/pr92923-2.c: Likewise.

From-SVN: r279772
2019-12-30 14:23:25 -06:00
Marek Polacek
a565076268 Remove assert in reshape_init_r.
Asserting !BRACE_ENCLOSED_INITIALIZER_P seems pretty pointless, since
that checks for init_list_type_node, and a compound literal won't have
that type, nor will we see that type if we just checked that it's
something else.

	* decl.c (reshape_init_r): Remove assert.

From-SVN: r279771
2019-12-30 16:07:33 +00:00
Paolo Carlini
04e4997a56 decl2.c (delete_sanity): Add location_t parameter and use it throughout.
/gcc/cp
2019-12-30  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl2.c (delete_sanity): Add location_t parameter and use
	it throughout.
	* init.c (build_vec_delete_1): Likewise.
	(build_delete): Likewise.
	(build_vec_delete): Likewise.
	(perform_target_ctor): Adjust call.
	(perform_member_init): Likewise.
	(build_vec_init): Likewise.
	* decl.c (cxx_maybe_build_cleanup): Likewise.
	* pt.c (tsubst_copy_and_build): Likewise.
	* parser.c (cp_parser_delete_expression): Likewise, pass the
	combined_loc.
	* cp-tree.h: Update declarations.

/libcc1
2019-12-30  Paolo Carlini  <paolo.carlini@oracle.com>

	* libcp1plugin.cc (plugin_build_unary_expr): Update delete_sanity
	call.

/gcc/testsuite
2019-12-30  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.dg/init/delete1.C: Check locations too.
	* g++.dg/ipa/pr85607.C: Likewise.
	* g++.dg/warn/Wdelete-incomplete-1.C: Likewise.
	* g++.dg/warn/delete-non-virtual-dtor.C: Likewise.
	* g++.dg/warn/incomplete1.C: Likewise.

From-SVN: r279768
2019-12-30 13:23:40 +00:00
Thomas Koenig
9332e5acbf re PR fortran/91651 ([F03] Implement KIND argument for INDEX)
2019-12-30  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/91651
	* gfortran.dg/index_3.f90: Fix PR number.

From-SVN: r279766
2019-12-30 12:35:05 +00:00
Thomas Koenig
f1cc032cde re PR fortran/91651 ([F03] Implement KIND argument for INDEX)
2019-12-30  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/91651
	Fix PR numbers in ChangeLog.

From-SVN: r279765
2019-12-30 10:47:39 +00:00
Thomas Koenig
d09847357b Remove KIND argument from INDEX so it does not mess up scalarization.
2019-12-30  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/91541
	* intrinsic.c (add_sym_4ind): New function.
	(add_functions): Use it for INDEX.
	(resolve_intrinsic): Also call f1m for INDEX.
	* intrinsic.h (gfc_resolve_index_func): Adjust prototype to
	take a gfc_arglist instead of individual arguments.
	* iresolve.c (gfc_resolve_index_func): Adjust arguments.
	Remove KIND argument if present, and make sure this is
	not done twice.
	* trans-decl.c: Include "intrinsic.h".
	(gfc_get_extern_function_decl): Special case for resolving INDEX.

2019-12-30  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/91541
	* gfortran.dg/index_3.f90: New test.

From-SVN: r279763
2019-12-30 10:43:38 +00:00
Thomas Koenig
6725111873 Catch division by zero errors in array sizes.
2019-12-30  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/92961
	* gfortran.h (gfc_seen_div0): Add declaration.
	* arith.h (gfc_seen_div0): Add definition.
	(eval_intrinsic): For integer division by zero, set gfc_seen_div0.
	* decl.c (variable_decl):  If resolution resp. simplification
	fails for array spec and a division of zero error has been
	seen, return MATCH_ERROR.

2019-12-30  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/92961
	* gfortran.dg/arith_divide_2.f90: New test.

From-SVN: r279762
2019-12-30 10:34:11 +00:00
GCC Administrator
c3182576ea Daily bump.
From-SVN: r279761
2019-12-30 00:16:14 +00:00
Jakub Jelinek
769019d933 re PR c++/92745 (Initializing array with vec4 results in compile error)
PR c++/92745
	* g++.dg/cpp0x/initlist118.C: Add -Wno-psabi -w to dg-options.

From-SVN: r279758
2019-12-30 00:47:55 +01:00
Marek Polacek
22edf9431e PR c++/88337 - Implement P1327R1: Allow dynamic_cast in constexpr.
This patch implements
<http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1327r1.html>.

When build_dynamic_cast realizes that a dynamic_cast needs a run-time check, it
generates a call to __dynamic_cast -- see dyncast.cc in libsupc++ for its
definition.  The gist of my approach is to evaluate such a call at compile time.

	* constexpr.c (cxx_dynamic_cast_fn_p): New function.
	(extract_obj_from_addr_offset): New function.
	(get_component_with_type): New function.
	(cxx_eval_dynamic_cast_fn): New function.
	(cxx_eval_call_expression): Call cxx_eval_dynamic_cast_fn for a call
	to __dynamic_cast.
	(potential_constant_expression_1): Don't give up on
	cxx_dynamic_cast_fn_p.
	* rtti.c (build_dynamic_cast_1): When creating a call to
	__dynamic_cast, use the location of the original expression.

	* g++.dg/cpp2a/constexpr-dynamic1.C: New test.
	* g++.dg/cpp2a/constexpr-dynamic10.C: New test.
	* g++.dg/cpp2a/constexpr-dynamic11.C: New test.
	* g++.dg/cpp2a/constexpr-dynamic12.C: New test.
	* g++.dg/cpp2a/constexpr-dynamic13.C: New test.
	* g++.dg/cpp2a/constexpr-dynamic14.C: New test.
	* g++.dg/cpp2a/constexpr-dynamic15.C: New test.
	* g++.dg/cpp2a/constexpr-dynamic16.C: New test.
	* g++.dg/cpp2a/constexpr-dynamic17.C: New test.
	* g++.dg/cpp2a/constexpr-dynamic2.C: New test.
	* g++.dg/cpp2a/constexpr-dynamic3.C: New test.
	* g++.dg/cpp2a/constexpr-dynamic4.C: New test.
	* g++.dg/cpp2a/constexpr-dynamic5.C: New test.
	* g++.dg/cpp2a/constexpr-dynamic6.C: New test.
	* g++.dg/cpp2a/constexpr-dynamic7.C: New test.
	* g++.dg/cpp2a/constexpr-dynamic8.C: New test.
	* g++.dg/cpp2a/constexpr-dynamic9.C: New test.

From-SVN: r279755
2019-12-29 16:44:41 +00:00
Jakub Jelinek
6ec067548f re PR target/93078 (Missing fma and round functions auto-vectorization with x86-64 (sse2))
PR target/93078
	* config/i386/i386-builtins.c (ix86_builtin_vectorized_function):
	Remove CASE_CFN_RINT handling.
	* config/i386/i386-builtin.def (IX86_BUILTIN_RINTPD,
	IX86_BUILTIN_RINTPS, IX86_BUILTIN_RINTPD256, IX86_BUILTIN_RINTPS256):
	Remove.
	* config/i386/sse.md (nearbyint<mode>2, rint<mode>2): New expanders
	with VF iterator.

	* gcc.target/i386/sse4_1-pr93078.c: New test.
	* gcc.target/i386/avx-pr93078.c: New test.
	* gcc.target/i386/avx512f-pr93078.c: New test.

From-SVN: r279754
2019-12-29 12:03:25 +01:00
Richard Sandiford
f065751606 Unshare DR_STEP before gimplifying it
In this testcase we use an unmasked SVE loop with an Advanced SIMD
epilogue (because we don't yet support fully-masked downward loops).
The main loop uses a gather load for the strided access while the
epilogue loop builds the access from scalars instead.  In both cases
we gimplify expressions based on the DR_STEP and insert them in the
loop preheader.

The problem was that the gather load code didn't copy the DR_STEP before
gimplifying it, meaning that the epilogue loop tried to reuse a result
from the (non-dominating) main loop preheader.

It looks at first glance like there could be other instances of this too,
but this patch just deals with the gather/scatter case.

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

gcc/
	* tree-vect-stmts.c (vect_get_strided_load_store_ops): Copy
	DR_STEP before gimplifying it.

gcc/testsuite/
	* gcc.dg/vect/vect-strided-epilogue-1.c: New test.

From-SVN: r279753
2019-12-29 09:28:34 +00:00
Richard Sandiford
4bbd661e99 Check for a supported comparison when using EXTRACT_LAST_REDUCTION
The EXTRACT_LAST_REDUCTION handling needs to generate a separate
comparison instruction that feeds the vector mask argument of the
IFN_EXTRACT_LAST call.  We weren't checking whether that comparison
was supported, leading to an ICE on the testcase.

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

gcc/
	* tree-vect-stmts.c (vectorizable_condition): For extract-last
	reductions, check that the target supports the required comparison
	operation.

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

From-SVN: r279752
2019-12-29 09:27:43 +00:00
GCC Administrator
ba2bf6feb8 Daily bump.
From-SVN: r279751
2019-12-29 00:16:51 +00:00
Jakub Jelinek
e9dcb75e40 re PR bootstrap/93074 (build FAIL with --enable-offload-targets=nvptx-none)
PR bootstrap/93074
	* plugin/cuda/cuda.h (cuDeviceGetName, cuDriverGetVersion): Declare.
	(cuDeviceTotalMem, cuMemGetInfo): Likewise.  Define to *_v2.

From-SVN: r279747
2019-12-28 10:26:03 +01:00
GCC Administrator
aec6cd6a2a Daily bump.
From-SVN: r279746
2019-12-28 00:16:32 +00:00
Richard Sandiford
3261d8ba59 [AArch64] Fix typo in V_INT_CONTAINER
All VNx2 V_INT_CONTAINER entries should map to VNx2DI.  The lower-case
version was already correct.

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

gcc/
	* config/aarch64/iterators.md (V_INT_CONTAINER): Fix VNx2SF entry.

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

From-SVN: r279743
2019-12-27 16:55:36 +00:00
Richard Sandiford
cd8aa0d1a5 Add missing target check for fully-masked fold-left reductions
The fold-left reduction code has a (rarely-used) fallback that handles
cases in which the loop is fully-masked and the target has no native
support for the reduction.  The fallback includea a VEC_COND_EXPR
between the reduction vector and a safe value, so we should check
whether that VEC_COND_EXPR is supported.

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

gcc/
	* tree-vect-loop.c (vectorizable_reduction): Check whether the
	target supports the required VEC_COND_EXPR operation before
	allowing the fallback handling of masked fold-left reductions.

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

From-SVN: r279742
2019-12-27 16:54:54 +00:00
GCC Administrator
049e64f8f1 Daily bump.
From-SVN: r279739
2019-12-27 00:16:34 +00:00
Jakub Jelinek
7cd268ad6a re PR c++/92438 (Function declaration parsed incorrectly with -std=c++1z)
PR c++/92438
	* parser.c (cp_parser_constructor_declarator_p): If open paren
	is followed by RID_ATTRIBUTE, skip over the attribute tokens and
	try to parse type specifier.

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

From-SVN: r279736
2019-12-26 11:16:01 +01:00
GCC Administrator
ae2bb2a643 Daily bump.
From-SVN: r279735
2019-12-26 00:16:42 +00:00
Alexandre Oliva
85129ff10a Define HAVE_ for math long double functions declared in vxworks headers
When cross-building for vxworks, test for declarations of long double
functions in math.h.  We don't normally test for these functions when
cross compiling, because link tests don't work, or ever really, but
not defining them as available causes replacements to be defined in
ways that may cause duplicate definition linker errors if the units
defining both the replacement and the actual implementation are
brought in because of other symbols.


for libstdc++-v3/ChangeLog

	* crossconfig.m4 (GLIBCXX_CROSSCONFIG) [*-vxworks*]: Define
	long double functions as available if declared by math.h.
	(GLIBCXX_CHECK_MATH_DECL, GLIBCXX_CHECK_MATH_DECLS): New.
	* configure: Rebuild.

From-SVN: r279731
2019-12-25 06:43:22 +00:00