Skip to content
Snippets Groups Projects
  1. Sep 16, 2021
    • Andreas Larsson's avatar
      sparc: Print out bit names for LEON and LEON3 with -mdebug · b7e0dd61
      Andreas Larsson authored
      gcc/ChangeLog:
      
      	* config/sparc/sparc.c (dump_target_flag_bits): Print bit names for
      	LEON and LEON3.
      b7e0dd61
    • Christophe Lyon's avatar
      testsuite: Support single-precision in g++.dg/eh/arm-vfp-unwind.C · 8e2c293f
      Christophe Lyon authored
      g++.dg/eh/arm-vfp-unwind.C uses an asm statement relying on
      double-precision FPU support. This patch extends it support
      single-precision, useful for targets without double-precision.
      
      2021-09-16  Richard Earnshaw  <rearnsha@arm.com>
      
      	gcc/testsuite/
      	* g++.dg/eh/arm-vfp-unwind.C: Support single-precision.
      8e2c293f
    • Martin Liska's avatar
      mips: Fix macro typo · 8137be39
      Martin Liska authored
      gcc/ChangeLog:
      
      	* config/mips/netbsd.h: Fix typo in name of a macro.
      8137be39
    • liuhongt's avatar
      Check mask type when doing cond_op related gimple simplification. · a26ff83e
      liuhongt authored
      gcc/ChangeLog:
      
      	PR middle-end/102080
      	* match.pd: Check mask type when doing cond_op related gimple
      	simplification.
      	* tree.c (is_truth_type_for): New function.
      	* tree.h (is_truth_type_for): New declaration.
      
      gcc/testsuite/ChangeLog:
      
      	PR middle-end/102080
      	* gcc.target/i386/pr102080.c: New test.
      a26ff83e
    • liuhongt's avatar
      AVX512FP16: Add testcase for vcvtw2ph/vcvtuw2ph/vcvtdq2ph/vcvtudq2ph/vcvtqq2ph/vcvtuqq2ph. · a73d5908
      liuhongt authored
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/i386/avx512fp16-vcvtdq2ph-1a.c: New test.
      	* gcc.target/i386/avx512fp16-vcvtdq2ph-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vcvtqq2ph-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vcvtqq2ph-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vcvtudq2ph-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vcvtudq2ph-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vcvtuqq2ph-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vcvtuqq2ph-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vcvtuw2ph-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vcvtuw2ph-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vcvtw2ph-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vcvtw2ph-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vcvtdq2ph-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vcvtdq2ph-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vcvtqq2ph-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vcvtqq2ph-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vcvtudq2ph-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vcvtudq2ph-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vcvtuqq2ph-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vcvtuqq2ph-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vcvtuw2ph-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vcvtuw2ph-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vcvtw2ph-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vcvtw2ph-1b.c: Ditto.
      a73d5908
    • liuhongt's avatar
      AVX512FP16: Add vcvtuw2ph/vcvtw2ph/vcvtdq2ph/vcvtudq2ph/vcvtqq2ph/vcvtuqq2ph · be0e4c32
      liuhongt authored
      gcc/ChangeLog:
      
      	* config/i386/avx512fp16intrin.h (_mm512_cvtepi32_ph): New
      	intrinsic.
      	(_mm512_mask_cvtepi32_ph): Likewise.
      	(_mm512_maskz_cvtepi32_ph): Likewise.
      	(_mm512_cvt_roundepi32_ph): Likewise.
      	(_mm512_mask_cvt_roundepi32_ph): Likewise.
      	(_mm512_maskz_cvt_roundepi32_ph): Likewise.
      	(_mm512_cvtepu32_ph): Likewise.
      	(_mm512_mask_cvtepu32_ph): Likewise.
      	(_mm512_maskz_cvtepu32_ph): Likewise.
      	(_mm512_cvt_roundepu32_ph): Likewise.
      	(_mm512_mask_cvt_roundepu32_ph): Likewise.
      	(_mm512_maskz_cvt_roundepu32_ph): Likewise.
      	(_mm512_cvtepi64_ph): Likewise.
      	(_mm512_mask_cvtepi64_ph): Likewise.
      	(_mm512_maskz_cvtepi64_ph): Likewise.
      	(_mm512_cvt_roundepi64_ph): Likewise.
      	(_mm512_mask_cvt_roundepi64_ph): Likewise.
      	(_mm512_maskz_cvt_roundepi64_ph): Likewise.
      	(_mm512_cvtepu64_ph): Likewise.
      	(_mm512_mask_cvtepu64_ph): Likewise.
      	(_mm512_maskz_cvtepu64_ph): Likewise.
      	(_mm512_cvt_roundepu64_ph): Likewise.
      	(_mm512_mask_cvt_roundepu64_ph): Likewise.
      	(_mm512_maskz_cvt_roundepu64_ph): Likewise.
      	(_mm512_cvtepi16_ph): Likewise.
      	(_mm512_mask_cvtepi16_ph): Likewise.
      	(_mm512_maskz_cvtepi16_ph): Likewise.
      	(_mm512_cvt_roundepi16_ph): Likewise.
      	(_mm512_mask_cvt_roundepi16_ph): Likewise.
      	(_mm512_maskz_cvt_roundepi16_ph): Likewise.
      	(_mm512_cvtepu16_ph): Likewise.
      	(_mm512_mask_cvtepu16_ph): Likewise.
      	(_mm512_maskz_cvtepu16_ph): Likewise.
      	(_mm512_cvt_roundepu16_ph): Likewise.
      	(_mm512_mask_cvt_roundepu16_ph): Likewise.
      	(_mm512_maskz_cvt_roundepu16_ph): Likewise.
      	* config/i386/avx512fp16vlintrin.h (_mm_cvtepi32_ph): New
      	intrinsic.
      	(_mm_mask_cvtepi32_ph): Likewise.
      	(_mm_maskz_cvtepi32_ph): Likewise.
      	(_mm256_cvtepi32_ph): Likewise.
      	(_mm256_mask_cvtepi32_ph): Likewise.
      	(_mm256_maskz_cvtepi32_ph): Likewise.
      	(_mm_cvtepu32_ph): Likewise.
      	(_mm_mask_cvtepu32_ph): Likewise.
      	(_mm_maskz_cvtepu32_ph): Likewise.
      	(_mm256_cvtepu32_ph): Likewise.
      	(_mm256_mask_cvtepu32_ph): Likewise.
      	(_mm256_maskz_cvtepu32_ph): Likewise.
      	(_mm_cvtepi64_ph): Likewise.
      	(_mm_mask_cvtepi64_ph): Likewise.
      	(_mm_maskz_cvtepi64_ph): Likewise.
      	(_mm256_cvtepi64_ph): Likewise.
      	(_mm256_mask_cvtepi64_ph): Likewise.
      	(_mm256_maskz_cvtepi64_ph): Likewise.
      	(_mm_cvtepu64_ph): Likewise.
      	(_mm_mask_cvtepu64_ph): Likewise.
      	(_mm_maskz_cvtepu64_ph): Likewise.
      	(_mm256_cvtepu64_ph): Likewise.
      	(_mm256_mask_cvtepu64_ph): Likewise.
      	(_mm256_maskz_cvtepu64_ph): Likewise.
      	(_mm_cvtepi16_ph): Likewise.
      	(_mm_mask_cvtepi16_ph): Likewise.
      	(_mm_maskz_cvtepi16_ph): Likewise.
      	(_mm256_cvtepi16_ph): Likewise.
      	(_mm256_mask_cvtepi16_ph): Likewise.
      	(_mm256_maskz_cvtepi16_ph): Likewise.
      	(_mm_cvtepu16_ph): Likewise.
      	(_mm_mask_cvtepu16_ph): Likewise.
      	(_mm_maskz_cvtepu16_ph): Likewise.
      	(_mm256_cvtepu16_ph): Likewise.
      	(_mm256_mask_cvtepu16_ph): Likewise.
      	(_mm256_maskz_cvtepu16_ph): Likewise.
      	* config/i386/i386-builtin-types.def: Add corresponding builtin types.
      	* config/i386/i386-builtin.def: Add corresponding new builtins.
      	* config/i386/i386-expand.c
      	(ix86_expand_args_builtin): Handle new builtin types.
      	(ix86_expand_round_builtin): Ditto.
      	* config/i386/i386-modes.def: Declare V2HF and V6HF.
      	* config/i386/sse.md (VI2H_AVX512VL): New.
      	(qq2phsuff): Ditto.
      	(sseintvecmode): Add HF vector modes.
      	(avx512fp16_vcvt<floatsuffix><sseintconvert>2ph_<mode><mask_name><round_name>):
      	New.
      	(avx512fp16_vcvt<floatsuffix><sseintconvert>2ph_<mode>): Ditto.
      	(*avx512fp16_vcvt<floatsuffix><sseintconvert>2ph_<mode>): Ditto.
      	(avx512fp16_vcvt<floatsuffix><sseintconvert>2ph_<mode>_mask): Ditto.
      	(*avx512fp16_vcvt<floatsuffix><sseintconvert>2ph_<mode>_mask): Ditto.
      	(*avx512fp16_vcvt<floatsuffix><sseintconvert>2ph_<mode>_mask_1): Ditto.
      	(avx512fp16_vcvt<floatsuffix>qq2ph_v2di): Ditto.
      	(*avx512fp16_vcvt<floatsuffix>qq2ph_v2di): Ditto.
      	(avx512fp16_vcvt<floatsuffix>qq2ph_v2di_mask): Ditto.
      	(*avx512fp16_vcvt<floatsuffix>qq2ph_v2di_mask): Ditto.
      	(*avx512fp16_vcvt<floatsuffix>qq2ph_v2di_mask_1): Ditto.
      	* config/i386/subst.md (round_qq2phsuff): New subst_attr.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/i386/avx-1.c: Add test for new builtins.
      	* gcc.target/i386/sse-13.c: Ditto.
      	* gcc.target/i386/sse-23.c: Ditto.
      	* gcc.target/i386/sse-14.c: Add test for new intrinsics.
      	* gcc.target/i386/sse-22.c: Ditto.
      be0e4c32
    • liuhongt's avatar
      AVX512FP16: Add testcase for vcvtph2w/vcvtph2uw/vcvtph2dq/vcvtph2udq/vcvtph2qq/vcvtph2uqq. · 038afce9
      liuhongt authored
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/i386/avx512fp16-helper.h (V512): Add QI
      	components.
      	* gcc.target/i386/avx512fp16-vcvtph2dq-1a.c: New test.
      	* gcc.target/i386/avx512fp16-vcvtph2dq-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vcvtph2qq-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vcvtph2qq-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vcvtph2udq-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vcvtph2udq-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vcvtph2uqq-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vcvtph2uqq-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vcvtph2uw-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vcvtph2uw-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vcvtph2w-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vcvtph2w-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vcvtph2dq-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vcvtph2dq-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vcvtph2qq-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vcvtph2qq-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vcvtph2udq-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vcvtph2udq-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vcvtph2uqq-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vcvtph2uqq-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vcvtph2uw-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vcvtph2uw-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vcvtph2w-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16vl-vcvtph2w-1b.c: Ditto.
      038afce9
    • liuhongt's avatar
      AVX512FP16: Add vcvtph2dq/vcvtph2qq/vcvtph2w/vcvtph2uw/vcvtph2uqq/vcvtph2udq · bd610db0
      liuhongt authored
      gcc/ChangeLog:
      
      	* config/i386/avx512fp16intrin.h (_mm512_cvtph_epi32):
      	New intrinsic/
      	(_mm512_mask_cvtph_epi32): Likewise.
      	(_mm512_maskz_cvtph_epi32): Likewise.
      	(_mm512_cvt_roundph_epi32): Likewise.
      	(_mm512_mask_cvt_roundph_epi32): Likewise.
      	(_mm512_maskz_cvt_roundph_epi32): Likewise.
      	(_mm512_cvtph_epu32): Likewise.
      	(_mm512_mask_cvtph_epu32): Likewise.
      	(_mm512_maskz_cvtph_epu32): Likewise.
      	(_mm512_cvt_roundph_epu32): Likewise.
      	(_mm512_mask_cvt_roundph_epu32): Likewise.
      	(_mm512_maskz_cvt_roundph_epu32): Likewise.
      	(_mm512_cvtph_epi64): Likewise.
      	(_mm512_mask_cvtph_epi64): Likewise.
      	(_mm512_maskz_cvtph_epi64): Likewise.
      	(_mm512_cvt_roundph_epi64): Likewise.
      	(_mm512_mask_cvt_roundph_epi64): Likewise.
      	(_mm512_maskz_cvt_roundph_epi64): Likewise.
      	(_mm512_cvtph_epu64): Likewise.
      	(_mm512_mask_cvtph_epu64): Likewise.
      	(_mm512_maskz_cvtph_epu64): Likewise.
      	(_mm512_cvt_roundph_epu64): Likewise.
      	(_mm512_mask_cvt_roundph_epu64): Likewise.
      	(_mm512_maskz_cvt_roundph_epu64): Likewise.
      	(_mm512_cvtph_epi16): Likewise.
      	(_mm512_mask_cvtph_epi16): Likewise.
      	(_mm512_maskz_cvtph_epi16): Likewise.
      	(_mm512_cvt_roundph_epi16): Likewise.
      	(_mm512_mask_cvt_roundph_epi16): Likewise.
      	(_mm512_maskz_cvt_roundph_epi16): Likewise.
      	(_mm512_cvtph_epu16): Likewise.
      	(_mm512_mask_cvtph_epu16): Likewise.
      	(_mm512_maskz_cvtph_epu16): Likewise.
      	(_mm512_cvt_roundph_epu16): Likewise.
      	(_mm512_mask_cvt_roundph_epu16): Likewise.
      	(_mm512_maskz_cvt_roundph_epu16): Likewise.
      	* config/i386/avx512fp16vlintrin.h (_mm_cvtph_epi32):
      	New intrinsic.
      	(_mm_mask_cvtph_epi32): Likewise.
      	(_mm_maskz_cvtph_epi32): Likewise.
      	(_mm256_cvtph_epi32): Likewise.
      	(_mm256_mask_cvtph_epi32): Likewise.
      	(_mm256_maskz_cvtph_epi32): Likewise.
      	(_mm_cvtph_epu32): Likewise.
      	(_mm_mask_cvtph_epu32): Likewise.
      	(_mm_maskz_cvtph_epu32): Likewise.
      	(_mm256_cvtph_epu32): Likewise.
      	(_mm256_mask_cvtph_epu32): Likewise.
      	(_mm256_maskz_cvtph_epu32): Likewise.
      	(_mm_cvtph_epi64): Likewise.
      	(_mm_mask_cvtph_epi64): Likewise.
      	(_mm_maskz_cvtph_epi64): Likewise.
      	(_mm256_cvtph_epi64): Likewise.
      	(_mm256_mask_cvtph_epi64): Likewise.
      	(_mm256_maskz_cvtph_epi64): Likewise.
      	(_mm_cvtph_epu64): Likewise.
      	(_mm_mask_cvtph_epu64): Likewise.
      	(_mm_maskz_cvtph_epu64): Likewise.
      	(_mm256_cvtph_epu64): Likewise.
      	(_mm256_mask_cvtph_epu64): Likewise.
      	(_mm256_maskz_cvtph_epu64): Likewise.
      	(_mm_cvtph_epi16): Likewise.
      	(_mm_mask_cvtph_epi16): Likewise.
      	(_mm_maskz_cvtph_epi16): Likewise.
      	(_mm256_cvtph_epi16): Likewise.
      	(_mm256_mask_cvtph_epi16): Likewise.
      	(_mm256_maskz_cvtph_epi16): Likewise.
      	(_mm_cvtph_epu16): Likewise.
      	(_mm_mask_cvtph_epu16): Likewise.
      	(_mm_maskz_cvtph_epu16): Likewise.
      	(_mm256_cvtph_epu16): Likewise.
      	(_mm256_mask_cvtph_epu16): Likewise.
      	(_mm256_maskz_cvtph_epu16): Likewise.
      	* config/i386/i386-builtin-types.def: Add new builtin types.
      	* config/i386/i386-builtin.def: Add new builtins.
      	* config/i386/i386-expand.c
      	(ix86_expand_args_builtin): Handle new builtin types.
      	(ix86_expand_round_builtin): Ditto.
      	* config/i386/sse.md (sseintconvert): New.
      	(ssePHmode): Ditto.
      	(UNSPEC_US_FIX_NOTRUNC): Ditto.
      	(sseintconvertsignprefix): Ditto.
      	(avx512fp16_vcvtph2<sseintconvertsignprefix><sseintconvert>_<mode><mask_name><round_name>):
      	Ditto.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/i386/avx-1.c: Add test for new builtins.
      	* gcc.target/i386/sse-13.c: Ditto.
      	* gcc.target/i386/sse-23.c: Ditto.
      	* gcc.target/i386/sse-14.c: Add test for new intrinsics.
      	* gcc.target/i386/sse-22.c: Ditto.
      bd610db0
    • liuhongt's avatar
      AVX512FP16: Add testcase for vmovsh/vmovw. · 6d45f459
      liuhongt authored
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/i386/avx512fp16-vmovsh-1a.c: New test.
      	* gcc.target/i386/avx512fp16-vmovsh-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vmovw-1a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vmovw-1b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vmovw-2a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vmovw-2b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vmovw-3a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vmovw-3b.c: Ditto.
      	* gcc.target/i386/avx512fp16-vmovw-4a.c: Ditto.
      	* gcc.target/i386/avx512fp16-vmovw-4b.c: Ditto.
      6d45f459
    • liuhongt's avatar
      AVX512FP16: Add vmovw/vmovsh. · c4d423c7
      liuhongt authored
      gcc/ChangeLog:
      
      	* config/i386/avx512fp16intrin.h: (_mm_cvtsi16_si128):
      	New intrinsic.
      	(_mm_cvtsi128_si16): Likewise.
      	(_mm_mask_load_sh): Likewise.
      	(_mm_maskz_load_sh): Likewise.
      	(_mm_mask_store_sh): Likewise.
      	(_mm_move_sh): Likewise.
      	(_mm_mask_move_sh): Likewise.
      	(_mm_maskz_move_sh): Likewise.
      	* config/i386/i386-builtin-types.def: Add corresponding builtin types.
      	* config/i386/i386-builtin.def: Add corresponding new builtins.
      	* config/i386/i386-expand.c
      	(ix86_expand_special_args_builtin): Handle new builtin types.
      	(ix86_expand_vector_init_one_nonzero): Adjust for FP16 target.
      	* config/i386/sse.md (VI2F): New mode iterator.
      	(vec_set<mode>_0): Use new mode iterator.
      	(avx512f_mov<ssescalarmodelower>_mask): Adjust for HF vector mode.
      	(avx512f_store<mode>_mask): Ditto.
      c4d423c7
    • Jason Merrill's avatar
      c++: Small location tweak · 8d970817
      Jason Merrill authored
      As Marek suggested.
      
      gcc/cp/ChangeLog:
      
      	* constexpr.c (cxx_eval_outermost_constant_expr): Use
      	protected_set_expr_location.
      8d970817
    • Kewen Lin's avatar
      rs6000: Remove useless toc-fusion option · e0c09143
      Kewen Lin authored
      toc-fusion was intended for Power9 toc fusion previously,
      but Power9 doesn't support fusion at all eventually, this
      patch is to remove this useless option.
      
      gcc/ChangeLog:
      
      	* config/rs6000/rs6000.opt (-mtoc-fusion): Remove.
      e0c09143
    • GCC Administrator's avatar
      Daily bump. · 9e85da8d
      GCC Administrator authored
      9e85da8d
  2. Sep 15, 2021
    • Patrick Palka's avatar
      c++: shortcut bad convs during overload resolution, part 2 [PR101904] · 22806064
      Patrick Palka authored
      The r12-3346 change makes us avoid computing excess argument conversions
      during overload resolution, but only when it turns out there's a
      strictly viable candidate in the overload set.  If there's no such
      candidate then we still need to compute more conversions than strictly
      necessary because subsequent conversions after the first bad conversion
      can turn a non-strictly viable candidate into an unviable one, and that
      affects the outcome of overload resolution and the behavior of its
      callers (because of -fpermissive).
      
      But at least in a SFINAE context, the distinction between a non-strictly
      viable and an unviable candidate shouldn't matter all that much since
      performing a bad conversion is always an error (even with -fpermissive),
      and so forming a call to a non-strictly viable candidate will end up
      being a SFINAE error anyway, just like in the unviable case.  Hence a
      non-strictly viable candidate is effectively unviable (in a SFINAE
      context), and we don't really need to distinguish between the two kinds.
      We can take advantage of this observation to avoid computing excess
      argument conversions even when there's no strictly viable candidate in
      the overload set.
      
      This patch implements this idea.  We usually detect a SFINAE context by
      looking for the absence of the tf_error flag, but that's not specific
      enough: we can also get here from build_user_type_conversion with
      tf_error cleared, and there the distinction between a non-strictly
      viable candidate and an unviable candidate still matters (it determines
      whether a user-defined conversion is bad or just doesn't exist).  So this
      patch sets and checks for the tf_conv flag to detect this situation too,
      which avoids regressing conv2.C below.
      
      Unlike the previous change, this one does affect the outcome of overload
      resolution, but it should do so only in a way that preserves backwards
      compatibility with -fpermissive.
      
      	PR c++/101904
      
      gcc/cp/ChangeLog:
      
      	* call.c (build_user_type_conversion_1): Add tf_conv to complain.
      	(add_candidates): When in a SFINAE context, instead of adding a
      	candidate to bad_fns just mark it unviable.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/ext/conv2.C: New test.
      	* g++.dg/template/conv17.C: Extend test.
      22806064
    • David Edelsohn's avatar
      rs6000: fix xcoff section encoding · f5ae6447
      David Edelsohn authored
      The encoding needs to be applied if the decl is not an alias: both a NULL
      summary *OR* the decl alias flag is false.  This patch updates the
      earlier fix to continue with the encoding selection if the summary is
      NULL.
      
      gcc/ChangeLog:
      	* config/rs6000/rs6000.c (rs6000_xcoff_encode_section_info):
      	Proceed if no symbol summary or the symbol alias flag is false.
      f5ae6447
    • Jason Merrill's avatar
      c++: add parsing_function_declarator predicate · 30e02539
      Jason Merrill authored
      While looking at PR96184 I noticed that we were recognizing the situation of
      parsing a function declarator based on current_binding_level, and that we
      ought to make that a predicate function.  This patch is just refactoring,
      but I just suggested using it in a review of another patch.
      
      gcc/cp/ChangeLog:
      
      	* cp-tree.h (parsing_function_declarator): Declare.
      	* name-lookup.c (set_decl_context_in_fn): Use it.
      	* parser.c (cp_parser_direct_declarator): Use it.
      	(parsing_function_declarator): New.
      30e02539
    • Jakub Jelinek's avatar
      c++: Fix handling of decls with flexible array members initialized with side-effects [PR88578] · e5d1af8a
      Jakub Jelinek authored
      > > Note, if the flexible array member is initialized only with non-constant
      > > initializers, we have a worse bug that this patch doesn't solve, the
      > > splitting of initializers into constant and dynamic initialization removes
      > > the initializer and we don't have just wrong DECL_*SIZE, but nothing is
      > > emitted when emitting those vars into assembly either and so the dynamic
      > > initialization clobbers other vars that may overlap the variable.
      > > I think we need keep an empty CONSTRUCTOR elt in DECL_INITIAL for the
      > > flexible array member in that case.
      >
      > Makes sense.
      
      So, the following patch fixes that.
      
      The typeck2.c change makes sure we keep those CONSTRUCTORs around (although
      they should be empty because all their elts had side-effects/was
      non-constant if it was removed earlier), and the varasm.c change is to avoid
      ICEs on those as well as ICEs on other flex array members that had some
      initializers without side-effects, but not on the last array element.
      
      The code was already asserting that the (index of the last elt in the
      CONSTRUCTOR + 1) times elt size is equal to TYPE_SIZE_UNIT of the local->val
      type, which is true for C flex arrays or for C++ if they don't have any
      side-effects or the last elt doesn't have side-effects, this patch changes
      that to assertion that the TYPE_SIZE_UNIT is greater than equal to the
      offset of the end of last element in the CONSTRUCTOR and uses TYPE_SIZE_UNIT
      (int_size_in_bytes) in the code later on.
      
      2021-09-15  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c++/88578
      	PR c++/102295
      gcc/
      	* varasm.c (output_constructor_regular_field): Instead of assertion
      	that array_size_for_constructor result is equal to size of
      	TREE_TYPE (local->val) in bytes, assert that the type size is greater
      	or equal to array_size_for_constructor result and use type size as
      	fieldsize.
      gcc/cp/
      	* typeck2.c (split_nonconstant_init_1): Don't throw away empty
      	initializers of flexible array members if they have non-zero type
      	size.
      gcc/testsuite/
      	* g++.dg/ext/flexary39.C: New test.
      	* g++.dg/ext/flexary40.C: New test.
      e5d1af8a
    • Patrick Palka's avatar
      c++: default ctor that's also a list ctor [PR102050] · 2ab5c3d5
      Patrick Palka authored
      In grok_special_member_properties we need to set TYPE_HAS_COPY_CTOR,
      TYPE_HAS_DEFAULT_CONSTRUCTOR and TYPE_HAS_LIST_CTOR independently
      from each other because a constructor can be both a default and list
      constructor (as in the first testcase), or both a default and copy
      constructor (as in the second testcase).
      
      	PR c++/102050
      
      gcc/cp/ChangeLog:
      
      	* decl.c (grok_special_member_properties): Set
      	TYPE_HAS_COPY_CTOR, TYPE_HAS_DEFAULT_CONSTRUCTOR
      	and TYPE_HAS_LIST_CTOR independently from each other.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/cpp0x/initlist125.C: New test.
      	* g++.dg/cpp0x/initlist126.C: New test.
      2ab5c3d5
    • Alexandre Oliva's avatar
      zero-call-used-regs attr for ada · 2709337c
      Alexandre Oliva authored
      Make the zero_call_used_regs attribute usable as a Machine_Attribute
      pragma.
      
      
      for  gcc/ada/ChangeLog
      
      	* gcc-interface/utils.c: Include opts.h.
      	(handle_zero_call_used_regs_attribute): New.
      	(gnat_internal_attribute_table): Add zero_call_used_regs.
      
      for  gcc/testsuite/ChangeLog
      
      	* gnat.dg/zcur_attr.adb, gnat.dg/zcur_attr.ads: New.
      2709337c
    • Martin Liska's avatar
      i386: port vxworks to TARGET_CPU_P macro · 7bdf5155
      Martin Liska authored
      	PR target/102351
      
      gcc/ChangeLog:
      
      	* config/i386/vxworks.h: Use new macro TARGET_CPU_P.
      7bdf5155
    • Jason Merrill's avatar
      c++: don't warn about internal interference sizes · 4320a4b7
      Jason Merrill authored
      Most any compilation on ARM/AArch64 was warning because the default L1 cache
      line size of 32B was smaller than the default
      std::hardware_constructive_interference_size of 64B.  This is mostly due to
      inaccurate --param l1-cache-line-size, but it's not helpful to complain to a
      user that didn't set the values.
      
      gcc/cp/ChangeLog:
      
      	* decl.c (cxx_init_decl_processing): Only warn about odd
      	interference sizes if they were specified with --param.
      4320a4b7
    • Martin Liska's avatar
      rs6000: fix symtab_node::get == NULL issue · adddfc85
      Martin Liska authored
      	PR target/102349
      
      gcc/ChangeLog:
      
      	* config/rs6000/rs6000.c (rs6000_xcoff_encode_section_info):
      	Check that we have a symbol summary for a symbol.
      adddfc85
    • Martin Liska's avatar
      gcc-changelog: Add FIXME note. · a37d7d6f
      Martin Liska authored
      contrib/ChangeLog:
      
      	* gcc-changelog/git_commit.py: Add FIXME note.
      a37d7d6f
    • Martin Liska's avatar
      gcc-changelog: check git commit email address · e0fcdc46
      Martin Liska authored
      contrib/ChangeLog:
      
      	* gcc-changelog/git_commit.py: Check commit email.
      	* gcc-changelog/test_email.py: Add new test.
      	* gcc-changelog/test_patches.txt: Likewise.
      e0fcdc46
    • Richard Biener's avatar
      target/102348 - fix powerpc-lynxos build · 26d4ba05
      Richard Biener authored
      This fixes a similar issue for powerpc-lynxos as fixed for i686-lynxos
      already.
      
      2021-09-15  Richard Biener  <rguenther@suse.de>
      
      	PR target/102348
      	* config/rs6000/lynx.h: Remove undef of PREFERRED_DEBUGGING_TYPE
      	to inherit from elfos.h
      26d4ba05
    • liuhongt's avatar
      Optimize for V{8,16,32}HFmode vec_set/extract/init. · 7fc4d600
      liuhongt authored
      gcc/ChangeLog:
      
      	PR target/102327
      	* config/i386/i386-expand.c
      	(ix86_expand_vector_init_interleave): Use puncklwd to pack 2
      	HFmodes.
      	(ix86_expand_vector_set): Use blendw instead of pinsrw.
      	* config/i386/i386.c (ix86_can_change_mode_class): Adjust for
      	AVX512FP16 which supports 16bit vector load.
      	* config/i386/sse.md (avx512bw_interleave_highv32hi<mask_name>):
      	Rename to ..
      	(avx512bw_interleave_high<mode><mask_name>): .. this, and
      	extend to V32HFmode.
      	(avx2_interleave_highv16hi<mask_name>): Rename to ..
      	(avx2_interleave_high<mode><mask_name>): .. this, and extend
      	to V16HFmode.
      	(vec_interleave_highv8hi<mask_name>): Rename to ..
      	(vec_interleave_high<mode><mask_name>): .. this, and extend to V8HFmode.
      	(<mask_codefor>avx512bw_interleave_lowv32hi<mask_name>):
      	Rename to ..
      	(<mask_codefor>avx512bw_interleave_low<mode><mask_name>):
      	this, and extend to V32HFmode.
      	(avx2_interleave_lowv16hi<mask_name>): Rename to ..
      	(avx2_interleave_low<mode><mask_name>): .. this, and extend to V16HFmode.
      	(vec_interleave_lowv8hi<mask_name>): Rename to ..
      	(vec_interleave_low<mode><mask_name>): .. this, and extend to V8HFmode.
      	(sse4_1_pblendw): Rename to ..
      	(sse4_1_pblend<blendsuf>): .. this, and extend to V8HFmode.
      	(avx2_pblendph): New define_expand.
      	(<sse2p4_1>_pinsr<ssemodesuffix>): Refactor, use
      	sseintmodesuffix instead of ssemodesuffix.
      	(blendsuf): New mode attr.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/i386/pr102327-1.c: New test.
      	* gcc.target/i386/pr102327-2.c: New test.
      	* gcc.target/i386/avx512fp16-1c.c: Adjust testcase.
      7fc4d600
    • Richard Biener's avatar
      Maintain (mis-)alignment info in the first element of a group · feebc22b
      Richard Biener authored
      This changes us to maintain and compute (mis-)alignment info for
      the first element of a group only rather than for each DR when
      doing interleaving and for the earliest, first, or first in the SLP
      node (or any pair or all three of those) when SLP vectorizing.
      
      For this to work out the easiest way I have changed the accessors
      DR_MISALIGNMENT and DR_TARGET_ALIGNMENT to do the indirection to
      the first element rather than adjusting all callers.
      
      2021-09-13  Richard Biener  <rguenther@suse.de>
      
      	* tree-vectorizer.h (dr_misalignment): Move out of line.
      	(dr_target_alignment): New.
      	(DR_TARGET_ALIGNMENT): Wrap dr_target_alignment.
      	(set_dr_target_alignment): New.
      	(SET_DR_TARGET_ALIGNMENT): Wrap set_dr_target_alignment.
      	* tree-vect-data-refs.c (dr_misalignment): Compute and
      	return the group members misalignment.
      	(vect_compute_data_ref_alignment): Use SET_DR_TARGET_ALIGNMENT.
      	(vect_analyze_data_refs_alignment): Compute alignment only
      	for the first element of a DR group.
      	(vect_slp_analyze_node_alignment): Likewise.
      feebc22b
    • Hongyu Wang's avatar
      AVX512FP16: Adjust builtin name for FP16 builtins to match AVX512F style · e4d36433
      Hongyu Wang authored
      For AVX512FP16 builtins, they all contain format like vaddph_v8hf,
      while AVX512F builtins use addps128 which succeeded SSE/AVX style.
      Adjust AVX512FP16 builtins to match such format.
      
      gcc/ChangeLog:
      
      	* config/i386/avx512fp16intrin.h: Adjust all builtin calls.
      	* config/i386/avx512fp16vlintrin.h: Likewise.
      	* config/i386/i386-builtin.def: Adjust builtin name and
      	enumeration to match AVX512F style.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/i386/avx-1.c: Adjust builtin macros.
      	* gcc.target/i386/sse-13.c: Likewise.
      	* gcc.target/i386/sse-23.c: Likewise.
      e4d36433
    • Richard Biener's avatar
      tree-optimization/102318 - reduction epilogue re-use · b6d8fa66
      Richard Biener authored
      This refines the fix for PR102226 to do the mode conversion
      from V2DI to VNx2DI separately from the sign-conversion, retaining
      the signedness of the saved accumulator as before the original fix.
      
      2021-09-15  Richard Biener <rguenther@suse.de>
      
      	PR tree-optimization/102318
      	* tree-vect-loop.c (vect_transform_cycle_phi): Revert
      	previous change and do the mode conversion separately from
      	the sign conversion.
      
      	* gcc.dg/vect/pr102318.c: New testcase.
      b6d8fa66
    • Hugo Beauzée-Luyssen's avatar
      libstdc++: Check for TLS support on mingw cross-compilers · cc1e2887
      Hugo Beauzée-Luyssen authored
      Native mingw builds enable TLS, but crosses don't because we don't use
      GCC_CHECK_TLS in the cross-compiler config.
      
      libstdc++-v3/ChangeLog:
      
      	* crossconfig.m4: Check for TLS support on mingw.
      	* configure: Regenerate.
      cc1e2887
    • liuhongt's avatar
      Output vextract{i,f}{32x4,64x2} for (vec_select:(reg:Vmode) idx) when byte_offset of idx % 16 == 0. · 243e0a5b
      liuhongt authored
      2020-09-13  Hongtao Liu  <hongtao.liu@intel.com>
      	    Peter Cordes  <peter@cordes.ca>
      gcc/ChangeLog:
      
      	PR target/91103
      	* config/i386/sse.md (extract_suf): Add V8SF/V8SI/V4DF/V4DI.
      	(*vec_extract<mode><ssescalarmodelower>_valign): Output
      	vextract{i,f}{32x4,64x2} instruction when byte_offset % 16 ==
      	0.
      
      gcc/testsuite/ChangeLog:
      
      	PR target/91103
      	* gcc.target/i386/pr91103-1.c: Add extract tests.
      	* gcc.target/i386/pr91103-2.c: Ditto.
      243e0a5b
    • Thomas Schwinge's avatar
      Add OpenACC 'host_data' testing to 'gfortran.dg/goacc/unexpected-end.f90' · 8b69c481
      Thomas Schwinge authored
      Use underscore instead of space in 'host_data'.
      
      Follow-up to recent commit 33fdbbe4
      "Fortran: Add missing ST_OMP_END_SCOPE handling [PR102313]".
      
      	gcc/testsuite/
      	* gfortran.dg/goacc/unexpected-end.f90: Add OpenACC 'host_data'
      	testing.
      8b69c481
    • Richard Biener's avatar
      Remove support for vax-openbsd · 947332a4
      Richard Biener authored
      This removes the support for vax-openbsd which has been discontinued
      after the OpenBSD 5.9 release and which has no supported gas or GNU ld
      configuration [anymore].  In particular this target does only support
      STABS debuginfo generation.
      
      2021-09-13  Richard Biener  <rguenther@suse.de>
      
      	* config.gcc: Remove vax-*-openbsd* configuration.
      
      contrib/
      	* config-list.mk: Remove vax-openbsd.
      947332a4
    • Richard Biener's avatar
      Remove m68k-openbsd support · 40c9541a
      Richard Biener authored
      This removes m68k-openbsd as a valid configuration, according
      to openbsd.org m68k-openbsd [on the mac] was discontinued after
      the 5.1 release.  The configuration is also not (or no longer)
      supported by gas and GNU ld so I could not figure whether it is still
      a.out (I suspect it is).  But first and foremost the target only supports
      STABS as a debugging format.
      
      2021-09-13  Richard Biener  <rguenther@suse.de>
      
      	* config.gcc: Remove m68k-openbsd.
      
      contrib/
      	* config-list.mk: Remove m68k-openbsd.
      40c9541a
    • Jason Merrill's avatar
      c++: don't predeclare std::type_info [PR48396] · a53781c8
      Jason Merrill authored
      We've always predeclared std::type_info, which has been wrong for a while,
      but now with modules it becomes more of a practical problem, if we want to
      declare it in the purview of a module.  So don't predeclare it.  For
      building up the type_info information to write out with the vtable, we can
      use void* instead of type_info*, since they already aren't the real types.
      
      	PR c++/48396
      
      gcc/cp/ChangeLog:
      
      	* cp-tree.h (enum cp_tree_index): Remove CPTI_TYPE_INFO_PTR_TYPE.
      	(type_info_ptr_type): Remove.
      	* rtti.c (init_rtti_processing): Don't predeclare std::type_info.
      	(typeid_ok_p): Check for null const_type_info_type_node.
      	(type_info_ptr_type, get_void_tinfo_ptr): New fns.
      	(get_tinfo_decl_dynamic, get_tinfo_ptr): Use them.
      	(ptr_initializer, ptm_initializer, get_pseudo_ti_init): Use them.
      	(get_tinfo_desc): Use const_ptr_type_node.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/rtti/undeclared1.C: New test.
      a53781c8
    • Jason Merrill's avatar
      c++: correct object scope handling · ba9b07d0
      Jason Merrill authored
      The way cp_parser_lookup_name handles object scope (i.e. the scope on the
      RHS of a . or -> expression) is a bit subtle: before the lookup it's in
      parser->context->object type, and after the lookup it's in
      parser->object_scope.  But a couple of places that elide lookups were
      failing to do the same transform.
      
      I'm not aware of this breaking anything currently.
      
      gcc/cp/ChangeLog:
      
      	* parser.c (cp_parser_template_name): Move object type.
      	(cp_parser_pre_parsed_nested_name_specifier): Likewise.
      ba9b07d0
    • Jason Merrill's avatar
      c++: tweak C++20 destructor template-id rule · f53a89fe
      Jason Merrill authored
      While working on a larger change to destructor lookup I noticed that this
      rule talks about declarators, but we weren't limiting the error to the case
      where we're parsing a declarator.  I don't know if this actually broke
      anything, since a CPP_TEMPLATE_ID would have to have been parsed once
      before, but it's more correct this way.
      
      gcc/cp/ChangeLog:
      
      	* parser.c (cp_parser_unqualified_id): Only complain about ~A<T> in
      	a declarator.
      f53a89fe
    • Max Filippov's avatar
      gcc: xtensa: fix PR target/102336 · 4633d623
      Max Filippov authored
      2021-09-14  Max Filippov  <jcmvbkbc@gmail.com>
      gcc/
      	PR target/102336
      	* config/xtensa/t-xtensa (TM_H): Add include/xtensa-config.h.
      4633d623
    • GCC Administrator's avatar
      Daily bump. · 52ac72a4
      GCC Administrator authored
      52ac72a4
  3. Sep 14, 2021
Loading