gcc.git
4 years agoPrevent redefinition of WCHAR_MAX from testsuite/gcc.dg/cpp/ucs.c
Olivier Hainque [Mon, 30 Dec 2019 22:31:37 +0000 (22:31 +0000)]
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

4 years agoallow $ in scan-tree-dump expressions matching symbol names
Olivier Hainque [Mon, 30 Dec 2019 22:28:18 +0000 (22:28 +0000)]
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

4 years agoGuard aarch64/aapcs64 tests using abitest.S by check_weak_available
Joel Brobecker [Mon, 30 Dec 2019 22:26:29 +0000 (22:26 +0000)]
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

4 years agoAdapt libstdc++ os_defines for VxWorks to more recent versions
Jerome Lambourg [Mon, 30 Dec 2019 22:22:34 +0000 (22:22 +0000)]
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

4 years agoArrange to preinclude yvals.h ahead of stdint on VxWorks 7
Olivier Hainque [Mon, 30 Dec 2019 22:16:37 +0000 (22:16 +0000)]
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

4 years agoAdd missing file expected with rev 279781
Olivier Hainque [Mon, 30 Dec 2019 22:09:26 +0000 (22:09 +0000)]
Add missing file expected with rev 279781

            * config/vxworks-c.c: New file.

From-SVN: r279790

4 years ago* fi.po: Update.
Joseph Myers [Mon, 30 Dec 2019 22:08:39 +0000 (22:08 +0000)]
* fi.po: Update.

From-SVN: r279788

4 years agoAdd missing files expected with rev 279784
Olivier Hainque [Mon, 30 Dec 2019 21:55:47 +0000 (21:55 +0000)]
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

4 years agoAdd missing file expected with rev 279783
Olivier Hainque [Mon, 30 Dec 2019 21:55:39 +0000 (21:55 +0000)]
Add missing file expected with rev 279783

* config/vxworks/_vxworks-versions.h: New File.

From-SVN: r279786

4 years agoAdd missing file expected with rev 279781
Olivier Hainque [Mon, 30 Dec 2019 21:50:40 +0000 (21:50 +0000)]
Add missing file expected with rev 279781

From-SVN: r279785

4 years agoSetup system header wrappers for C++ on VxWorks
Olivier Hainque [Mon, 30 Dec 2019 21:46:21 +0000 (21:46 +0000)]
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

4 years agoIntroduce an internal API for VxWorks version checks
Olivier Hainque [Mon, 30 Dec 2019 21:42:26 +0000 (21:42 +0000)]
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

4 years agoSimplify the compilation commands for config/vxworks.c
Olivier Hainque [Mon, 30 Dec 2019 21:39:15 +0000 (21:39 +0000)]
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

4 years agoSetup TARGET_C_PREINCLUDE for VxWorks
Joel Brobecker [Mon, 30 Dec 2019 21:36:34 +0000 (21:36 +0000)]
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

4 years agoRefine definitions for wchar_t/wint_t on VxWorks
Alexandre Oliva [Mon, 30 Dec 2019 21:34:35 +0000 (21:34 +0000)]
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

4 years agoIdentify sections in vx-common.h
Olivier Hainque [Mon, 30 Dec 2019 21:31:18 +0000 (21:31 +0000)]
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

4 years agoDefine STARTFILE_PREFIX_SPEC for powerpc VxWorks < 7
Doug Rupp [Mon, 30 Dec 2019 21:28:50 +0000 (21:28 +0000)]
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

4 years agoImprove recursion protection for VxWorks limits.h
Olivier Hainque [Mon, 30 Dec 2019 21:26:08 +0000 (21:26 +0000)]
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

4 years agoImprove VxWorks GTHREAD_ONCE_INIT
Olivier Hainque [Mon, 30 Dec 2019 21:22:21 +0000 (21:22 +0000)]
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

4 years agoFix macro reference in gthr-vxworks-tls.c
Olivier Hainque [Mon, 30 Dec 2019 21:14:35 +0000 (21:14 +0000)]
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

4 years agoFix typo in macro name guarding conditional in vxcrtstuff.c
Olivier Hainque [Mon, 30 Dec 2019 21:11:22 +0000 (21:11 +0000)]
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

4 years agore PR libgomp/93066 (libgomp/target.c:525:46: error: expected expression before ...
John David Anglin [Mon, 30 Dec 2019 20:33:17 +0000 (20:33 +0000)]
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

4 years agoFix builtin functions needlessly using VIEW_CONVERT_EXPRs on their operands.
Peter Bergner [Mon, 30 Dec 2019 20:23:25 +0000 (20:23 +0000)]
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

4 years agoRemove assert in reshape_init_r.
Marek Polacek [Mon, 30 Dec 2019 16:07:33 +0000 (16:07 +0000)]
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

4 years agodecl2.c (delete_sanity): Add location_t parameter and use it throughout.
Paolo Carlini [Mon, 30 Dec 2019 13:23:40 +0000 (13:23 +0000)]
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

4 years agore PR fortran/91651 ([F03] Implement KIND argument for INDEX)
Thomas Koenig [Mon, 30 Dec 2019 12:35:05 +0000 (12:35 +0000)]
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

4 years agore PR fortran/91651 ([F03] Implement KIND argument for INDEX)
Thomas Koenig [Mon, 30 Dec 2019 10:47:39 +0000 (10:47 +0000)]
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

4 years agoRemove KIND argument from INDEX so it does not mess up scalarization.
Thomas Koenig [Mon, 30 Dec 2019 10:43:38 +0000 (10:43 +0000)]
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

4 years agoCatch division by zero errors in array sizes.
Thomas Koenig [Mon, 30 Dec 2019 10:34:11 +0000 (10:34 +0000)]
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

4 years agoDaily bump.
GCC Administrator [Mon, 30 Dec 2019 00:16:14 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r279761

4 years agore PR c++/92745 (Initializing array with vec4 results in compile error)
Jakub Jelinek [Sun, 29 Dec 2019 23:47:55 +0000 (00:47 +0100)]
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

4 years agoPR c++/88337 - Implement P1327R1: Allow dynamic_cast in constexpr.
Marek Polacek [Sun, 29 Dec 2019 16:44:41 +0000 (16:44 +0000)]
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

4 years agore PR target/93078 (Missing fma and round functions auto-vectorization with x86-64...
Jakub Jelinek [Sun, 29 Dec 2019 11:03:25 +0000 (12:03 +0100)]
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

4 years agoUnshare DR_STEP before gimplifying it
Richard Sandiford [Sun, 29 Dec 2019 09:28:34 +0000 (09:28 +0000)]
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

4 years agoCheck for a supported comparison when using EXTRACT_LAST_REDUCTION
Richard Sandiford [Sun, 29 Dec 2019 09:27:43 +0000 (09:27 +0000)]
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

4 years agoDaily bump.
GCC Administrator [Sun, 29 Dec 2019 00:16:51 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r279751

4 years agore PR bootstrap/93074 (build FAIL with --enable-offload-targets=nvptx-none)
Jakub Jelinek [Sat, 28 Dec 2019 09:26:03 +0000 (10:26 +0100)]
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

4 years agoDaily bump.
GCC Administrator [Sat, 28 Dec 2019 00:16:32 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r279746

4 years ago[AArch64] Fix typo in V_INT_CONTAINER
Richard Sandiford [Fri, 27 Dec 2019 16:55:36 +0000 (16:55 +0000)]
[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

4 years agoAdd missing target check for fully-masked fold-left reductions
Richard Sandiford [Fri, 27 Dec 2019 16:54:54 +0000 (16:54 +0000)]
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

4 years agoDaily bump.
GCC Administrator [Fri, 27 Dec 2019 00:16:34 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r279739

4 years agore PR c++/92438 (Function declaration parsed incorrectly with `-std=c++1z`)
Jakub Jelinek [Thu, 26 Dec 2019 10:16:01 +0000 (11:16 +0100)]
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

4 years agoDaily bump.
GCC Administrator [Thu, 26 Dec 2019 00:16:42 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r279735

4 years agoDefine HAVE_ for math long double functions declared in vxworks headers
Alexandre Oliva [Wed, 25 Dec 2019 06:43:22 +0000 (06:43 +0000)]
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

4 years agoDaily bump.
GCC Administrator [Wed, 25 Dec 2019 00:16:22 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r279730

4 years agors6000: re-enable web and rnreg with -funroll-loops
Jiufu Guo [Tue, 24 Dec 2019 13:27:33 +0000 (13:27 +0000)]
rs6000: re-enable web and rnreg with -funroll-loops

Previously, limited unrolling was enabled at O2 for powerpc in r278034.  At that
time, -fweb and -frename-registers were not enabled together with -funroll-loops
even for -O3.  After that, we notice there are some performance degradations on
SPEC2006fp which caused by without web and rnreg.  This patch enable -fweb
and -frename-registers for -funroll-loops to align original behavior before
r278034.

gcc/
2019-12-23  Jiufu Guo  <guojiufu@linux.ibm.com>

* config/rs6000/rs6000.c (rs6000_option_override_internal): Enable
-fweb and -frename-registers with -funroll-loops

From-SVN: r279725

4 years agore PR go/93020 (Final patches to build gcc-10 on GNU/Hurd)
Ian Lance Taylor [Tue, 24 Dec 2019 05:05:32 +0000 (05:05 +0000)]
re PR go/93020 (Final patches to build gcc-10 on GNU/Hurd)

PR go/93020
    libgo: Hurd portability patches

    By Svante Signell.

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

From-SVN: r279724

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

From-SVN: r279723

4 years agoRestrict 'c-c++-common/goacc/mdc-1.c' to LP64, LLP64
Thomas Schwinge [Mon, 23 Dec 2019 20:20:29 +0000 (21:20 +0100)]
Restrict 'c-c++-common/goacc/mdc-1.c' to LP64, LLP64

The tree dump scanning has certain expectations.

gcc/testsuite/
* c-c++-common/goacc/mdc-1.c: Restrict to LP64, LLP64.

From-SVN: r279720

4 years ago[C++] Make same_type_p return false for gnu_vector_type_p differences (PR 92789)
Richard Sandiford [Mon, 23 Dec 2019 09:43:46 +0000 (09:43 +0000)]
[C++] Make same_type_p return false for gnu_vector_type_p differences (PR 92789)

As Jason pointed out in the review of the C++ gnu_vector_type_p patch:

    https://gcc.gnu.org/ml/gcc-patches/2019-12/msg00173.html

the real fix for the XFAILs in acle/general-c++/gnu_vectors_*.C is to
make same_type_p return false for two types if one is gnu_vector_type_p
and the other isn't.  This patch does that and fixes the fallout.

Originally I'd tried to make it so that "X *" and "Y *" are
interconvertible whenever X and Y are, and similarly for
"X &" and "Y &".  That doesn't fall out naturally though,
and is different from how -flax-vector-conversions works.
The patch therefore accepts all the consequences of making
X and Y !same_type_p instead of trying to work around them.

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

gcc/cp/
PR c++/92789
* typeck.c (structural_comptypes): Make sure that two vector types
agree on gnu_vector_type_p.

gcc/testsuite/
PR c++/92789
* g++.dg/ext/sve-sizeless-2.C (statements): Expect pointer
difference and comparisons between GNU and non-GNU types
to be rejected.  Expect __is_same to be false for such pairs.
* g++.target/aarch64/sve/acle/general-c++/gnu_vectors_1.C: Remove
XFAILs.  Expect conversions between SVE vector pointers and
GNU vector pointers to be rejected.  Test references.
* g++.target/aarch64/sve/acle/general-c++/gnu_vectors_2.C: Likewise.

From-SVN: r279717

4 years ago[C++] Fix ICE for binding lax vector conversions to references (PR 93014)
Richard Sandiford [Mon, 23 Dec 2019 09:43:35 +0000 (09:43 +0000)]
[C++] Fix ICE for binding lax vector conversions to references (PR 93014)

This test:

typedef unsigned int v4si __attribute__ ((vector_size(16)));
typedef unsigned char v16qi __attribute__ ((vector_size(16)));
extern v16qi x;
v4si &y = x;

ICEs with:

a.c:4:11: internal compiler error: in convert_like_real, at cp/call.c:7670

This started with r260780, which had the effect of making lvalue_kind
look through VIEW_CONVERT_EXPR in all cases, not just for location
wrappers.  This also means that:

typedef unsigned int v4si __attribute__ ((vector_size(16)));
typedef unsigned char v16qi __attribute__ ((vector_size(16)));
extern v16qi x;
v4si &y = reinterpret_cast<v4si>(x);

is now valid despite the result of the cast being an rvalue.

The patch attempts to fix that by calling rvalue on the input to the
conversion, so that the tree looks the same as for:

  extern v16qi x;
  v4si &y = (v4si)x;

which is already handled correctly.

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

gcc/cp/
* cvt.c (ocp_convert): Apply rvalue to the source of vector
conversions.
* typeck.c (build_reinterpret_cast_1): Likewise.

gcc/testsuite/
* g++.dg/ext/vector39.C: New test.

From-SVN: r279716

4 years agoDaily bump.
GCC Administrator [Mon, 23 Dec 2019 00:16:14 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r279715

4 years agoAdd OpenACC 2.6 `acc_get_property' support
Maciej W. Rozycki [Sun, 22 Dec 2019 19:54:09 +0000 (19:54 +0000)]
Add OpenACC 2.6 `acc_get_property' support

Add generic support for the OpenACC 2.6 `acc_get_property' and
`acc_get_property_string' routines, as well as full handlers for the
host and the NVPTX offload targets and minimal handlers for the HSA,
Intel MIC, and AMD GCN offload targets.

Included are C/C++ and Fortran tests that, in particular, print
the property values for acc_property_vendor, acc_property_memory,
acc_property_free_memory, acc_property_name, and acc_property_driver.
The output looks as follows:

Vendor: GNU
Name: GOMP
Total memory: 0
Free memory: 0
Driver: 1.0

with the host driver (where the memory related properties are not
supported for the host device and yield 0, conforming to the standard)
and output like:

Vendor: Nvidia
Total memory: 12651462656
Free memory: 12202737664
Name: TITAN V
Driver: CUDA Driver 9.1

with the NVPTX driver.

2019-12-22  Maciej W. Rozycki  <macro@codesourcery.com>
    Frederik Harwath  <frederik@codesourcery.com>
    Thomas Schwinge  <tschwinge@codesourcery.com>

include/
* gomp-constants.h (gomp_device_property): New enum.

libgomp/
* libgomp.h (gomp_device_descr): Add `get_property_func' member.
* libgomp-plugin.h (gomp_device_property_value): New union.
(gomp_device_property_value): New prototype.
* openacc.h (acc_device_t): Add `acc_device_current' enumeration
constant.
(acc_device_property_t): New enum.
(acc_get_property, acc_get_property_string): New prototypes.
* oacc-init.c (acc_get_device_type): Also assert that result
is not `acc_device_current'.
(get_property_any, acc_get_property, acc_get_property_string):
New functions.
* openacc.f90 (openacc_kinds): Add `acc_device_current' and
`acc_property_memory', `acc_property_free_memory',
`acc_property_name', `acc_property_vendor' and
`acc_property_driver' constants.  Add `acc_device_property' data
type.
(openacc_internal): Add `acc_get_property' and
`acc_get_property_string' interfaces.  Add `acc_get_property_h',
`acc_get_property_string_h', `acc_get_property_l' and
`acc_get_property_string_l'.
* oacc-host.c (host_get_property): New function.
(host_dispatch): Wire it.
* target.c (gomp_load_plugin_for_device): Handle `get_property'.
* libgomp.map (OACC_2.6): Add `acc_get_property', `acc_get_property_h_',
`acc_get_property_string' and `acc_get_property_string_h_' symbols.
* libgomp.texi (OpenACC Runtime Library Routines): Add
`acc_get_property'.
(acc_get_property): New node.
* plugin/plugin-gcn.c (GOMP_OFFLOAD_get_property): New
function (stub).
* plugin/plugin-hsa.c (GOMP_OFFLOAD_get_property): New function.
* plugin/plugin-nvptx.c (CUDA_CALLS): Add `cuDeviceGetName',
`cuDeviceTotalMem', `cuDriverGetVersion' and `cuMemGetInfo'
calls.
(GOMP_OFFLOAD_get_property): New function.
(struct ptx_device): Add new field "name".
(cuda_driver_version_s): Add new static variable ...
(nvptx_init): ... and init from here.

* testsuite/libgomp.oacc-c-c++-common/acc_get_property.c: New test.
* testsuite/libgomp.oacc-c-c++-common/acc_get_property-2.c: New test.
* testsuite/libgomp.oacc-c-c++-common/acc_get_property-3.c: New test.
* testsuite/libgomp.oacc-c-c++-common/acc_get_property-aux.c: New file
with test helper functions.

* testsuite/libgomp.oacc-fortran/acc_get_property.f90: New test.

liboffloadmic/
* plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_get_property):
New function.

Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>
Co-Authored-By: Frederik Harwath <frederik@codesourcery.com>
Co-Authored-By: Thomas Schwinge <tschwinge@codesourcery.com>
From-SVN: r279710

4 years agoRestrict some aarch64 testcases to little-endian
Andrew Pinski [Sun, 22 Dec 2019 01:35:08 +0000 (01:35 +0000)]
Restrict some aarch64 testcases to little-endian

2019-12-21  Andrew Pinski  <apinski@marvell.com>

        PR testsuite/92998
        * gcc.target/aarch64/sve/acle/general/dupq_1.c:
        Restrict to aarch64_little_endian only.
        * gcc.target/aarch64/torture/simd-abi-8.c:
        Likewise.

From-SVN: r279709

4 years agolibgomp/test: Fix compilation for build sysroot
Maciej W. Rozycki [Sun, 22 Dec 2019 00:41:36 +0000 (00:41 +0000)]
libgomp/test: Fix compilation for build sysroot

Fix a problem with the libgomp testsuite using a method to determine
the compiler to use resulting in the tool being different from one the
library has been built with, and causing a catastrophic failure from the
lack of a suitable `--sysroot=' option where the `--with-build-sysroot='
configuration option has been used to build the compiler resulting in
the inability to link executables.

Address this problem by defining the compiler to use, via the
GCC_UNDER_TEST TCL variable, set in the DejaGNU configuration file from
$CC by autoconf, which will have all the required options set for the
target compiler to build executables in the environment configured,
removing failures like:

.../bin/riscv64-linux-gnu-ld: cannot find crt1.o: No such file or directory
.../bin/riscv64-linux-gnu-ld: cannot find -lm
.../bin/riscv64-linux-gnu-ld: cannot find -lpthread
.../bin/riscv64-linux-gnu-ld: cannot find -lc
.../bin/riscv64-linux-gnu-ld: cannot find -latomic
collect2: error: ld returned 1 exit status
compiler exited with status 1
FAIL: libgomp.c/../libgomp.c-c++-common/atomic-18.c (test for excess errors)
Excess errors:
.../bin/riscv64-linux-gnu-ld: cannot find crt1.o: No such file or directory
.../bin/riscv64-linux-gnu-ld: cannot find -lm
.../bin/riscv64-linux-gnu-ld: cannot find -lpthread
.../bin/riscv64-linux-gnu-ld: cannot find -lc
.../bin/riscv64-linux-gnu-ld: cannot find -latomic

UNRESOLVED: libgomp.c/../libgomp.c-c++-common/atomic-18.c compilation failed to produce executable

and bringing overall test results for the `riscv64-linux-gnu' target
(here with the `x86_64-linux-gnu' host and RISC-V QEMU in the Linux user
emulation mode as the target board) from:

=== libgomp Summary ===

# of expected passes 44
# of unexpected failures 3274
# of unresolved testcases 3241
# of unsupported tests 548

to:

=== libgomp Summary ===

# of expected passes 6834
# of unexpected failures 4
# of expected failures 4
# of unsupported tests 518

libgomp/
* testsuite/libgomp-test-support.exp.in (GCC_UNDER_TEST): New
variable.

From-SVN: r279708

4 years ago* doc/invoke.texi (-flto): Use "compile time" as a noun.
Gerald Pfeifer [Sun, 22 Dec 2019 00:28:57 +0000 (00:28 +0000)]
* doc/invoke.texi (-flto): Use "compile time" as a noun.

From-SVN: r279707

4 years agotestsuite: Fix run-time tracking down of `libgcc_s'
Maciej W. Rozycki [Sun, 22 Dec 2019 00:28:20 +0000 (00:28 +0000)]
testsuite: Fix run-time tracking down of `libgcc_s'

Fix a catastrophic libgo testsuite failure in cross-compilation where
the shared `libgcc_s' library cannot be found by the loader at run time
in build-tree testing and consequently all test cases fail the execution
stage, giving output (here with the `x86_64-linux-gnu' host and the
`riscv64-linux-gnu' target, with RISC-V QEMU in the Linux user emulation
mode as the target board) like:

spawn qemu-riscv64 -E LD_LIBRARY_PATH=.:.../riscv64-linux-gnu/lib64/lp64d/libgo/.libs ./a.exe
./a.exe: error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: No such file or directory
FAIL: archive/tar

To do so rework `gcc-set-multilib-library-path' so as not to rely on the
`rootme' TCL variable to have been preset in testsuite invocation, which
only works for the GCC test suites and not for library test suites, and
also use `remote_exec host' rather than `exec' to invoke the compiler in
determination of `libgcc_s' locations, so that the solution works in
remote testing as well while also avoiding the hardcoded limit of the
executable's path length imposed by `exec'.

This is based on an observation that the multilib root directory can be
determined by stripping out the multilib directory in effect as printed
with the `-print-multi-directory' option from the path produced by the
`-print-file-name=' option.  And then individual full multilib paths can
be assembled for the other multilibs by appending their respective
multilib directories to the multilib root directory.

Unlike with the old solution the full multilib paths are not checked for
the presence of the shared `libgcc_s' library there, but that is
supposed to be harmless.  Also the full multilib path for the multilib
used with the compiler used for testing will now come first, which
should reduce run-time processing in the usual case.

With this change in place test output instead looks like:

spawn qemu-riscv64 -E LD_LIBRARY_PATH=.:.../riscv64-linux-gnu/lib64/lp64d/libgo/.libs:..././gcc/lib64/lp64d:..././gcc/.:..././gcc/lib32/ilp32:..././gcc/lib32/ilp32d:..././gcc/lib64/lp64 ./a.exe
PASS
PASS: archive/tar

No summary comparison, because the libgo testsuite does not provide one
in this configuration for some reason, however this change improves
overall results from 0 PASSes and 159 FAILs to 133 PASSes and 26 FAILs.

gcc/testsuite/
* lib/gcc-defs.exp (gcc-set-multilib-library-path): Use
`-print-file-name=' to determine the multilib root directory.
Use `remote_exec host' rather than `exec' to invoke the
compiler.

From-SVN: r279706

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

From-SVN: r279705

4 years agolibada: Fix shared library installation with `--disable-libada'
Maciej W. Rozycki [Sun, 22 Dec 2019 00:15:44 +0000 (00:15 +0000)]
libada: Fix shared library installation with `--disable-libada'

Provide a default value of $(toolexeclibdir) for $(ADA_RTL_DSO_DIR), so
that in a `--disable-libada' configuration `make install' places shared
gnatlib libraries, built with `make -C gcc gnatlib-shared', in their
intended version-specific location, fixing a commit r276424 ("libada:
Respect `--enable-version-specific-runtime-libs'") regression.

gcc/ada/
* gcc-interface/Makefile.in (toolexeclibdir): New variable.

From-SVN: r279702

4 years ago[OMP] Restore 'omp declare target link' handling
Thomas Schwinge [Sat, 21 Dec 2019 22:58:43 +0000 (23:58 +0100)]
[OMP] Restore 'omp declare target link' handling

    PASS: libgomp.c/target-link-1.c (test for excess errors)
    [-PASS:-]{+FAIL:+} libgomp.c/target-link-1.c execution test

We need to revert one line of code change from r279625.

libgomp/
* target.c (gomp_map_vars_internal): Restore 'omp declare target
link' handling.

From-SVN: r279701

4 years ago[PR93026, PR92929] Adjust 'gfortran.dg/goacc/finalize-1.f' for r279626 changes
Thomas Schwinge [Sat, 21 Dec 2019 21:32:36 +0000 (22:32 +0100)]
[PR93026, PR92929] Adjust 'gfortran.dg/goacc/finalize-1.f' for r279626 changes

gcc/testsuite/
PR fortran/93026
PR middle-end/92929
* gfortran.dg/goacc/finalize-1.f: Adjust.

From-SVN: r279700

4 years agore PR fortran/91661 (ICE in gfc_conv_intrinsic_dot_product, at fortran/trans-intrinsi...
Harald Anlauf [Sat, 21 Dec 2019 20:42:14 +0000 (20:42 +0000)]
re PR fortran/91661 (ICE in gfc_conv_intrinsic_dot_product, at fortran/trans-intrinsic.c:4804)

2019-12-21  Harald Anlauf  <anlauf@gmx.de>

PR fortran/91661
* gfortran.dg/pr91661.f90: New test.

From-SVN: r279699

4 years agore PR fortran/92990 (INVALID code with NULLIFY – partially misleading error message...
Harald Anlauf [Sat, 21 Dec 2019 20:25:43 +0000 (20:25 +0000)]
re PR fortran/92990 (INVALID code with NULLIFY – partially misleading error message "If bounds remapping is specified at (1), the pointer target shall not be NULL")

2019-12-21  Harald Anlauf  <anlauf@gmx.de>

PR fortran/92990
* match.c (gfc_match_nullify): Check for valid pointer object.
Reject bounds remapping.

PR fortran/92990
* gfortran.dg/pr92990.f90: New test.

From-SVN: r279698

4 years agore PR fortran/92753 (ICE in gfc_trans_call, at fortran/trans-stmt.c:392)
Paul Thomas [Sat, 21 Dec 2019 16:19:42 +0000 (16:19 +0000)]
re PR fortran/92753 (ICE in gfc_trans_call, at fortran/trans-stmt.c:392)

2019-12-21  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/92753
* expr.c (find_inquiry_ref): Catch INQUIRY_LEN case, where the
temporary expression has been converted to a constant and make
the new expression accordingly. Correct the error in INQUIRY_RE
and INQUIRY_IM cases. The original rather than the resolved
expression was being used as the source in mpfr_set.

2019-12-21  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/92753
* gfortran.dg/inquiry_type_ref_5.f90 : New test.

From-SVN: r279696

4 years agoAvoid segfault when doing IPA-VRP but not IPA-CP (PR 93015)
Martin Jambor [Sat, 21 Dec 2019 11:25:05 +0000 (12:25 +0100)]
Avoid segfault when doing IPA-VRP but not IPA-CP (PR 93015)

2019-12-21  Martin Jambor  <mjambor@suse.cz>

PR ipa/93015
* ipa-cp.c (ipcp_store_vr_results): Check that info exists

testsuite/
* gcc.dg/lto/pr93015_0.c: New test.

From-SVN: r279695

4 years agoDaily bump.
GCC Administrator [Sat, 21 Dec 2019 00:16:17 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r279690

4 years agore PR middle-end/91512 (Fortran compile time regression.)
Jakub Jelinek [Fri, 20 Dec 2019 23:51:15 +0000 (00:51 +0100)]
re PR middle-end/91512 (Fortran compile time regression.)

PR middle-end/91512
PR fortran/92738
* lang.opt (-finline-arg-packing): Add trailing dot to help text.

From-SVN: r279687

4 years agoPR c++/92745 - bogus error when initializing array of vectors.
Marek Polacek [Fri, 20 Dec 2019 23:30:04 +0000 (23:30 +0000)]
PR c++/92745 - bogus error when initializing array of vectors.

In r268428 I changed reshape_init_r in such a way that when it sees
a nested { } in a CONSTRUCTOR with missing braces, it just returns
the initializer:
+     else if (COMPOUND_LITERAL_P (stripped_init)
...
+         ++d->cur;
+         gcc_assert (!BRACE_ENCLOSED_INITIALIZER_P (stripped_init));
+         return init;

But as this test shows, that's incorrect: if TYPE is an array, we need
to proceed to reshape_init_array_1 which will iterate over the array
initializers:
 6006   /* Loop until there are no more initializers.  */
 6007   for (index = 0;
 6008        d->cur != d->end && (!sized_array_p || index <= max_index_cst);
 6009        ++index)
 6010     {
and update d.cur accordingly.  In other words, when reshape_init gets

{{col[0][0], col[1][0], col[2][0], col[3][0]},
 {col[0][1], col[1][1], col[2][1], col[3][1]},
 {col[0][2], col[1][2], col[2][2], col[3][2]},
 {col[0][3], col[1][3], col[2][3], col[3][3]}}

we recurse on the first element:
  {col[0][0], col[1][0], col[2][0], col[3][0]}
and we can't just move d.cur to point to
  {col[0][1], col[1][1], col[2][1], col[3][1]}
and return; we need to iterate, so that d.cur ends up being properly
updated, and after all initializers have been seen, points to d.end.
Currently we skip the loop, wherefore we hit this:

 6502   /* Make sure all the element of the constructor were used. Otherwise,
 6503      issue an error about exceeding initializers.  */
 6504   if (d.cur != d.end)
 6505     {
 6506       if (complain & tf_error)
 6507         error ("too many initializers for %qT", type);
 6508       return error_mark_node;
 6509     }

* decl.c (reshape_init_r): For a nested compound literal, do
call reshape_init_{class,array,vector}.

* g++.dg/cpp0x/initlist118.C: New test.

From-SVN: r279686

4 years agoPR c++/92974 - bogus location for enum and non-enum in ?: warning.
Marek Polacek [Fri, 20 Dec 2019 23:25:44 +0000 (23:25 +0000)]
PR c++/92974 - bogus location for enum and non-enum in ?: warning.

build_min_non_dep wasn't setting any location so when we were emitting the
warning in the following test while instantiating a template, its location
was UNKNOWN_LOCATION.  Rather than adding a location_t parameter, let's use
the location from the original expression.

* tree.c (build_min_non_dep): Use the location of NON_DEP when
building the expression.

* g++.dg/diagnostic/enum1.C: New test.
* g++.dg/gomp/loop-2.C: Adjust dg-error.
* g++.dg/gomp/for-21.C: Likewise.

From-SVN: r279685

4 years agore PR c++/92965 ("note: 'x' is not public" emitted even when no error is emitted)
Jakub Jelinek [Fri, 20 Dec 2019 23:21:21 +0000 (00:21 +0100)]
re PR c++/92965 ("note: 'x' is not public" emitted even when no error is emitted)

PR c++/92965
* pt.c (invalid_nontype_parm_type_p): Call structural_type_p with
explain=true only if emitting error.

* g++.dg/cpp2a/nontype-class27.C: New test.

From-SVN: r279684

4 years agore PR c++/92966 (Segfault on defaulted operator== with wrong return type)
Jakub Jelinek [Fri, 20 Dec 2019 23:19:23 +0000 (00:19 +0100)]
re PR c++/92966 (Segfault on defaulted operator== with wrong return type)

PR c++/92966
* method.c (early_check_defaulted_comparison): Don't set
DECL_MAYBE_DELETED when returning false.

* g++.dg/cpp2a/spaceship-eq8.C: New test.

From-SVN: r279683

4 years agore PR c++/92973 (Silently accepting defaulted comparison operators in C++11 .. 17)
Jakub Jelinek [Fri, 20 Dec 2019 23:18:09 +0000 (00:18 +0100)]
re PR c++/92973 (Silently accepting defaulted comparison operators in C++11 .. 17)

PR c++/92973
* method.c (early_check_defaulted_comparison): For C++17 and earlier
diagnose defaulted comparison operators.

* g++.dg/cpp0x/spaceship-eq1.C: New test.

From-SVN: r279682

4 years agore PR c++/92666 (bogus -Wunused-but-set-variable in gcov.c with -Wno-restrict)
Jakub Jelinek [Fri, 20 Dec 2019 23:16:58 +0000 (00:16 +0100)]
re PR c++/92666 (bogus -Wunused-but-set-variable in gcov.c with -Wno-restrict)

PR c++/92666
* call.c (convert_arg_to_ellipsis): For floating point or
decltype(nullptr) arguments call mark_rvalue_use.

* g++.dg/warn/Wunused-var-36.C: New test.

From-SVN: r279681

4 years agore PR c++/92992 (Side-effects dropped when decltype(nullptr) typed expression is...
Jakub Jelinek [Fri, 20 Dec 2019 23:15:52 +0000 (00:15 +0100)]
re PR c++/92992 (Side-effects dropped when decltype(nullptr) typed expression is passed to ellipsis)

PR c++/92992
* call.c (convert_arg_to_ellipsis): For decltype(nullptr) arguments
that have side-effects use cp_build_compound_expr.

* g++.dg/cpp0x/nullptr45.C: New test.

From-SVN: r279680

4 years agoRename signed integer 16/34-bit macros.
Michael Meissner [Fri, 20 Dec 2019 19:27:47 +0000 (19:27 +0000)]
Rename signed integer 16/34-bit macros.

2019-12-20   Michael Meissner  <meissner@linux.ibm.com>

* config/rs6000/predicates.md (cint34_operand): Use
SIGNED_INTEGER_34BIT_P macro.
* config/rs6000/rs6000.c (num_insns_constant_gpr): Use the
SIGNED_INTEGER_16BIT_P and SIGNED_INTEGER_34BIT_P macros.
(address_to_insn_form): Use the SIGNED_INTEGER_16BIT_P and
SIGNED_INTEGER_34BIT_P macros.
* config/rs6000/rs6000.h (SIGNED_INTEGER_NBIT_P): New macro.
(SIGNED_INTEGER_16BIT_P): Rename SIGNED_16BIT_OFFSET_P to be
SIGNED_INTEGER_34BIT_P.
(SIGNED_INTEGER_34BIT_P): Rename SIGNED_34BIT_OFFSET_P to be
SIGNED_INTEGER_34BIT_P.

From-SVN: r279677

4 years agoc-ada-spec.h (decl_sloc): Delete.
Eric Botcazou [Fri, 20 Dec 2019 17:41:06 +0000 (17:41 +0000)]
c-ada-spec.h (decl_sloc): Delete.

c-family/
* c-ada-spec.h (decl_sloc): Delete.
* c-ada-spec.c (decl_sloc): Make static.
c/
* c-decl.c (collect_source_ref_cb): Delete.
(for_each_global_decl): Rename into...
(collect_source_refs): ...this.  Call collect_source_ref directly.
(c_parse_final_cleanups): Always call collect_source_ref on the main
input filename.
cp/
* decl2.c (c_parse_final_cleanups): Always call collect_source_ref on
the main input filename.

From-SVN: r279670

4 years agofortran: Fix PR number in comment of testcase for PR 69497
Jonathan Wakely [Fri, 20 Dec 2019 17:10:22 +0000 (17:10 +0000)]
fortran: Fix PR number in comment of testcase for PR 69497

The testcase was originally committed with an incorrect changelog and PR
number. The changelog was fixed later, but not the comment in the test.

PR fortran/69497
* gfortran.dg/pr69497.f90: Fix PR number in comment.

From-SVN: r279657

4 years agolibstdc++: Add inline to maybe-constexpr functions (PR 92927)
Jonathan Wakely [Fri, 20 Dec 2019 17:10:18 +0000 (17:10 +0000)]
libstdc++: Add inline to maybe-constexpr functions (PR 92927)

Originally these functions were always inline. I changed them in r277342
to be always constexpr, then in r277588 changed them to be constexpr for
C++14, but I didn't restore the 'inline' for C++11. That leads to linker
errors when libstdc++.so is built unoptimized, because those functions
don't get instantiated in src/c++11/string-inst.o

PR libstdc++/92927
* include/bits/alloc_traits.h (__alloc_on_copy, __alloc_on_move)
(__alloc_on_swap): Add inline specifier.

From-SVN: r279656

4 years agogcc/testsuite/ChangeLog:
Stam Markianos-Wright [Fri, 20 Dec 2019 15:52:39 +0000 (15:52 +0000)]
gcc/testsuite/ChangeLog:

2019-12-20  Stam Markianos-Wright  <stam.markianos-wright@arm.com>

* lib/target-supports.exp
(check_effective_target_arm_v8_2a_i8mm_ok_nocache): New.
(check_effective_target_arm_v8_2a_i8mm_ok): New.
(add_options_for_arm_v8_2a_i8mm): New.
(check_effective_target_arm_v8_2a_bf16_neon_ok_nocache): New.
(check_effective_target_arm_v8_2a_bf16_neon_ok): New.
(add_options_for_arm_v8_2a_bf16_neon): New.

gcc/Changelog:

2019-12-20  Stam Markianos-Wright  <stam.markianos-wright@arm.com>

* doc/sourcebuild.texi
(arm_v8_2a_bf16_neon_ok): Document new target supports option.
(arm_v8_2a_i8mm_ok): Likewise.

From-SVN: r279648

4 years agoRename tests to reference the correct PR
Roman Zhuykov [Fri, 20 Dec 2019 15:40:46 +0000 (15:40 +0000)]
Rename tests to reference the correct PR

2019-12-20  Roman Zhuykov  <zhroma@ispras.ru>

* gcc.dg/pr92951-1.c: Rename to ...
* gcc.dg/pr92591-1.c: ... this.
* gcc.dg/pr92951-2.c: Rename to ...
* gcc.dg/pr92591-2.c: ... this.

From-SVN: r279645

4 years agolibstdc++: Test setrlimit with c++ in configure
Jerome Lambourg [Fri, 20 Dec 2019 15:30:41 +0000 (15:30 +0000)]
libstdc++: Test setrlimit with c++ in configure

* acinclude.m4 (GLIBCXX_CHECK_SETRLIMIT): Test with AC_LANG_CPLUSPLUS.
* configure: Regenerate.

From-SVN: r279644

4 years agolibstdc++: Fix versioned namespace tests
François Dumont [Fri, 20 Dec 2019 13:24:52 +0000 (13:24 +0000)]
libstdc++: Fix versioned namespace tests

* testsuite/23_containers/map/48101_neg.cc: Add versioned namespace
pattern to tested error message.
* testsuite/23_containers/multimap/48101_neg.cc: Likewise.
* testsuite/30_threads/headers/stop_token/synopsis.cc: Add
dg-require-normal-namepace.

From-SVN: r279641

4 years agolibstdc++: Fix pretty printers script and tests
François Dumont [Fri, 20 Dec 2019 12:42:50 +0000 (12:42 +0000)]
libstdc++: Fix pretty printers script and tests

* python/libstdcxx/v6/printers.py (lookup_node_type): Remove redundant
call to lookup_node_type.
* testsuite/libstdc++-prettyprinters/80276.cc: Define
_GLIBCXX_USE_CXX11_ABI to 0.
* testsuite/libstdc++-prettyprinters/91997.cc: Use regexp-test to check
'a' content.

From-SVN: r279640

4 years agoIntroduce -finline-arg-packing.
Thomas Koenig [Fri, 20 Dec 2019 11:51:05 +0000 (11:51 +0000)]
Introduce -finline-arg-packing.

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

    PR middle-end/91512
    PR fortran/92738
    * invoke.texi: Document -finline-arg-packing.
    * lang.opt: Add -finline-arg-packing.
    * options.c (gfc_post_options): Handle -finline-arg-packing.
    * trans-array.c (gfc_conv_array_parameter): Use
    flag_inline_arg_packing instead of checking for optimize and
    optimize_size.

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

    PR middle-end/91512
    PR fortran/92738
    * gfortran.dg/inline_pack_25.f90: New test.

From-SVN: r279639

4 years agoFortran] PR 92996 – fix rank resolution EXPR_ARRAY
Tobias Burnus [Fri, 20 Dec 2019 11:35:20 +0000 (11:35 +0000)]
Fortran] PR 92996 – fix rank resolution EXPR_ARRAY

        PR fortran/92996
        gcc/fortran/
        * expr.c (simplify_parameter_variable): Call gfc_resolve_ref and
        gfc_expression_rank; fix location info.
        * gfortran.h (gfc_resolve_ref, gfc_expression_rank): Declare.
        * match.c (gfc_match_stopcode): Remove redundant setting of
        gfc_init_expr_flag; early return if gfc_simplify_expr has an error.
        * resolve.c (gfc_expression_rank): Renamed from expression_rank;
        minor cleanup.
        (gfc_resolve_ref): Removed static and renamed from resolve_ref.
        (resolve_variable, resolve_typebound_function,
        resolve_typebound_subroutine, resolve_ppc_call, resolve_expr_ppc,
        gfc_resolve_expr, resolve_procedure): Update calls.

        PR fortran/92996
        gcc/testsuite/
        * gfortran.dg/array_simplify_4.f90: New.
        * gfortran.dg/pr91565.f90: Update dg-error.
        * gfortran.dg/pr91801.f90: Likewise.

From-SVN: r279638

4 years agoImprove is-coindexed check for OpenACC/OpenMP
Tobias Burnus [Fri, 20 Dec 2019 11:22:52 +0000 (11:22 +0000)]
Improve is-coindexed check for OpenACC/OpenMP

        gcc/fortran/
        * openmp.c (resolve_omp_clauses): Move is-coindexed check from here ...
        (gfc_match_omp_variable_list): ... to here.

        gcc/testsuite/
        * gfortran.dg/goacc/coindexed-1.f90: New.

From-SVN: r279637

4 years agoAdd myself to MAINTAINERS
Jerome Lambourg [Fri, 20 Dec 2019 10:43:47 +0000 (10:43 +0000)]
Add myself to MAINTAINERS

From-SVN: r279636

4 years agolibstdc++: Strengthen the check for availability of pthread_rwlock_t
Jerome Lambourg [Fri, 20 Dec 2019 09:30:48 +0000 (09:30 +0000)]
libstdc++: Strengthen the check for availability of pthread_rwlock_t

        * acinclude.m4 (_GLIBCXX_USE_PTHREAD_RWLOCK_T): Checks that
        _PTHREADS is defined after including gthr.h.
        * configure: Regenerate.

From-SVN: r279635

4 years agoFix testsuite-fallout of OpenACC deep-copy patch
Tobias Burnus [Fri, 20 Dec 2019 09:30:24 +0000 (10:30 +0100)]
Fix testsuite-fallout of OpenACC deep-copy patch

        gcc/testsuite/
        * gfortran.dg/goacc/data-clauses.f95: Remove now
        obsolete dg-error.

From-SVN: r279634

4 years agore PR target/92841 (Optimize -fstack-protector-strong code generation a bit)
Jakub Jelinek [Fri, 20 Dec 2019 08:23:42 +0000 (09:23 +0100)]
re PR target/92841 (Optimize -fstack-protector-strong code generation a bit)

PR target/92841
* config/i386/i386.md (*stack_protect_set_3): For pic_32bit_operand
always use lea{q}, no matter what value which_alternative has.

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

From-SVN: r279633

4 years agore PR target/93002 (while(i--) optimization)
Jakub Jelinek [Fri, 20 Dec 2019 08:22:46 +0000 (09:22 +0100)]
re PR target/93002 (while(i--) optimization)

PR target/93002
* config/i386/i386.md (dec reg; cmp $-1, reg; jne lab): New
define_peephole2.

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

From-SVN: r279632

4 years agoFortran polymorphic class-type support for OpenACC
Julian Brown [Fri, 20 Dec 2019 01:39:49 +0000 (01:39 +0000)]
Fortran polymorphic class-type support for OpenACC

gcc/fortran/
* openmp.c (resolve_oacc_data_clauses): Don't disallow allocatable
polymorphic types for OpenACC.
* trans-openmp.c (gfc_trans_omp_clauses): Support polymorphic class
types.

libgomp/
* testsuite/libgomp.oacc-fortran/class-ptr-param.f95: New test.
* testsuite/libgomp.oacc-fortran/classtypes-1.f95: New test.
* testsuite/libgomp.oacc-fortran/classtypes-2.f95: New test.

From-SVN: r279631

4 years agoOpenACC 2.6 deep copy: Fortran execution tests
Julian Brown [Fri, 20 Dec 2019 01:39:46 +0000 (01:39 +0000)]
OpenACC 2.6 deep copy: Fortran execution tests

libgomp/
* testsuite/libgomp.oacc-fortran/deep-copy-1.f90: New test.
* testsuite/libgomp.oacc-fortran/deep-copy-2.f90: New test.
* testsuite/libgomp.oacc-fortran/deep-copy-3.f90: New test.
* testsuite/libgomp.oacc-fortran/deep-copy-4.f90: New test.
* testsuite/libgomp.oacc-fortran/deep-copy-5.f90: New test.
* testsuite/libgomp.oacc-fortran/deep-copy-6.f90: New test.
* testsuite/libgomp.oacc-fortran/deep-copy-7.f90: New test.
* testsuite/libgomp.oacc-fortran/deep-copy-8.f90: New test.
* testsuite/libgomp.oacc-fortran/derived-type-1.f90: New test.
* testsuite/libgomp.oacc-fortran/derivedtype-1.f95: New test.
* testsuite/libgomp.oacc-fortran/derivedtype-2.f95: New test.
* testsuite/libgomp.oacc-fortran/multidim-slice.f95: New test.
* testsuite/libgomp.oacc-fortran/update-2.f90: New test.

Co-Authored-By: Cesar Philippidis <cesar@codesourcery.com>
From-SVN: r279630

4 years agoOpenACC 2.6 deep copy: C and C++ execution tests
Julian Brown [Fri, 20 Dec 2019 01:39:42 +0000 (01:39 +0000)]
OpenACC 2.6 deep copy: C and C++ execution tests

libgomp/
* testsuite/libgomp.oacc-c-c++-common/deep-copy-1.c: New test.
* testsuite/libgomp.oacc-c-c++-common/deep-copy-2.c: New test.
* testsuite/libgomp.oacc-c-c++-common/deep-copy-4.c: New test.
* testsuite/libgomp.oacc-c-c++-common/deep-copy-6.c: New test.
* testsuite/libgomp.oacc-c-c++-common/deep-copy-7.c: New test.
* testsuite/libgomp.oacc-c-c++-common/deep-copy-8.c: New test.
* testsuite/libgomp.oacc-c-c++-common/deep-copy-9.c: New test.
* testsuite/libgomp.oacc-c-c++-common/deep-copy-10.c: New test.
* testsuite/libgomp.oacc-c-c++-common/deep-copy-11.c: New test.
* testsuite/libgomp.oacc-c-c++-common/deep-copy-14.c: New test.
* testsuite/libgomp.oacc-c++/deep-copy-12.C: New test.
* testsuite/libgomp.oacc-c++/deep-copy-13.C: New test.

From-SVN: r279629

4 years agoOpenACC 2.6 deep copy: Fortran front-end parts
Julian Brown [Fri, 20 Dec 2019 01:20:42 +0000 (01:20 +0000)]
OpenACC 2.6 deep copy: Fortran front-end parts

        gcc/fortran/
        * gfortran.h (gfc_omp_map_op): Add OMP_MAP_ATTACH, OMP_MAP_DETACH.
        * openmp.c (gfc_match_omp_variable_list): Add allow_derived parameter.
        Parse derived-type member accesses if true.
        (omp_mask2): Add OMP_CLAUSE_ATTACH and OMP_CLAUSE_DETACH.
        (gfc_match_omp_map_clause): Add allow_derived parameter.  Pass to
        gfc_match_omp_variable_list.
        (gfc_match_omp_clauses): Support attach and detach.  Support derived
        types for appropriate OpenACC directives.
        (OACC_PARALLEL_CLAUSES, OACC_SERIAL_CLAUSES, OACC_KERNELS_CLAUSES,
        OACC_DATA_CLAUSES, OACC_ENTER_DATA_CLAUSES): Add OMP_CLAUSE_ATTACH.
        (OACC_EXIT_DATA_CLAUSES): Add OMP_CLAUSE_DETACH.
        (check_symbol_not_pointer): Don't disallow pointer objects of derived
        type.
        (resolve_oacc_data_clauses): Don't disallow allocatable derived types.
        (resolve_omp_clauses): Perform duplicate checking only for non-derived
        type component accesses (plain variables and arrays or array sections).
        Support component refs.
        * trans-expr.c (gfc_conv_component_ref,
        conv_parent_component_references): Make global.
        (gfc_maybe_dereference_var): New function, broken out of...
        (gfc_conv_variable): ...here.  Call above function.
        * trans-openmp.c (gfc_omp_privatize_by_reference): Support component
        refs.
        (gfc_trans_omp_array_section): New function, broken out of...
        (gfc_trans_omp_clauses): ...here.  Support component refs/derived
        types, attach and detach clauses.
        * trans.h (gfc_conv_component_ref, conv_parent_component_references,
        gfc_maybe_dereference_var): Add prototypes.

        gcc/testsuite/
        * gfortran.dg/goacc/derived-types.f90: New test.
        * gfortran.dg/goacc/derived-types-2.f90: New test.
        * gfortran.dg/goacc/derived-types-3.f90: New test.
        * gfortran.dg/goacc/data-clauses.f95: Adjust for expected errors.
        * gfortran.dg/goacc/enter-exit-data.f95: Likewise.

From-SVN: r279628

4 years agoOpenACC 2.6 deep copy: C and C++ front-end parts
Julian Brown [Fri, 20 Dec 2019 01:20:38 +0000 (01:20 +0000)]
OpenACC 2.6 deep copy: C and C++ front-end parts

gcc/c-family/
* c-common.h (c_omp_map_clause_name): Add prototype.
* c-omp.c (c_omp_map_clause_name): New function.
* c-pragma.h (pragma_omp_clause): Add PRAGMA_OACC_CLAUSE_ATTACH and
PRAGMA_OACC_CLAUSE_DETACH.

gcc/c/
* c-parser.c (c_parser_omp_clause_name): Add parsing of attach and
detach clauses.
(c_parser_omp_variable_list): Add ALLOW_DEREF optional parameter.
Allow deref (->) in variable lists if true.
(c_parser_omp_var_list_parens): Add ALLOW_DEREF optional parameter.
Pass to c_parser_omp_variable_list.
(c_parser_oacc_data_clause): Support attach and detach clauses.  Update
call to c_parser_omp_variable_list.
(c_parser_oacc_all_clauses): Support attach and detach clauses.
(OACC_DATA_CLAUSE_MASK, OACC_ENTER_DATA_CLAUSE_MASK,
OACC_KERNELS_CLAUSE_MASK, OACC_PARALLEL_CLAUSE_MASK,
OACC_SERIAL_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_ATTACH.
(OACC_EXIT_DATA_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_DETACH.
* c-typeck.c (handle_omp_array_sections_1): Reject subarrays for attach
and detach.  Support deref.
(handle_omp_array_sections): Use GOMP_MAP_ATTACH_DETACH instead of
GOMP_MAP_ALWAYS_POINTER for OpenACC.
(c_oacc_check_attachments): New function.
(c_finish_omp_clauses): Check attach/detach arguments for being
pointers using above.  Support deref.

gcc/cp/
* parser.c (cp_parser_omp_clause_name): Support attach and detach
clauses.
(cp_parser_omp_var_list_no_open): Add ALLOW_DEREF optional parameter.
Parse deref if true.
(cp_parser_omp_var_list): Add ALLOW_DEREF optional parameter.  Pass to
cp_parser_omp_var_list_no_open.
(cp_parser_oacc_data_clause): Support attach and detach clauses.
Update call to cp_parser_omp_var_list_no_open.
(cp_parser_oacc_all_clauses): Support attach and detach.
(OACC_DATA_CLAUSE_MASK, OACC_ENTER_DATA_CLAUSE_MASK,
OACC_KERNELS_CLAUSE_MASK, OACC_PARALLEL_CLAUSE_MASK,
OACC_SERIAL_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_ATTACH.
(OACC_EXIT_DATA_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_DETACH.
* semantics.c (handle_omp_array_sections_1): Reject subarrays for
attach and detach.
(handle_omp_array_sections): Use GOMP_MAP_ATTACH_DETACH instead of
GOMP_MAP_ALWAYS_POINTER for OpenACC.
(cp_oacc_check_attachments): New function.
(finish_omp_clauses): Use above function.  Allow structure fields and
class members to appear in OpenACC data clauses.  Support
GOMP_MAP_ATTACH_DETACH.  Support deref.

gcc/testsuite/
* c-c++-common/goacc/deep-copy-arrayofstruct.c: New test.
* c-c++-common/goacc/mdc-1.c: New test.
* c-c++-common/goacc/mdc-2.c: New test.
* gcc.dg/goacc/mdc.C: New test.

Co-Authored-By: Cesar Philippidis <cesar@codesourcery.com>
From-SVN: r279627

4 years agoOpenACC 2.6 deep copy: middle-end parts
Julian Brown [Fri, 20 Dec 2019 01:20:33 +0000 (01:20 +0000)]
OpenACC 2.6 deep copy: middle-end parts

gcc/
* gimplify.c (gimplify_omp_var_data): Add GOVD_MAP_HAS_ATTACHMENTS.
(insert_struct_comp_map): Support derived-type member mappings
for arrays with descriptors which use GOMP_MAP_TO_PSET.  Support
GOMP_MAP_ATTACH_DETACH.
(gimplify_scan_omp_clauses): Tidy up OACC_ENTER_DATA/OACC_EXIT_DATA
mappings.  Handle attach/detach clauses and component references.
(gimplify_adjust_omp_clauses_1): Skip adjustments for explicit
attach/detach clauses.
(gimplify_omp_target_update): Handle struct mappings and finalize for
detach operations.
* omp-low.c (lower_omp_target): Support GOMP_MAP_ATTACH,
GOMP_MAP_DETACH, GOMP_MAP_FORCE_DETACH.
* tree-pretty-print.c (dump_omp_clause): Likewise, plus
GOMP_MAP_ATTACH_DETACH.

include/
* gomp-constants.h (gomp_map_kind): Add GOMP_MAP_ATTACH_DETACH.

From-SVN: r279626

4 years agoOpenACC 2.6 deep copy: libgomp parts
Julian Brown [Fri, 20 Dec 2019 01:20:30 +0000 (01:20 +0000)]
OpenACC 2.6 deep copy: libgomp parts

include/
* gomp-constants.h (GOMP_MAP_FLAG_SPECIAL_4, GOMP_MAP_DEEP_COPY):
Define.
(gomp_map_kind): Add GOMP_MAP_ATTACH, GOMP_MAP_DETACH,
GOMP_MAP_FORCE_DETACH.

libgomp/
* libgomp.h (struct target_var_desc): Add do_detach flag.
* oacc-init.c (acc_shutdown_1): Free aux block if present.
* oacc-mem.c (find_group_last): Add SIZES parameter. Support
struct components.  Tidy up and add some new checks.
(goacc_enter_data_internal): Update call to find_group_last.
(goacc_exit_data_internal): Support detach operations and
GOMP_MAP_STRUCT.
(GOACC_enter_exit_data): Handle initial GOMP_MAP_STRUCT or
GOMP_MAP_FORCE_PRESENT in finalization detection code.  Handle
attach/detach in enter/exit data detection code.
* target.c (gomp_map_vars_existing): Initialise do_detach field of
tgt_var_desc.
(gomp_map_vars_internal): Support attach.
(gomp_unmap_vars_internal): Support detach.

From-SVN: r279625

4 years agoOpenACC 2.6 deep copy: attach/detach API routines
Julian Brown [Fri, 20 Dec 2019 01:20:27 +0000 (01:20 +0000)]
OpenACC 2.6 deep copy: attach/detach API routines

libgomp/
* libgomp.h (struct splay_tree_aux): Add attach_count field.
(gomp_attach_pointer, gomp_detach_pointer): Add prototypes.
* libgomp.map (OACC_2.6): New section. Add acc_attach,
acc_attach_async, acc_detach, acc_detach_async, acc_detach_finalize,
acc_detach_finalize_async.
* oacc-mem.c (acc_attach_async, acc_attach, goacc_detach_internal,
acc_detach, acc_detach_async, acc_detach_finalize,
acc_detach_finalize_async): New functions.
* openacc.h (acc_attach, acc_attach_async, acc_detach,
(acc_detach_async, acc_detach_finalize, acc_detach_finalize_async): Add
prototypes.
* target.c (gomp_attach_pointer, gomp_detach_pointer): New functions.
(gomp_remove_var_internal): Free attachment counts if present.
* testsuite/libgomp.oacc-c-c++-common/deep-copy-3.c: New test.
* testsuite/libgomp.oacc-c-c++-common/deep-copy-5.c: New test.

Co-Authored-By: Thomas Schwinge <thomas@codesourcery.com>
From-SVN: r279624

4 years agoFactor out duplicate code in gimplify_scan_omp_clauses
Julian Brown [Fri, 20 Dec 2019 01:20:23 +0000 (01:20 +0000)]
Factor out duplicate code in gimplify_scan_omp_clauses

gcc/
* gimplify.c (insert_struct_comp_map, extract_base_bit_offset): New.
(gimplify_scan_omp_clauses): Outline duplicated code into calls to
above two functions.

From-SVN: r279623