]> git.ipfire.org Git - thirdparty/gcc.git/log
thirdparty/gcc.git
6 years agoi386: Enable TM MMX intrinsics with SSE2
hjl [Wed, 15 May 2019 15:33:43 +0000 (15:33 +0000)] 
i386: Enable TM MMX intrinsics with SSE2

This patch enables TM MMX intrinsics with SSE2 when MMX is disabled.

PR target/89021
* config/i386/i386-builtins.c (bdesc_tm): Enable MMX intrinsics
with SSE2.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271253 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Allow MMX intrinsic emulation with SSE
hjl [Wed, 15 May 2019 15:32:33 +0000 (15:32 +0000)] 
i386: Allow MMX intrinsic emulation with SSE

Allow MMX intrinsic emulation with SSE/SSE2/SSSE3.  Don't enable MMX ISA
by default with TARGET_MMX_WITH_SSE.

For pr82483-1.c and pr82483-2.c, "-mssse3 -mno-mmx" compiles in 64-bit
mode since MMX intrinsics can be emulated wit SSE.

gcc/

PR target/89021
* config/i386/i386-builtin.def: Enable MMX intrinsics with
SSE/SSE2/SSSE3.
* config/i386/i386-builtins.c (ix86_init_mmx_sse_builtins):
Likewise.
* config/i386/i386-expand.c (ix86_expand_builtin): Allow
SSE/SSE2/SSSE3 to emulate MMX intrinsics with TARGET_MMX_WITH_SSE.
* config/i386/mmintrin.h: Only require SSE2 if __MMX_WITH_SSE__
is defined.

gcc/testsuite/

PR target/89021
* gcc.target/i386/pr82483-1.c: Error only on ia32.
* gcc.target/i386/pr82483-2.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271252 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Allow MMX vector expanders with TARGET_MMX_WITH_SSE
hjl [Wed, 15 May 2019 15:31:18 +0000 (15:31 +0000)] 
i386: Allow MMX vector expanders with TARGET_MMX_WITH_SSE

PR target/89021
* config/i386/mmx.md (*vec_dupv2sf): Changed to
define_insn_and_split to support SSE emulation.
(*vec_extractv2sf_0): Likewise.
(*vec_extractv2sf_1): Likewise.
(*vec_extractv2si_0): Likewise.
(*vec_extractv2si_1): Likewise.
(*vec_extractv2si_zext_mem): Likewise.
(vec_setv2sf): Also allow TARGET_MMX_WITH_SSE.
(vec_extractv2sf_1 splitter): Likewise.
(vec_extractv2sfsf): Likewise.
(vec_setv2si): Likewise.
(vec_extractv2si_1 splitter): Likewise.
(vec_extractv2sisi): Likewise.
(vec_setv4hi): Likewise.
(vec_extractv4hihi): Likewise.
(vec_setv8qi): Likewise.
(vec_extractv8qiqi): Likewise.
(vec_extractv2sfsf): Also allow TARGET_MMX_WITH_SSE.  Pass
TARGET_MMX_WITH_SSE ix86_expand_vector_extract.
(vec_extractv2sisi): Likewise.
(vec_extractv4hihi): Likewise.
(vec_extractv8qiqi): Likewise.
(vec_initv2sfsf): Also allow TARGET_MMX_WITH_SSE.  Pass
TARGET_MMX_WITH_SSE to ix86_expand_vector_init.
(vec_initv2sisi): Likewise.
(vec_initv4hihi): Likewise.
(vec_initv8qiqi): Likewise.
(vec_setv2si): Also allow TARGET_MMX_WITH_SSE.  Pass
TARGET_MMX_WITH_SSE to ix86_expand_vector_set.
(vec_setv4hi): Likewise.
(vec_setv8qi): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271251 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Allow MMXMODE moves with TARGET_MMX_WITH_SSE
hjl [Wed, 15 May 2019 15:30:32 +0000 (15:30 +0000)] 
i386: Allow MMXMODE moves with TARGET_MMX_WITH_SSE

PR target/89021
* config/i386/mmx.md (MMXMODE:mov<mode>): Also allow
TARGET_MMX_WITH_SSE.
(MMXMODE:*mov<mode>_internal): Likewise.
(MMXMODE:movmisalign<mode>): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271250 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPrevent allocation of MMX registers with TARGET_MMX_WITH_SSE
hjl [Wed, 15 May 2019 15:29:28 +0000 (15:29 +0000)] 
Prevent allocation of MMX registers with TARGET_MMX_WITH_SSE

2019-05-15  Uroš Bizjak  <ubizjak@gmail.com>

PR target/89021
* config/i386/i386.md (*zero_extendsidi2): Add mmx_isa attribute.
* config/i386/sse.md (sse2_cvtpi2pd): Ditto.
(sse2_cvtpd2pi): Ditto.
(sse2_cvttpd2pi): Ditto.
(*vec_concatv2sf_sse4_1): Ditto.
(*vec_concatv2sf_sse): Ditto.
(*vec_concatv2si_sse4_1): Ditto.
(*vec_concatv2si): Ditto.
(*vec_concatv4si_0): Ditto.
(*vec_concatv2di_0): Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271249 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX abs<mode>2 with SSE
hjl [Wed, 15 May 2019 15:28:04 +0000 (15:28 +0000)] 
i386: Emulate MMX abs<mode>2 with SSE

Emulate MMX abs<mode>2 with SSE.  Only SSE register source operand is
allowed.

PR target/89021
* config/i386/sse.md (abs<mode>2): Add SSE emulation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271248 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX ssse3_palignrdi with SSE
hjl [Wed, 15 May 2019 15:27:33 +0000 (15:27 +0000)] 
i386: Emulate MMX ssse3_palignrdi with SSE

Emulate MMX version of palignrq with SSE version by concatenating 2
64-bit MMX operands into a single 128-bit SSE operand, followed by
SSE psrldq.  Only SSE register source operand is allowed.

PR target/89021
* config/i386/sse.md (ssse3_palignrdi): Changed to
define_insn_and_split to support SSE emulation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271247 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX ssse3_psign<mode>3 with SSE
hjl [Wed, 15 May 2019 15:26:59 +0000 (15:26 +0000)] 
i386: Emulate MMX ssse3_psign<mode>3 with SSE

Emulate MMX ssse3_psign<mode>3 with SSE.  Only SSE register source operand
is allowed.

PR target/89021
* config/i386/sse.md (ssse3_psign<mode>3): Add SSE emulation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271246 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX pshufb with SSE version
hjl [Wed, 15 May 2019 15:26:19 +0000 (15:26 +0000)] 
i386: Emulate MMX pshufb with SSE version

Emulate MMX version of pshufb with SSE version by masking out the bit 3
of the shuffle control byte.  Only SSE register source operand is allowed.

PR target/89021
* config/i386/sse.md (ssse3_pshufbv8qi3): Changed to
define_insn_and_split.  Also allow TARGET_MMX_WITH_SSE.  Add
SSE emulation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271245 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX ssse3_pmulhrswv4hi3 with SSE
hjl [Wed, 15 May 2019 15:24:44 +0000 (15:24 +0000)] 
i386: Emulate MMX ssse3_pmulhrswv4hi3 with SSE

Emulate MMX ssse3_pmulhrswv4hi3 with SSE.  Only SSE register source
operand is allowed.

PR target/89021
* config/i386/sse.md (ssse3_pmulhrswv4hi3): Require TARGET_MMX
or TARGET_MMX_WITH_SSE.
(*ssse3_pmulhrswv4hi3): Add SSE emulation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271244 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX ssse3_pmaddubsw with SSE
hjl [Wed, 15 May 2019 15:23:49 +0000 (15:23 +0000)] 
i386: Emulate MMX ssse3_pmaddubsw with SSE

Emulate MMX ssse3_pmaddubsw with SSE.  Only SSE register source operand
is allowed.

PR target/89021
* config/i386/sse.md (ssse3_pmaddubsw): Add SSE emulation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271243 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX ssse3_ph<plusminus_mnemonic>dv2si3 with SSE
hjl [Wed, 15 May 2019 15:23:11 +0000 (15:23 +0000)] 
i386: Emulate MMX ssse3_ph<plusminus_mnemonic>dv2si3 with SSE

Emulate MMX ssse3_ph<plusminus_mnemonic>dv2si3 with SSE by moving bits
64:95 to bits 32:63 in SSE register.  Only SSE register source operand
is allowed.

PR target/89021
* config/i386/sse.md (ssse3_ph<plusminus_mnemonic>dv2si3):
Changed to define_insn_and_split to support SSE emulation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271242 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX ssse3_ph<plusminus_mnemonic>wv4hi3 with SSE
hjl [Wed, 15 May 2019 15:22:39 +0000 (15:22 +0000)] 
i386: Emulate MMX ssse3_ph<plusminus_mnemonic>wv4hi3 with SSE

Emulate MMX ssse3_ph<plusminus_mnemonic>wv4hi3 with SSE by moving bits
64:95 to bits 32:63 in SSE register.  Only SSE register source operand
is allowed.

PR target/89021
* config/i386/sse.md (ssse3_ph<plusminus_mnemonic>wv4hi3):
Changed to define_insn_and_split to support SSE emulation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271241 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Make _mm_empty () as NOP without MMX
hjl [Wed, 15 May 2019 15:22:08 +0000 (15:22 +0000)] 
i386: Make _mm_empty () as NOP without MMX

With SSE emulation of MMX intrinsics, we should make _mm_empty () as NOP
without MMX.

PR target/89021
* config/i386/mmx.md (mmx_<emms>): Renamed to ...
(*mmx_<emms>): This.
(mmx_<emms>): New expander.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271240 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX umulv1siv1di3 with SSE2
hjl [Wed, 15 May 2019 15:21:39 +0000 (15:21 +0000)] 
i386: Emulate MMX umulv1siv1di3 with SSE2

Emulate MMX umulv1siv1di3 with SSE2.  Only SSE register source operand
is allowed.

PR target/89021
* config/i386/mmx.md (sse2_umulv1siv1di3): Add SSE emulation
support.
(*sse2_umulv1siv1di3): Add SSE2 emulation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271239 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX movntq with SSE2 movntidi
hjl [Wed, 15 May 2019 15:21:04 +0000 (15:21 +0000)] 
i386: Emulate MMX movntq with SSE2 movntidi

Emulate MMX movntq with SSE2 movntidi.  Only register source operand is
allowed.

PR target/89021
* config/i386/mmx.md (sse_movntq): Add SSE2 emulation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271238 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX mmx_psadbw with SSE
hjl [Wed, 15 May 2019 15:20:28 +0000 (15:20 +0000)] 
i386: Emulate MMX mmx_psadbw with SSE

Emulate MMX mmx_psadbw with SSE.  Only SSE register source operand is
allowed.

PR target/89021
* config/i386/mmx.md (mmx_psadbw): Add SSE emulation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271237 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX mmx_uavgv4hi3 with SSE
hjl [Wed, 15 May 2019 15:19:55 +0000 (15:19 +0000)] 
i386: Emulate MMX mmx_uavgv4hi3 with SSE

Emulate MMX mmx_uavgv4hi3 with SSE.  Only SSE register source operand is
allowed.

PR target/89021
* config/i386/mmx.md (mmx_uavgv4hi3): Also check TARGET_MMX and
TARGET_MMX_WITH_SSE.
(*mmx_uavgv4hi3): Add SSE emulation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271236 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX mmx_uavgv8qi3 with SSE
hjl [Wed, 15 May 2019 15:19:19 +0000 (15:19 +0000)] 
i386: Emulate MMX mmx_uavgv8qi3 with SSE

Emulate MMX mmx_uavgv8qi3 with SSE.  Only SSE register source operand is
allowed.

PR target/89021
* config/i386/mmx.md (mmx_uavgv8qi3): Also check TARGET_MMX
and TARGET_MMX_WITH_SSE.
(*mmx_uavgv8qi3): Add SSE emulation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271235 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX maskmovq with SSE2 maskmovdqu
hjl [Wed, 15 May 2019 15:18:41 +0000 (15:18 +0000)] 
i386: Emulate MMX maskmovq with SSE2 maskmovdqu

Emulate MMX maskmovq with SSE2 maskmovdqu for TARGET_MMX_WITH_SSE by
zero-extending source and mask operands to 128 bits.  Handle unmapped
bits 64:127 at memory address by adjusting source and mask operands
together with memory address.

PR target/89021
* config/i386/xmmintrin.h: Emulate MMX maskmovq with SSE2
maskmovdqu for __MMX_WITH_SSE__.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271234 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX mmx_umulv4hi3_highpart with SSE
hjl [Wed, 15 May 2019 15:17:25 +0000 (15:17 +0000)] 
i386: Emulate MMX mmx_umulv4hi3_highpart with SSE

Emulate MMX mmx_umulv4hi3_highpart with SSE.  Only SSE register source
operand is allowed.

PR target/89021
* config/i386/mmx.md (mmx_umulv4hi3_highpart): Also check
TARGET_MMX and TARGET_MMX_WITH_SSE.
(*mmx_umulv4hi3_highpart): Add SSE emulation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271233 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX mmx_pmovmskb with SSE
hjl [Wed, 15 May 2019 15:16:27 +0000 (15:16 +0000)] 
i386: Emulate MMX mmx_pmovmskb with SSE

Emulate MMX mmx_pmovmskb with SSE by zero-extending result of SSE pmovmskb
from QImode to SImode.  Only SSE register source operand is allowed.

PR target/89021
* config/i386/mmx.md (mmx_pmovmskb): Changed to
define_insn_and_split to support SSE emulation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271232 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX V4HI smaxmin/V8QI umaxmin with SSE
hjl [Wed, 15 May 2019 15:15:44 +0000 (15:15 +0000)] 
i386: Emulate MMX V4HI smaxmin/V8QI umaxmin with SSE

Emulate MMX V4HI smaxmin/V8QI umaxmin with SSE.  Only SSE register source
operand is allowed.

PR target/89021
* config/i386/mmx.md (mmx_<code>v4hi3): Also check TARGET_MMX
and TARGET_MMX_WITH_SSE.
(mmx_<code>v8qi3): Likewise.
(smaxmin:<code>v4hi3): New.
(umaxmin:<code>v8qi3): Likewise.
(smaxmin:*mmx_<code>v4hi3): Add SSE emulation.
(umaxmin:*mmx_<code>v8qi3): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271231 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX mmx_pinsrw with SSE
hjl [Wed, 15 May 2019 15:14:03 +0000 (15:14 +0000)] 
i386: Emulate MMX mmx_pinsrw with SSE

Emulate MMX mmx_pinsrw with SSE.  Only SSE register destination operand
is allowed.

PR target/89021
* config/i386/mmx.md (mmx_pinsrw): Also check TARGET_MMX and
TARGET_MMX_WITH_SSE.
(*mmx_pinsrw): Add SSE emulation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271230 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX mmx_pextrw with SSE
hjl [Wed, 15 May 2019 15:13:31 +0000 (15:13 +0000)] 
i386: Emulate MMX mmx_pextrw with SSE

Emulate MMX mmx_pextrw with SSE.  Only SSE register source operand is
allowed.

PR target/89021
* config/i386/mmx.md (mmx_pextrw): Add SSE emulation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271229 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX sse_cvtpi2ps with SSE
hjl [Wed, 15 May 2019 15:12:47 +0000 (15:12 +0000)] 
i386: Emulate MMX sse_cvtpi2ps with SSE

Emulate MMX sse_cvtpi2ps with SSE2 cvtdq2ps, preserving upper 64 bits of
destination XMM register.  Only SSE register source operand is allowed.

PR target/89021
* config/i386/sse.md (sse_cvtpi2ps): Changed to
define_insn_and_split.  Also allow TARGET_MMX_WITH_SSE.  Add
SSE emulation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271228 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX sse_cvtps2pi/sse_cvttps2pi with SSE
hjl [Wed, 15 May 2019 15:12:14 +0000 (15:12 +0000)] 
i386: Emulate MMX sse_cvtps2pi/sse_cvttps2pi with SSE

Emulate MMX sse_cvtps2pi/sse_cvttps2pi with SSE.

PR target/89021
* config/i386/sse.md (sse_cvtps2pi): Add SSE emulation.
(sse_cvttps2pi): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271227 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX pshufw with SSE
hjl [Wed, 15 May 2019 15:11:41 +0000 (15:11 +0000)] 
i386: Emulate MMX pshufw with SSE

Emulate MMX pshufw with SSE.  Only SSE register source operand is allowed.

PR target/89021
* config/i386/mmx.md (mmx_pshufw): Also check TARGET_MMX and
TARGET_MMX_WITH_SSE.
(mmx_pshufw_1): Add SSE emulation.
(*vec_dupv4hi): Changed to define_insn_and_split and also allow
TARGET_MMX_WITH_SSE to support SSE emulation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271226 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX vec_dupv2si with SSE
hjl [Wed, 15 May 2019 15:11:07 +0000 (15:11 +0000)] 
i386: Emulate MMX vec_dupv2si with SSE

Emulate MMX vec_dupv2si with SSE.  Add the "Yw" constraint to allow
broadcast from integer register for AVX512BW with TARGET_AVX512VL.
Only SSE register source operand is allowed.

PR target/89021
* config/i386/constraints.md (Yw): New constraint.
* config/i386/mmx.md (*vec_dupv2si): Changed to
define_insn_and_split and also allow TARGET_MMX_WITH_SSE to
support SSE emulation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271225 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX mmx_eq/mmx_gt<mode>3 with SSE
hjl [Wed, 15 May 2019 15:10:32 +0000 (15:10 +0000)] 
i386: Emulate MMX mmx_eq/mmx_gt<mode>3 with SSE

Emulate MMX mmx_eq/mmx_gt<mode>3 with SSE.  Only SSE register source
operand is allowed.

PR target/89021
* config/i386/mmx.md (mmx_eq<mode>3): Also allow
TARGET_MMX_WITH_SSE.
(*mmx_eq<mode>3): Also allow TARGET_MMX_WITH_SSE.  Add SSE
support.
(mmx_gt<mode>3): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271224 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX mmx_andnot<mode>3 with SSE
hjl [Wed, 15 May 2019 15:09:50 +0000 (15:09 +0000)] 
i386: Emulate MMX mmx_andnot<mode>3 with SSE

Emulate MMX mmx_andnot<mode>3 with SSE.  Only SSE register source operand
is allowed.

PR target/89021
* config/i386/mmx.md (mmx_andnot<mode>3): Also allow
TARGET_MMX_WITH_SSE.  Add SSE support.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271223 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX <any_logic><mode>3 with SSE
hjl [Wed, 15 May 2019 15:09:19 +0000 (15:09 +0000)] 
i386: Emulate MMX <any_logic><mode>3 with SSE

Emulate MMX <any_logic><mode>3 with SSE.  Only SSE register source
operand is allowed.

PR target/89021
* config/i386/mmx.md (any_logic:mmx_<code><mode>3): Also allow
TARGET_MMX_WITH_SSE.
(any_logic:<code><mode>3): New.
(any_logic:*mmx_<code><mode>3): Also allow TARGET_MMX_WITH_SSE.
Add SSE support.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271222 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX ashr<mode>3/<shift_insn><mode>3 with SSE
hjl [Wed, 15 May 2019 15:08:38 +0000 (15:08 +0000)] 
i386: Emulate MMX ashr<mode>3/<shift_insn><mode>3 with SSE

Emulate MMX ashr<mode>3/<shift_insn><mode>3 with SSE.  Only SSE register
source operand is allowed.

PR target/89021
* config/i386/mmx.md (mmx_ashr<mode>3): Also allow
TARGET_MMX_WITH_SSE.  Add SSE emulation.
(mmx_<shift_insn><mode>3): Likewise.
(ashr<mode>3): New.
(<shift_insn><mode>3): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271221 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX mmx_pmaddwd with SSE
hjl [Wed, 15 May 2019 15:08:04 +0000 (15:08 +0000)] 
i386: Emulate MMX mmx_pmaddwd with SSE

Emulate MMX pmaddwd with SSE.  Only SSE register source operand is
allowed.

PR target/89021
* config/i386/mmx.md (mmx_pmaddwd): Also allow TARGET_MMX_WITH_SSE.
(*mmx_pmaddwd): Also allow TARGET_MMX_WITH_SSE.  Add SSE support.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271220 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX smulv4hi3_highpart with SSE
hjl [Wed, 15 May 2019 15:07:04 +0000 (15:07 +0000)] 
i386: Emulate MMX smulv4hi3_highpart with SSE

Emulate MMX mulv4hi3 with SSE.  Only SSE register source operand is
allowed.

PR target/89021
* config/i386/mmx.md (mmx_smulv4hi3_highpart): Also allow
TARGET_MMX_WITH_SSE.
(*mmx_smulv4hi3_highpart): Also allow TARGET_MMX_WITH_SSE. Add
SSE support.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271219 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX mulv4hi3 with SSE
hjl [Wed, 15 May 2019 15:06:28 +0000 (15:06 +0000)] 
i386: Emulate MMX mulv4hi3 with SSE

Emulate MMX mulv4hi3 with SSE.  Only SSE register source operand is
allowed.

PR target/89021
* config/i386/mmx.md (mmx_mulv4hi3): Also allow
TARGET_MMX_WITH_SSE.
(mulv4hi3): New.
(*mmx_mulv4hi3): Also allow TARGET_MMX_WITH_SSE.  Add SSE
support.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271218 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX plusminus/sat_plusminus with SSE
hjl [Wed, 15 May 2019 15:05:48 +0000 (15:05 +0000)] 
i386: Emulate MMX plusminus/sat_plusminus with SSE

Emulate MMX plusminus/sat_plusminus with SSE.  Only SSE register source
operand is allowed.

PR target/89021
* config/i386/mmx.md (MMXMODEI8): Require TARGET_SSE2 for V1DI.
(plusminus:mmx_<plusminus_insn><mode>3): Check
TARGET_MMX_WITH_SSE.
(sat_plusminus:mmx_<plusminus_insn><mode>3): Likewise.
(<plusminus_insn><mode>3): New.
(*mmx_<plusminus_insn><mode>3): Add SSE emulation.
(*mmx_<plusminus_insn><mode>3): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271217 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX punpcklXX/punpckhXX with SSE punpcklXX
hjl [Wed, 15 May 2019 15:05:07 +0000 (15:05 +0000)] 
i386: Emulate MMX punpcklXX/punpckhXX with SSE punpcklXX

Emulate MMX punpcklXX/punpckhXX with SSE punpcklXX.  For MMX punpckhXX,
move bits 64:127 to bits 0:63 in SSE register.  Only SSE register source
operand is allowed.

PR target/89021
* config/i386/i386-expand.c (ix86_split_mmx_punpck): New function.
* config/i386/i386-protos.h (ix86_split_mmx_punpck): New
prototype.
* config/i386/mmx.m (mmx_punpckhbw): Changed to
define_insn_and_split to support SSE emulation.
(mmx_punpcklbw): Likewise.
(mmx_punpckhwd): Likewise.
(mmx_punpcklwd): Likewise.
(mmx_punpckhdq): Likewise.
(mmx_punpckldq): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271216 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Emulate MMX packsswb/packssdw/packuswb with SSE2
hjl [Wed, 15 May 2019 15:04:08 +0000 (15:04 +0000)] 
i386: Emulate MMX packsswb/packssdw/packuswb with SSE2

Emulate MMX packsswb/packssdw/packuswb with SSE packsswb/packssdw/packuswb
plus moving bits 64:95 to bits 32:63 in SSE register.  Only SSE register
source operand is allowed.

PR target/89021
* config/i386/i386-expand.c (ix86_move_vector_high_sse_to_mmx):
New function.
(ix86_split_mmx_pack): Likewise.
* config/i386/i386-protos.h (ix86_move_vector_high_sse_to_mmx):
New prototype.
(ix86_split_mmx_pack): Likewise.
* config/i386/i386.md (mmx_isa): New.
(enabled): Also check mmx_isa.
* config/i386/mmx.md (any_s_truncate): New code iterator.
(s_trunsuffix): New code attr.
(mmx_packsswb): Removed.
(mmx_packssdw): Likewise.
(mmx_packuswb): Likewise.
(mmx_pack<s_trunsuffix>swb): New define_insn_and_split to emulate
MMX packsswb/packuswb with SSE2.
(mmx_packssdw): Likewise.
* config/i386/predicates.md (register_mmxmem_operand): New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271215 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoi386: Allow MMX register modes in SSE registers
hjl [Wed, 15 May 2019 15:02:54 +0000 (15:02 +0000)] 
i386: Allow MMX register modes in SSE registers

In 64-bit mode, SSE2 can be used to emulate MMX instructions without
3DNOW.  We can use SSE2 to support MMX register modes.

PR target/89021
* config/i386/i386-c.c (ix86_target_macros_internal): Define
__MMX_WITH_SSE__ for TARGET_MMX_WITH_SSE.
* config/i386/i386.c (ix86_set_reg_reg_cost): Add support for
TARGET_MMX_WITH_SSE with VALID_MMX_REG_MODE.
(ix86_vector_mode_supported_p): Likewise.
* config/i386/i386.h (TARGET_MMX_WITH_SSE): New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271213 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agolto-plugin, removed unused variable
iains [Wed, 15 May 2019 14:10:27 +0000 (14:10 +0000)] 
lto-plugin, removed unused variable

2019-05-15  Iain Sandoe  <iain@sandoe.co.uk>

* lto-plugin.c (cleanup_handler): Remove unused var.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271212 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2019-05-15 Paolo Carlini <paolo.carlini@oracle.com>
paolo [Wed, 15 May 2019 13:46:29 +0000 (13:46 +0000)] 
2019-05-15  Paolo Carlini  <paolo.carlini@oracle.com>

* call.c (perform_overload_resolution, build_new_method_call_1):
Use OVL_P; remove redundant TEMPLATE_DECL checks.
* decl.c (grokfndecl): Likewise.
* mangle.c (write_expression): Likewise.
* parser.c (cp_parser_template_id): Likewise.
* pt.c (resolve_overloaded_unification, type_dependent_expression_p):
Likewise.
* search.c (build_baselink): Likewise.
* tree.c (is_overloaded_fn, dependent_name, maybe_get_fns): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271211 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoCheck for overflow in tree-switch-conversion (PR middle-end/90478).
marxin [Wed, 15 May 2019 12:58:53 +0000 (12:58 +0000)] 
Check for overflow in tree-switch-conversion (PR middle-end/90478).

2019-05-15  Martin Liska  <mliska@suse.cz>

PR middle-end/90478
* tree-switch-conversion.c (jump_table_cluster::can_be_handled):
Check for overflow.
2019-05-15  Martin Liska  <mliska@suse.cz>

PR middle-end/90478
* gcc.dg/tree-ssa/pr90478-2.c: New test.
* gcc.dg/tree-ssa/pr90478.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271210 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2019-05-15 Richard Biener <rguenther@suse.de>
rguenth [Wed, 15 May 2019 12:57:32 +0000 (12:57 +0000)] 
2019-05-15  Richard Biener  <rguenther@suse.de>

* tree-into-ssa.c (pass_build_ssa::execute): Run
update_address_taken before going into SSA.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271209 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2019-05-15 Richard Biener <rguenther@suse.de>
rguenth [Wed, 15 May 2019 12:51:58 +0000 (12:51 +0000)] 
2019-05-15  Richard Biener  <rguenther@suse.de>

c/
* gimple-parser.c (c_parser_gimple_postfix_expression): Handle
__BIT_FIELD_REF.

* tree-pretty-print.c (dump_generic_node): Dump BIT_FIELD_REF
as __BIT_FIELD_REF with type with -gimple.

* gcc.dg/gimplefe-40.c: Amend.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271208 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agotree-ssa-uninit: clean up is_value_included_in
amonakov [Wed, 15 May 2019 12:40:04 +0000 (12:40 +0000)] 
tree-ssa-uninit: clean up is_value_included_in

2019-05-15  Vladislav Ivanishin  <vlad@ispras.ru>

* tree-ssa-uninit.c (is_value_included_in): Remove is_unsigned and merge
semantically equivalent branches (left over after prior refactorings).

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271207 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2019-05-15 Richard Biener <rguenther@suse.de>
rguenth [Wed, 15 May 2019 12:14:01 +0000 (12:14 +0000)] 
2019-05-15  Richard Biener  <rguenther@suse.de>

PR c/90474
* c-common.c (c_common_mark_addressable_vec): Also mark
a COMPOUND_LITERAL_EXPR_DECL addressable similar to
c_mark_addressable.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271206 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agodarwin, testsuite, powerpc - handle tests for new processors.
iains [Wed, 15 May 2019 11:47:04 +0000 (11:47 +0000)] 
darwin, testsuite, powerpc - handle tests for new processors.

If we build Darwin with a modern assembler, then it might well
recognise insns that cannot be used on current Darwin systems.

The patch augments the tests for feature support for VSX,
power8 and power9 to exclude Darwin even if the assembler can
handle the instructions.

2019-05-15  Iain Sandoe  <iain@sandoe.co.uk>

* lib/target-supports.exp
(check_effective_target_powerpc_p8vector_ok): No support for Darwin.
(check_effective_target_powerpc_p9vector_ok): Likewise.
(check_effective_target_powerpc_float128_sw_ok): Likewise.
(check_effective_target_powerpc_float128_hw_ok): Likewise.
(check_effective_target_powerpc_vsx_ok): Likewise.
* gcc.target/powerpc/bfp/bfp.exp: Don't try to run this for Darwin.
* gcc.target/powerpc/dfp/dfp.exp: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271205 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2019-05-15 Richard Biener <rguenther@suse.de>
rguenth [Wed, 15 May 2019 09:59:37 +0000 (09:59 +0000)] 
2019-05-15  Richard Biener  <rguenther@suse.de>

PR tree-optimization/88828
* tree-ssa-forwprop.c (simplify_vector_constructor): Fix
bogus check.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271204 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2019-05-14 Richard Biener <rguenther@suse.de>
rguenth [Wed, 15 May 2019 09:18:15 +0000 (09:18 +0000)] 
2019-05-14  Richard Biener  <rguenther@suse.de>

* gimple-parser.c (c_parser_gimple_statement): Remove
questionable auto-promotion to VIEW_CONVERT_EXPR.
(c_parser_gimple_typespec): Split out from __MEM parsing.
(c_parser_gimple_postfix_expression): Handle __VIEW_CONVERT.
* tree-pretty-print.c (dump_generic_node): Dump VIEW_CONVERT_EXPR
as __VIEW_CONVERT with -gimple.

* gcc.dg/gimplefe-40.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271203 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agolto-plugin - support -save-temps, -v, --version.
iains [Wed, 15 May 2019 09:12:21 +0000 (09:12 +0000)] 
lto-plugin - support -save-temps, -v, --version.

This patch makes the lto-plugin follow the same approach
to save-temps as collect2.

-save-temps causes the temp file to be named meaningfully,
and for the relevant input files to be saved in CWD.

-v, —version causes the save actions to be output to stderr.

one can get this to happen by just putting -save-temps, -v on
the regular link line or (for compatibility with the way the
 -debug flag works) by appending -plugin-opt=-save-temps, etc.

lto-plugin/

2019-05-15  Iain Sandoe  <iain@sandoe.co.uk>

* lto-plugin.c (exec_lto_wrapper): Make the wrapper
arguments filename more user-friendly.
(file_exists, maybe_unlink): New.
(cleanup_handler): Use maybe unlink to handle the
case when temps should be saved.
(process_option): Look for -v, —-version, -save-temps.
(onload): Record the linker output file name.
Check for -v, —-version, -save-temps in the GCC collect
options environment.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271202 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoadd missing Changelog for last commit.
iains [Wed, 15 May 2019 07:16:02 +0000 (07:16 +0000)] 
add missing Changelog for last commit.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271201 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agodarwin, testsuite, ppc FIX PR87600
iains [Wed, 15 May 2019 07:15:22 +0000 (07:15 +0000)] 
darwin, testsuite, ppc FIX PR87600

The test fails on PPC Darwin because we emit
__POWERPC__ instead of __powerpc__ fixed by allowing
for both.

2019-05-15  Iain Sandoe  <iain@sandoe.co.uk>

* gcc.dg/pr87600.h: Add __POWERPC__ as an alternate test
for PowerPC platforms.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271200 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agodarwin, testsuite, laste piece to fix PR82920
iains [Wed, 15 May 2019 07:10:04 +0000 (07:10 +0000)] 
darwin, testsuite, laste piece to fix PR82920

These ae test adjustments to the scan assembler strings
mostly just to catch missing __USER_LABEL_PREFIX__s  on
symbols.

2019-05-15  Iain Sandoe  <iain@sandoe.co.uk>

PR target/82920
* g++.dg/cet-notrack-1.C: Adjust scan assembler for Darwin.
* gcc.target/i386/cet-notrack-5a.c: Likewise.
* gcc.target/i386/cet-notrack-5b.c: Likewise.
* gcc.target/i386/cet-notrack-6b.c: Likewise.
* gcc.target/i386/cet-notrack-icf-1.c: Likewise.
* gcc.target/i386/cet-notrack-icf-2.c: Likewise.
* gcc.target/i386/cet-notrack-icf-3.c: Likewise.
* gcc.target/i386/cet-notrack-icf-4.c: Likewise.
* gcc.target/i386/cet-sjlj-3.c: Likewise.
* gcc.target/i386/cet-sjlj-5.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271199 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Wed, 15 May 2019 00:16:16 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271197 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR c++/68918
mpolacek [Tue, 14 May 2019 21:19:01 +0000 (21:19 +0000)] 
PR c++/68918
* g++.dg/cpp0x/decltype71.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271193 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR c++/70156
mpolacek [Tue, 14 May 2019 21:10:58 +0000 (21:10 +0000)] 
PR c++/70156
* g++.dg/init/static5.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271192 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agodarwin, testsuite, fix more PR 82920
iains [Tue, 14 May 2019 20:36:18 +0000 (20:36 +0000)] 
darwin, testsuite, fix more PR 82920

Darwin doesn't support mx32, and some tests were
failing because it was trying to do them.  When we
disable this it turns out that quite a few tests
requiring mx32 support were not guarded.

gcc/

2019-05-14  Iain Sandoe  <iain@sandoe.co.uk>

PR target/82920
* config/i386/darwin.h (CC1_SPEC): Report -mx32 as an error for
Darwin.

gcc/testsuite/

2019-05-14  Iain Sandoe  <iain@sandoe.co.uk>

PR target/82920
* gcc.target/i386/cet-sjlj-6b.c: Require effective target x32.
* gcc.target/i386/pr52146.c: Likewise.
* gcc.target/i386/pr52698.c: Likewise.
* gcc.target/i386/pr52857-1.c: Likewise.
* gcc.target/i386/pr52857-2.c: Likewise.
* gcc.target/i386/pr52876.c: Likewise.
* gcc.target/i386/pr53698.c: Likewise.
* gcc.target/i386/pr54157.c: Likewise.
* gcc.target/i386/pr55049-1.c: Likewise.
* gcc.target/i386/pr55093.c: Likewise.
* gcc.target/i386/pr55116-1.c: Likewise.
* gcc.target/i386/pr55116-2.c: Likewise.
* gcc.target/i386/pr55597.c: Likewise.
* gcc.target/i386/pr59929.c: Likewise.
* gcc.target/i386/pr66470.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271190 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix NullablePointer test utility
redi [Tue, 14 May 2019 20:01:28 +0000 (20:01 +0000)] 
Fix NullablePointer test utility

* testsuite/util/testsuite_allocator.h (NullablePointer::operator bool):
Fix return value.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271189 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agors6000: Make eh_set_lr_<mode> a define_insn_and_split
segher [Tue, 14 May 2019 17:34:00 +0000 (17:34 +0000)] 
rs6000: Make eh_set_lr_<mode> a define_insn_and_split

* config/rs6000/rs6000.md (eh_set_lr_<mode>): Merge with following
define_split to become a define_insn_and_split.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271185 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agors6000: New enum epilogue_type
segher [Tue, 14 May 2019 17:33:10 +0000 (17:33 +0000)] 
rs6000: New enum epilogue_type

We currently call rs6000_emit_epilogue with a boolean parameter saying
if this is for a sibcall.  We also need to create epilogues for
eh_return.  This isn't yet indicated directly: instead, we get an
eh_return epilogue if crtl->calls_eh_return and this is not a sibcall.

This patch changes things so there is a three-way enum argument.

What is called "normal" now can still actually be "eh_return".  The
rs6000_emit_epilogue function still uses an "int sibcall" variable
internally.

* config/rs6000/rs6000-protos.h (rs6000_emit_epilogue): Change
arguments.
* config/rs6000/rs6000.c (rs6000_emit_epilogue): Change arguments.
* config/rs6000/rs6000.md (epilogue_type): New define_enum.
(sibcall_epilogue): Adjust.
(epilogue): Adjust.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271184 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoRemove obsolete Solaris 10 support
ro [Tue, 14 May 2019 17:17:23 +0000 (17:17 +0000)] 
Remove obsolete Solaris 10 support

libstdc++-v3:
* config/os/solaris/solaris2.10: Move to ...
* config/os/solaris: ... this.
* configure.host (os_include_dir): Adapt.
(abi_baseline_pair): Remove Solaris 10 handling.
* config/abi/post/i386-solaris2.10: Remove.
* config/abi/post/sparc-solaris2.10: Remove.
* config/abi/post/i386-solaris2.11: Rename to ...
* config/abi/post/i386-solaris: ... this.
* config/abi/post/sparc-solaris2.11: Rename to ...
* config/abi/post/sparc-solaris: ... this.

* libsupc++/new_opa.cc [_GLIBCXX_HAVE_MEMALIGN] [__sun]: Remove
workaround.

* testsuite/ext/enc_filebuf/char/13598.cc: Remove *-*-solaris2.10
xfail.

libsanitizer:
* configure.ac (have_dl_iterate_phdr): Remove *-*-solaris2.10*
handling.
* configure: Regenerate.

libgcc:
* config.host: Simplify various *-*-solaris2.1[0-9]* to
*-*-solaris2*.
* configure.ac: Likewise.
* configure: Regenerate.

* config/i386/sol2-unwind.h (x86_fallback_frame_state): Remove
Solaris 10 and Solaris 11 < snv_125 handling.

libbacktrace:
* configure.ac (have_dl_iterate_phdr): Remove *-*-solaris2.10*
handling.
* configure: Regenerate.

gcc/testsuite:
* gcc.dg/atomic/c11-atomic-exec-4.c: Simplify triplet to
*-*-solaris2*.
* gcc.dg/atomic/c11-atomic-exec-5.c: Likewise.
* gcc.dg/c99-math-double-1.c: Likewise.
* gcc.dg/c99-math-float-1.c: Likewise.
* gcc.dg/c99-math-long-double-1.c: Likewise.
* gcc.misc-tests/linkage.exp: Simplify triplet to
x86_64-*-solaris2*.

* gcc.target/i386/mcount_pic.c: Remove *-*-solaris2.10* && !gld
xfail.
* gcc.target/i386/pr63620.c: Likewise.

* lib/target-supports.exp (check_sse_os_support_available): Remove
Solaris 9/x86 workaround.

gcc:
* config.gcc: Move *-*-solaris2.10* from obsolete configurations
to unsupported ones.
Simplify x86_64-*-solaris2.1[0-9]* to x86_64-*-solaris2*.
* config.host: Likewise.
* config/i386/sol2.h (ASM_COMMENT_START): Remove.
* config/sparc/driver-sparc.c (host_detect_local_cpu) [__sun__ &&
__svr4__]: Remove "brand" fallback.
[!KSTAT_DATA_STRING]: Remove.
* configure.ac (gcc_cv_ld_hidden): Simplify *-*-solaris2.1[0-9]*
to *-*-solaris2*.
(comdat_group): Likewise.
(set_have_as_tls): Likewise.
(gcc_cv_target_dl_iterate_phdr): Likewise.
(gcc_cv_as_shf_merge): Remove Solaris 10/x86 workaround.
(gcc_cv_ld_aligned_shf_merge): Remove Solaris 10/SPARC workaround.
* configure: Regenerate.
* doc/install.texi: Simplify Solaris target triplets.
(Specific, i?86-*-solaris2*): Remove Solaris 10 references.
(Specific, *-*-solaris2*): Document Solaris 10 removal.
Remove Solaris 10 references.
Remove obsolete Solaris bug reference.
(Specific, sparc-sun-solaris2.10): Remove.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271183 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoAdd __raw_visit and __raw_idx_visit, use INVOKE<R>
redi [Tue, 14 May 2019 16:46:07 +0000 (16:46 +0000)] 
Add __raw_visit and __raw_idx_visit, use INVOKE<R>

This change simplifies visitation for variants, by using INVOKE<R> for
the visit<R> form, and explicitly specifying the tag types for raw
visitation, instead of inferring them from the return types of the
lambda functions used as visitors.

* include/std/variant (__visit_with_index): Remove typedef.
(__deduce_visit_result): New tag type.
(__raw_visit, __raw_idx_visit): New helper functions for "raw"
visitation of possibly-valueless variants, forwarding to __do_visit
with the relevant tag type.
(_Variant_storage<false, _Types...>::_M_reset_impl): Use __raw_visit
and make lambda return void.
(__variant_construct): Likewise.
(_Copy_assign_base::operator=, _Move_assign_base::operator=): Use
__raw_idx_visit and make lambda return void.
(_Multi_array::__untag_result): Add metafunction to check the function
pointer type for a tag type that dictates the kind of visitation.
(_Multi_array<_Ret(*)(_Visitor, _Variants...), __first, __rest...>):
Use decltype(auto) instead of tagged function pointer type.
(__gen_vtable_impl): Remove bool non-type parameter and unused
_Variant_tuple parameter.
(__gen_vtable_impl::__visit_invoke_impl): Remove.
(__gen_vtable_impl::__do_visit_invoke): Remove.
(__gen_vtable_impl::__do_visit_invoke_r): Remove.
(__gen_vtable_impl::__visit_invoke): Use if-constexpr and __invoke_r
for the visit<R> case, rather than dispatching to separate functions.
(_VARIANT_RELATION_FUNCTION_TEMPLATE): Use __raw_idx_visit and make
lambda return void.
(variant::swap): Likewise.
(__do_visit): Replace two non-type template parameters with a single
type parameter, so that the caller must specify the visitor's return
type (or one of the tag types).
(visit): Deduce a return type from the visitor and use the
__deduce_visit_result tag to enforce that all overloads return the
same type.
(visit<R>): Call __do_visit<R> with explicit result type.
(__variant_hash_call_base_impl::operator()): Use __raw_visit and make
lambda return void.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271182 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * config/i386/i386.md (any_div): New code iterator.
uros [Tue, 14 May 2019 16:18:06 +0000 (16:18 +0000)] 
* config/i386/i386.md (any_div): New code iterator.
(paired_mod): New code attribute.
(sgnprefix): Handle DIV and UDIV RTXes.
(u): Ditto.
(<u>divmod<mode>4): Macroize expander from divmod<mode>4
and udivmod<mode>4 patterns using any_div code iterator.
(divmod splitters): Macroize splitters using any_div code iterator.
(*udivmodsi4_pow2_zext_1): Use exactl_log2 in insn condition.
(*udivmodsi4_pow2_zext_2): Ditto.
(*<u>divmod<mode>4_noext): Macroize insn from *divmod<mode>4_noext
and *udivmod<mode>4_noext patterns using any_div code iterator.
(*<u>divmod<mode>4_noext_zext_1): Macroize insn from
*divmod<mode>4_noext_zext_1 and *udivmod<mode>4_noext_zext_1
patterns using any_div code iterator.
(*<u>divmod<mode>4_noext_zext_2): Macroize insn from
*divmod<mode>4_noext_zext_2 and *udivmod<mode>4_noext_zext_2
patterns using any_div code iterator.
(<u>divmodhiqi3): Macroize insn from divmodhiqi3 and
udivmodhiqi3 patterns using any_extend code iterator.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271179 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agononesuch is insufficiently useless (lwg2996)
redi [Tue, 14 May 2019 15:48:27 +0000 (15:48 +0000)] 
nonesuch is insufficiently useless (lwg2996)

2019-05-14  Nina Dinka Ranns  <dinka.ranns@gmail.com>

nonesuch is insufficiently useless (lwg2996)
* include/std/type_traits (struct __nonesuch): Added private base
class to make __nonesuch not an aggregate and removed deleted default
constructor.
* include/bits/stl_pair.h (struct __nonesuch_no_braces): Removed.
(operator=(const pair&)): Use __nonesuch instead of
__nonesuch_no_braces.
(operator=(pair&&)): Likewise
* include/std/tuple (operator=(const tuple&)): Use __nonesuch instead
of __nonesuch_no_braces.
(operator=(tuple&&)): Likewise
* include/experimental/type_traits (struct nonesuch): Added private
base class to make nonesuch not an aggregate and removed deleted
default constructor.
* testsuite/20_util/nonesuch/nonesuch.cc: New.
* testsuite/experimental/type_traits/nonesuch.cc: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271175 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoUse INVOKE<R> in std::function, std::bind and std::packaged_task
redi [Tue, 14 May 2019 15:25:08 +0000 (15:25 +0000)] 
Use INVOKE<R> in std::function, std::bind and std::packaged_task

As well as simpifying the code by removing duplication, this means that
we only need to touch std::__invoke_r if we need to implement changes to
INVOKE<R>, such as those in P0932R0.

* include/bits/std_function.h (_Simple_type_wrapper): Remove.
(_Function_handler): Remove partial specializations for void return
types and pointers to member.
(_Function_handler::_M_manager): Adapt to removal of
_Simple_type_wrapper.
(_Function_handler::_M_invoke): Use __invoke_r instead of __invoke.
* include/std/functional (_Bind_result::__enable_if_void)
(_Bind_result::__disable_if_void): Remove sfinae helpers.
(_Bind_result::__call): Use __invoke_r and remove overloads for void
return types.
* include/std/future (__future_base::_Task_state::_M_run)
(__future_base::_Task_state::_M_run_delayed): Use __invoke_r and
change return type of lambda expressions.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271174 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDefine std::__invoke_r for INVOKE<R>
redi [Tue, 14 May 2019 15:25:01 +0000 (15:25 +0000)] 
Define std::__invoke_r for INVOKE<R>

* include/bits/invoke.h (__invoke_r): Define new function implementing
the INVOKE<R> pseudo-function.
* testsuite/20_util/function_objects/invoke/1.cc: Add more tests.
* testsuite/20_util/function_objects/invoke/2.cc: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271173 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago libgo: reduce overhead for memory/block/mutex profiling
ian [Tue, 14 May 2019 14:59:42 +0000 (14:59 +0000)] 
libgo: reduce overhead for memory/block/mutex profiling

    Revise the gccgo version of memory/block/mutex profiling to reduce
    runtime overhead. The main change is to collect raw stack traces while
    the profile is on line, then post-process the stacks just prior to the
    point where we are ready to use the final product. Memory profiling
    (at a very low sampling rate) is enabled by default, and the overhead
    of the symbolization / DWARF-reading from backtrace_full was slowing
    things down relative to the main Go runtime.

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271172 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoAdd __is_nothrow_convertible to fix std::is_nothrow_invocable_r
redi [Tue, 14 May 2019 14:39:58 +0000 (14:39 +0000)] 
Add __is_nothrow_convertible to fix std::is_nothrow_invocable_r

The definition of is_nothrow_invocable in terms of is_convertible and
is_nothrow_constructible is incorrect, because a type could have an
explicit constructor that means is_nothrow_constructible is true, but
implicit conversions could use a different constructor that is
potentially-throwing.

Fix it by adding a C++11 version of C++20's is_nothrow_convertible that
only considers implicit conversions.

* include/std/type_traits (__is_nt_convertible_helper): Define it
unconditionally, not only for C++20.
(__is_nothrow_convertible): Define internal trait for use in C++11.
(__is_nt_invocable_impl: Fix by using __is_nothrow_convertible.
(is_invocable_r_v, is_nothrow_invocable_r_v): Add missing parameter.
* testsuite/20_util/is_nothrow_convertible/value_ext.cc: New test.
* testsuite/20_util/is_nothrow_convertible/value.cc: Check with type
that has nothrow explicit conversion but potentially-throwing implicit
conversion.
* testsuite/20_util/is_nothrow_invocable/value.cc: Likewise.
* testsuite/20_util/is_nothrow_invocable/value_ext.cc: Fix helper
function to only consider implicit conversions.
* testsuite/20_util/tuple/cons/noexcept_specs.cc: Add comment.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271171 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2019-05-14 Richard Biener <rguenther@suse.de>
rguenth [Tue, 14 May 2019 13:57:03 +0000 (13:57 +0000)] 
2019-05-14  Richard Biener  <rguenther@suse.de>

* gimple-parser.c (c_parser_gimple_statement): Remove
questionable auto-promotion to VIEW_CONVERT_EXPR.
(c_parser_gimple_typespec): Split out from __MEM parsing.
(c_parser_gimple_postfix_expression): Handle __VIEW_CONVERT.
* tree-pretty-print.c (dump_generic_node): Dump VIEW_CONVERT_EXPR
as __VIEW_CONVERT with -gimple.

* gcc.dg/gimplefe-40.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271170 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoReduce header dependencies in <iterator>
redi [Tue, 14 May 2019 12:47:39 +0000 (12:47 +0000)] 
Reduce header dependencies in <iterator>

* include/std/iterator: Include <iosfwd> instead of <istream> and
<ostream>.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271169 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoRemoving unused, non-standard function in _Rb_tree
redi [Tue, 14 May 2019 12:19:10 +0000 (12:19 +0000)] 
Removing unused, non-standard function in _Rb_tree

* include/bits/stl_tree.h (_Rb_tree::erase(const Key*, const Key*)):
Remove unused, non-standard function.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271168 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoMake std::match_results::_M_resize more useful
redi [Tue, 14 May 2019 12:19:05 +0000 (12:19 +0000)] 
Make std::match_results::_M_resize more useful

As both callers of match_results::_M_resize(unsigned) immediately follow
it with a loop to update the value of each sub_match, that behaviour can
be moved into _M_resize itself. The first caller fills the container
with unmatched subs, which can be done with vector::assign, and the
second caller clears the container to establish a specific state, which
can be provided by a new member function specific to that purpose.

Tangentially, I also noticed that match_results::max_size() doesn't
account for the three special sub_match objects that are always present
in a fully established result state. This patch also fixes that.

* include/bits/regex.h (match_results::max_size()): Adjust return
value to account for prefix/suffix/unmatched subs.
(match_results::_M_resize(unsigned int)): Use _Base_type::assign to
reset the contained sub matches.
(match_results::_M_establish_failed_match(_Bi_iter)): Add new member
function to set result state following a failed match.
* include/bits/regex.tcc (__regex_algo_impl): Remove loop to set
sub_match states after _M_resize. Use _M_establish_failed_match.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271167 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR libstdc++/69724 avoid temporary in std::thread construction
redi [Tue, 14 May 2019 12:01:15 +0000 (12:01 +0000)] 
PR libstdc++/69724 avoid temporary in std::thread construction

The std::thread constructor creates (and then moves) an unnecessary
temporary copy of each argument. Optimize it to only make the one copy
that is required.

PR libstdc++/69724
* include/std/thread (thread::_State_impl, thread::_S_make_state):
Replace single _Callable parameter with variadic _Args pack, to
forward them directly to the tuple of decayed copies.
* testsuite/30_threads/thread/cons/69724.cc: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271166 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoInconsistency wrt Allocators in basic_string assignment (LWG2579)
redi [Tue, 14 May 2019 11:48:31 +0000 (11:48 +0000)] 
Inconsistency wrt Allocators in basic_string assignment (LWG2579)

2019-05-14  Nina Dinka Ranns  <dinka.ranns@gmail.com>

Inconsistency wrt Allocators in basic_string assignment (LWG2579)
* include/bits/basic_string.h: (operator=(const basic_string&):
Move allocator decision to assign.
(assign(const basic_string&)): Move allocator decision here.
* testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
Add tests.
* testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
Add tests.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271165 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoReapply r270597.
marxin [Tue, 14 May 2019 11:43:55 +0000 (11:43 +0000)] 
Reapply r270597.

2019-05-14  Paolo Carlini  <paolo.carlini@oracle.com>

PR preprocessor/90382
* decl.c (grokdeclarator): Fix value assigned to typespec_loc, use
min_location.
2019-05-14  Paolo Carlini  <paolo.carlini@oracle.com>

PR preprocessor/90382
* g++.dg/diagnostic/trailing1.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271164 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix min_location usage in line-map.c (PR preprocessor/90382).
marxin [Tue, 14 May 2019 11:41:53 +0000 (11:41 +0000)] 
Fix min_location usage in line-map.c (PR preprocessor/90382).

2019-05-14  Martin Liska  <mliska@suse.cz>

PR preprocessor/90382
* line-map.c (first_map_in_common_1): Handle ADHOC
locations.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271163 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDo a refactoring in linemap (PR preprocessor/90382).
marxin [Tue, 14 May 2019 11:41:40 +0000 (11:41 +0000)] 
Do a refactoring in linemap (PR preprocessor/90382).

2019-05-14  Martin Liska  <mliska@suse.cz>

PR preprocessor/90382
* include/line-map.h (get_data_from_adhoc_loc): Add const to
the first argument.
(get_location_from_adhoc_loc): Likewise.
* line-map.c(get_data_from_adhoc_loc):  Add const to
the first argument.
(get_location_from_adhoc_loc): Likewise.
(get_combined_adhoc_loc): Use get_location_from_adhoc_loc
(or get_data_from_adhoc_loc).
(get_range_from_adhoc_loc): Likewise.
(get_pure_location): Likewise.
(linemap_position_for_loc_and_offset): Likewise.
(linemap_lookup): Likewise.
(linemap_ordinary_map_lookup): Likewise.
(linemap_macro_map_lookup): Likewise.
(linemap_get_expansion_line): Likewise.
(linemap_get_expansion_filename): Likewise.
(linemap_location_in_system_header_p): Likewise.
(linemap_location_from_macro_expansion_p): Likewise.
(linemap_macro_loc_to_exp_point): Likewise.
(linemap_resolve_location): Likewise.
(linemap_unwind_toward_expansion): Likewise.
(linemap_unwind_to_first_non_reserved_loc): Likewise.
(linemap_expand_location): Likewise.
(linemap_dump_location): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271162 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix indentation in testsuite utility header
redi [Tue, 14 May 2019 11:17:27 +0000 (11:17 +0000)] 
Fix indentation in testsuite utility header

* testsuite/util/testsuite_allocator.h (memory_resource)
(default_resource_mgr): Fix indentation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271161 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoAdd __gnu_test::NullablePointer utility to testsuite
redi [Tue, 14 May 2019 11:17:23 +0000 (11:17 +0000)] 
Add __gnu_test::NullablePointer utility to testsuite

* testsuite/20_util/allocator_traits/members/allocate_hint_nonpod.cc:
Use operator-> to access raw pointer member.
* testsuite/23_containers/vector/59829.cc: Likewise.
* testsuite/23_containers/vector/bool/80893.cc: Likewise.
* testsuite/libstdc++-prettyprinters/cxx11.cc: Use NullablePointer.
* testsuite/util/testsuite_allocator.h (NullablePointer): New utility
for tests.
(PointerBase, PointerBase_void): Derive from NullablePointer and use
its constructors and equality operators. Change converting
constructors to use operator-> to access private member of the other
pointer type.
(PointerBase_void::operator->()): Add, for access to private member.
(operator-(PointerBase, PointerBase)): Change to hidden friend.
(operator==(PointerBase, PointerBase)): Remove.
(operator!=(PointerBase, PointerBase)): Remove.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271160 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix unique_ptr pretty printer for empty classes
redi [Tue, 14 May 2019 11:17:18 +0000 (11:17 +0000)] 
Fix unique_ptr pretty printer for empty classes

The printer was confused when unique_ptr<T,D>::pointer is an empty
class, or the deleter is not empty. Instead of assuming the tuple has a
single _M_head_impl member manually inspect the tuple base classes to
get the first element.

* python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__): Do
not assume field called _M_head_impl is the first tuple element.
* testsuite/libstdc++-prettyprinters/compat.cc: Make tuple
implementation more accurate.
* testsuite/libstdc++-prettyprinters/cxx11.cc: Check unique_ptr with
empty pointer type and non-empty deleter.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271159 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoLWG 2899 - Make is_move_constructible correct for unique_ptr
redi [Tue, 14 May 2019 11:17:11 +0000 (11:17 +0000)] 
LWG 2899 - Make is_move_constructible correct for unique_ptr

* include/bits/unique_ptr.h (__uniq_ptr_impl): Add move constructor,
move assignment operator.
(__uniq_ptr_impl::release(), __uniq_ptr_impl::reset(pointer)): Add.
(__uniq_ptr_data): New class template with conditionally deleted
special members.
(unique_ptr, unique_ptr<T[], D>): Change type of data member from
__uniq_ptr_impl<T, D> to __uniq_ptr_data<T, D>. Define move
constructor and move assignment operator as defaulted.
(unique_ptr::release(), unique_ptr<T[], D>::release()): Forward to
__uniq_ptr_impl::release().
(unique_ptr::reset(pointer), unique_ptr<T[], D>::reset<U>(U)): Forward
to __uniq_ptr_impl::reset(pointer).
* python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__):
Check for new __uniq_ptr_data type.
* testsuite/20_util/unique_ptr/dr2899.cc: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271158 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix a test-case in PR middle-end/90340.
marxin [Tue, 14 May 2019 10:00:53 +0000 (10:00 +0000)] 
Fix a test-case in PR middle-end/90340.

2019-05-14  marxin  <mliska@suse.cz>

PR middle-end/90340
* gcc.dg/tree-ssa/pr90340-2.c: Add case-values-threshold
param.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271156 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2019-05-14 Richard Biener <rguenther@suse.de>
rguenth [Tue, 14 May 2019 09:11:15 +0000 (09:11 +0000)] 
2019-05-14  Richard Biener  <rguenther@suse.de>
H.J. Lu  <hongjiu.lu@intel.com>

PR tree-optimization/88828
* tree-ssa-forwprop.c (simplify_vector_constructor): Handle
permuting in a single non-constant element not extracted
from a vector.

* gcc.target/i386/pr88828-1.c: New test.
* gcc.target/i386/pr88828-1a.c: Likewise.
* gcc.target/i386/pr88828-1b.c: Likewise.
* gcc.target/i386/pr88828-1c.c: Likewise.
* gcc.target/i386/pr88828-4a.c: Likewise.
* gcc.target/i386/pr88828-4b.c: Likewise.
* gcc.target/i386/pr88828-5a.c: Likewise.
* gcc.target/i386/pr88828-5b.c: Likewise.
* gcc.target/i386/pr88828-7.c: Likewise.
* gcc.target/i386/pr88828-7a.c: Likewise.
* gcc.target/i386/pr88828-7b.c: Likewise.
* gcc.target/i386/pr88828-8.c: Likewise.
* gcc.target/i386/pr88828-8a.c: Likewise.
* gcc.target/i386/pr88828-8b.c: Likewise.
* gcc.target/i386/pr88828-9.c: Likewise.
* gcc.target/i386/pr88828-9a.c: Likewise.
* gcc.target/i386/pr88828-9b.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271153 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2019-05-14 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com\>
rsandifo [Tue, 14 May 2019 08:07:56 +0000 (08:07 +0000)] 
2019-05-14  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com\>

gcc/
* internal-fn.def (SIGNBIT): New.
* config/aarch64/aarch64-simd.md (signbitv2sf2): New expand
defined.
(signbitv4sf2): Likewise.

gcc/testsuite/
* gcc.target/aarch64/signbitv4sf.c: New test.
* gcc.target/aarch64/signbitv2sf.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271149 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[MIPS] Skip forward src into next insn when the SRC reg is dead.
paulhua [Tue, 14 May 2019 01:42:59 +0000 (01:42 +0000)] 
[MIPS] Skip forward src into next insn when the SRC reg is dead.

PR target/90357
gcc/
* config/mips/mips.c (mips_split_move): Skip forward SRC into
next insn when the SRC reg is dead.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271146 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * gimple-ssa-strength-reduction.c (lookup_cand): Adjust index by 1.
amker [Tue, 14 May 2019 01:18:53 +0000 (01:18 +0000)] 
* gimple-ssa-strength-reduction.c (lookup_cand): Adjust index by 1.
(alloc_cand_and_find_basis): Ditto.
(backtrace_base_for_ref, create_mul_ssa_cand): Remove if-then-else.
(create_mul_imm_cand, create_add_ssa_cand): Ditto.
(create_add_imm_cand, slsr_process_cast): Ditto.
(slsr_process_copy, replace_mult_candidate): Ditto.
(replace_rhs_if_not_dup, replace_one_candidate): Ditto.
(dump_cand_vec, analyze_candidates_and_replace): Skip NULL element.
(pass_strength_reduction::execute): Init the first NULL element.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271145 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Tue, 14 May 2019 00:16:19 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271144 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * sv.po: Update.
jsm28 [Mon, 13 May 2019 22:26:22 +0000 (22:26 +0000)] 
* sv.po: Update.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271139 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago Use releasing_vec more broadly.
jason [Mon, 13 May 2019 21:32:14 +0000 (21:32 +0000)] 
Use releasing_vec more broadly.

* cp-tree.h (struct releasing_vec): Replace get_ref method with
operator&.
(vec_safe_push, vec_safe_reserve, vec_safe_length, vec_safe_splice):
Forwarding functions for releasing_vec.
(release_tree_vector): Declare but don't define.
* call.c (build_op_delete_call, build_temp, call_copy_ctor)
(perform_direct_initialization_if_possible): Use releasing_vec.
* constexpr.c (cxx_eval_vec_init_1, cxx_eval_store_expression):
Likewise.
* cp-gimplify.c (cp_fold): Likewise.
* cvt.c (force_rvalue, ocp_convert): Likewise.
* decl.c (get_tuple_decomp_init): Likewise.
* except.c (build_throw): Likewise.
* init.c (perform_member_init, expand_default_init): Likewise.
* method.c (do_build_copy_assign, locate_fn_flags): Likewise.
* parser.c (cp_parser_userdef_char_literal)
(cp_parser_userdef_numeric_literal)
(cp_parser_userdef_string_literal)
(cp_parser_perform_range_for_lookup)
(cp_parser_range_for_member_function, cp_parser_omp_for_loop)
(cp_parser_omp_for_loop_init): Likewise.
* pt.c (tsubst_copy_and_build, do_class_deduction): Likewise.
* semantics.c (calculate_direct_bases, calculate_bases)
(finish_omp_barrier, finish_omp_flush, finish_omp_taskwait)
(finish_omp_taskyield, finish_omp_cancel)
(finish_omp_cancellation_point): Likewise.
* tree.c (build_vec_init_elt, strip_typedefs, strip_typedefs_expr)
(build_min_non_dep_op_overload): Likewise.
* typeck.c (build_function_call_vec, cp_build_function_call_nary)
(cp_build_modify_expr): Likewise.
* typeck2.c (build_functional_cast): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271138 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago libgo: drop Solaris 10 support
ian [Mon, 13 May 2019 20:26:24 +0000 (20:26 +0000)] 
libgo: drop Solaris 10 support

    Based on patch by Rainer Orth.

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271135 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR libstdc++/90454.cc path construction from void*
redi [Mon, 13 May 2019 20:12:06 +0000 (20:12 +0000)] 
PR libstdc++/90454.cc path construction from void*

Make the filesystem::path constructors SFINAE away for void* arguments,
instead of giving an error due to iterator_traits<void*>::reference.

PR libstdc++/90454.cc path construction from void*
* include/bits/fs_path.h (path::_Path): Use remove_pointer so that
pointers to void are rejected as well as void.
* include/experimental/bits/fs_path.h (path::_Path): Likewise.
* testsuite/27_io/filesystem/path/construct/80762.cc: Also check
pointers to void.
* testsuite/experimental/filesystem/path/construct/80762.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271134 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix testsuite regression caused by r271077
redi [Mon, 13 May 2019 20:11:52 +0000 (20:11 +0000)] 
Fix testsuite regression caused by r271077

* g++.dg/cpp0x/Wattributes1.C: Adjust dg-error line number to fix
regression, by matching a note on any line.
* g++.dg/cpp0x/Wattributes2.C: Add another copy that checks the
correct line number is matched without depending on a library header.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271133 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoSmall markup changes to PBDS docs
redi [Mon, 13 May 2019 20:11:47 +0000 (20:11 +0000)] 
Small markup changes to PBDS docs

* doc/xml/manual/policy_data_structures.xml: Comment out stray
<remark> elements. Fix formatting of bibliography references.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271132 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[PATCH] A couple of driver cleanups
nathan [Mon, 13 May 2019 15:57:33 +0000 (15:57 +0000)] 
[PATCH] A couple of driver cleanups

https://gcc.gnu.org/ml/gcc-patches/2019-05/msg00624.html
* gcc.c (execute): Simplify cond-expr into if.  Reformat comment.
(run_attempt): Reformat line break

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271131 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR target/90418
dje [Mon, 13 May 2019 15:19:50 +0000 (15:19 +0000)] 
PR target/90418
        * config/rs6000/rs6000.c (rs6000_emit_epilogue): Don't load EH
        data registers in sibcall epilogues.
        Don't add EH_RETURN_STACKADJ_RTX to sp in sibcall epilogues.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271130 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR target/89221
uros [Mon, 13 May 2019 14:58:38 +0000 (14:58 +0000)] 
PR target/89221
* configure.ac (--enable-frame-pointer):
Disable by default for cygwin and mingw.
* configure: Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271129 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2019-05-13 Chung-Lin Tang <cltang@codesourcery.com>
cltang [Mon, 13 May 2019 13:32:00 +0000 (13:32 +0000)] 
2019-05-13  Chung-Lin Tang  <cltang@codesourcery.com>

Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>
libgomp/
* libgomp-plugin.h (struct goacc_asyncqueue): Declare.
(struct goacc_asyncqueue_list): Likewise.
(goacc_aq): Likewise.
(goacc_aq_list): Likewise.
(GOMP_OFFLOAD_openacc_register_async_cleanup): Remove.
(GOMP_OFFLOAD_openacc_async_test): Remove.
(GOMP_OFFLOAD_openacc_async_test_all): Remove.
(GOMP_OFFLOAD_openacc_async_wait): Remove.
(GOMP_OFFLOAD_openacc_async_wait_async): Remove.
(GOMP_OFFLOAD_openacc_async_wait_all): Remove.
(GOMP_OFFLOAD_openacc_async_wait_all_async): Remove.
(GOMP_OFFLOAD_openacc_async_set_async): Remove.
(GOMP_OFFLOAD_openacc_exec): Adjust declaration.
(GOMP_OFFLOAD_openacc_cuda_get_stream): Likewise.
(GOMP_OFFLOAD_openacc_cuda_set_stream): Likewise.
(GOMP_OFFLOAD_openacc_async_exec): Declare.
(GOMP_OFFLOAD_openacc_async_construct): Declare.
(GOMP_OFFLOAD_openacc_async_destruct): Declare.
(GOMP_OFFLOAD_openacc_async_test): Declare.
(GOMP_OFFLOAD_openacc_async_synchronize): Declare.
(GOMP_OFFLOAD_openacc_async_serialize): Declare.
(GOMP_OFFLOAD_openacc_async_queue_callback): Declare.
(GOMP_OFFLOAD_openacc_async_host2dev): Declare.
(GOMP_OFFLOAD_openacc_async_dev2host): Declare.

* libgomp.h (struct acc_dispatch_t): Define 'async' sub-struct.
(gomp_acc_insert_pointer): Adjust declaration.
(gomp_copy_host2dev): New declaration.
(gomp_copy_dev2host): Likewise.
(gomp_map_vars_async): Likewise.
(gomp_unmap_tgt): Likewise.
(gomp_unmap_vars_async): Likewise.
(gomp_fini_device): Likewise.

* oacc-async.c (get_goacc_thread): New function.
(get_goacc_thread_device): New function.
(lookup_goacc_asyncqueue): New function.
(get_goacc_asyncqueue): New function.
(acc_async_test): Adjust code to use new async design.
(acc_async_test_all): Likewise.
(acc_wait): Likewise.
(acc_wait_async): Likewise.
(acc_wait_all): Likewise.
(acc_wait_all_async): Likewise.
(goacc_async_free): New function.
(goacc_init_asyncqueues): Likewise.
(goacc_fini_asyncqueues): Likewise.
* oacc-cuda.c (acc_get_cuda_stream): Adjust code to use new async
design.
(acc_set_cuda_stream): Likewise.
* oacc-host.c (host_openacc_exec): Adjust parameters, remove 'async'.
(host_openacc_register_async_cleanup): Remove.
(host_openacc_async_exec): New function.
(host_openacc_async_test): Adjust parameters.
(host_openacc_async_test_all): Remove.
(host_openacc_async_wait): Remove.
(host_openacc_async_wait_async): Remove.
(host_openacc_async_wait_all): Remove.
(host_openacc_async_wait_all_async): Remove.
(host_openacc_async_set_async): Remove.
(host_openacc_async_synchronize): New function.
(host_openacc_async_serialize): New function.
(host_openacc_async_host2dev): New function.
(host_openacc_async_dev2host): New function.
(host_openacc_async_queue_callback): New function.
(host_openacc_async_construct): New function.
(host_openacc_async_destruct): New function.
(struct gomp_device_descr host_dispatch): Remove initialization of old
interface, add intialization of new async sub-struct.
* oacc-init.c (acc_shutdown_1): Adjust to use gomp_fini_device.
(goacc_attach_host_thread_to_device): Remove old async code usage.
* oacc-int.h (goacc_init_asyncqueues): New declaration.
(goacc_fini_asyncqueues): Likewise.
(goacc_async_copyout_unmap_vars): Likewise.
(goacc_async_free): Likewise.
(get_goacc_asyncqueue): Likewise.
(lookup_goacc_asyncqueue): Likewise.

* oacc-mem.c (memcpy_tofrom_device): Adjust code to use new async
design.
(present_create_copy): Adjust code to use new async design.
(delete_copyout): Likewise.
(update_dev_host): Likewise.
(gomp_acc_insert_pointer): Add async parameter, adjust code to use new
async design.
(gomp_acc_remove_pointer): Adjust code to use new async design.
* oacc-parallel.c (GOACC_parallel_keyed): Adjust code to use new async
design.
(GOACC_enter_exit_data): Likewise.
(goacc_wait): Likewise.
(GOACC_update): Likewise.
* oacc-plugin.c (GOMP_PLUGIN_async_unmap_vars): Change to assert fail
when called, warn as obsolete in comment.

* target.c (goacc_device_copy_async): New function.
(gomp_copy_host2dev): Remove 'static', add goacc_asyncqueue parameter,
add goacc_device_copy_async case.
(gomp_copy_dev2host): Likewise.
(gomp_map_vars_existing): Add goacc_asyncqueue parameter, adjust code.
(gomp_map_pointer): Likewise.
(gomp_map_fields_existing): Likewise.
(gomp_map_vars_internal): New always_inline function, renamed from
gomp_map_vars.
(gomp_map_vars): Implement by calling gomp_map_vars_internal.
(gomp_map_vars_async): Implement by calling gomp_map_vars_internal,
passing goacc_asyncqueue argument.
(gomp_unmap_tgt): Remove static, add attribute_hidden.
(gomp_unref_tgt): New function.
(gomp_unmap_vars_internal): New always_inline function, renamed from
gomp_unmap_vars.
(gomp_unmap_vars): Implement by calling gomp_unmap_vars_internal.
(gomp_unmap_vars_async): Implement by calling
gomp_unmap_vars_internal, passing goacc_asyncqueue argument.
(gomp_fini_device): New function.
(gomp_exit_data): Adjust gomp_copy_dev2host call.
(gomp_load_plugin_for_device): Remove old interface, adjust to load
new async interface.
(gomp_target_fini): Adjust code to call gomp_fini_device.

* plugin/plugin-nvptx.c (struct cuda_map): Remove.
(struct ptx_stream): Remove.
(struct nvptx_thread): Remove current_stream field.
(cuda_map_create): Remove.
(cuda_map_destroy): Remove.
(map_init): Remove.
(map_fini): Remove.
(map_pop): Remove.
(map_push): Remove.
(struct goacc_asyncqueue): Define.
(struct nvptx_callback): Define.
(struct ptx_free_block): Define.
(struct ptx_device): Remove null_stream, active_streams, async_streams,
stream_lock, and next fields.
(enum ptx_event_type): Remove.
(struct ptx_event): Remove.
(ptx_event_lock): Remove.
(ptx_events): Remove.
(init_streams_for_device): Remove.
(fini_streams_for_device): Remove.
(select_stream_for_async): Remove.
(nvptx_init): Remove ptx_events and ptx_event_lock references.
(nvptx_attach_host_thread_to_device): Remove CUDA_ERROR_NOT_PERMITTED
case.
(nvptx_open_device): Add free_blocks initialization, remove
init_streams_for_device call.
(nvptx_close_device): Remove fini_streams_for_device call, add
free_blocks destruct code.
(event_gc): Remove.
(event_add): Remove.
(nvptx_exec): Adjust parameters and code.
(nvptx_free): Likewise.
(nvptx_host2dev): Remove.
(nvptx_dev2host): Remove.
(nvptx_set_async): Remove.
(nvptx_async_test): Remove.
(nvptx_async_test_all): Remove.
(nvptx_wait): Remove.
(nvptx_wait_async): Remove.
(nvptx_wait_all): Remove.
(nvptx_wait_all_async): Remove.
(nvptx_get_cuda_stream): Remove.
(nvptx_set_cuda_stream): Remove.
(GOMP_OFFLOAD_alloc): Adjust code.
(GOMP_OFFLOAD_free): Likewise.
(GOMP_OFFLOAD_openacc_register_async_cleanup): Remove.
(GOMP_OFFLOAD_openacc_exec): Adjust parameters and code.
(GOMP_OFFLOAD_openacc_async_test_all): Remove.
(GOMP_OFFLOAD_openacc_async_wait): Remove.
(GOMP_OFFLOAD_openacc_async_wait_async): Remove.
(GOMP_OFFLOAD_openacc_async_wait_all): Remove.
(GOMP_OFFLOAD_openacc_async_wait_all_async): Remove.
(GOMP_OFFLOAD_openacc_async_set_async): Remove.
(cuda_free_argmem): New function.
(GOMP_OFFLOAD_openacc_async_exec): New plugin hook function.
(GOMP_OFFLOAD_openacc_create_thread_data): Adjust code.
(GOMP_OFFLOAD_openacc_cuda_get_stream): Adjust code.
(GOMP_OFFLOAD_openacc_cuda_set_stream): Adjust code.
(GOMP_OFFLOAD_openacc_async_construct): New plugin hook function.
(GOMP_OFFLOAD_openacc_async_destruct): New plugin hook function.
(GOMP_OFFLOAD_openacc_async_test): Remove and re-implement.
(GOMP_OFFLOAD_openacc_async_synchronize): New plugin hook function.
(GOMP_OFFLOAD_openacc_async_serialize): New plugin hook function.
(GOMP_OFFLOAD_openacc_async_queue_callback): New plugin hook function.
(cuda_callback_wrapper): New function.
(cuda_memcpy_sanity_check): New function.
(GOMP_OFFLOAD_host2dev): Remove and re-implement.
(GOMP_OFFLOAD_dev2host): Remove and re-implement.
(GOMP_OFFLOAD_openacc_async_host2dev): New plugin hook function.
(GOMP_OFFLOAD_openacc_async_dev2host): New plugin hook function.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271128 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[DWARF] dwarf2out cleanups
nathan [Mon, 13 May 2019 11:56:57 +0000 (11:56 +0000)] 
[DWARF] dwarf2out cleanups

https://gcc.gnu.org/ml/gcc-patches/2019-05/msg00485.html
* dwarf2out.c (breakout_comdat_types): Move comment to correct
piece of code.
(const_ok_for_output_1): Balance parens around #if/#else/#endif
(gen_member_die): Move abstract origin check earlier.  Only VARs
can be static_inline_p.  Simplify splicing control flow.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271127 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2019-05-13 Richard Biener <rguenther@suse.de>
rguenth [Mon, 13 May 2019 11:42:08 +0000 (11:42 +0000)] 
2019-05-13  Richard Biener  <rguenther@suse.de>

* tree-vect-slp.c (vect_get_and_check_slp_defs): Handle
VIEW_CONVERT_EXPR.
(vect_build_slp_tree_1): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271126 138bc75d-0d04-0410-961f-82ee72b054a4