Skip to content
Snippets Groups Projects
  1. Mar 09, 2022
    • Hans-Peter Nilsson's avatar
      toplevel: Makefile.def: Make configure-sim depend on all-readline · e2607d71
      Hans-Peter Nilsson authored
      Without this, a "make all-sim" without the equivalent of
      libreadline-dev installed on the build system, won't
      properly pick up the in-tree readline build, and you'll see:
      
      mkdir -p -- ./sim
      Configuring in ./sim
      configure: creating cache ./config.cache
      checking build system type... x86_64-pc-linux-gnu
      checking host system type... x86_64-pc-linux-gnu
      checking target system type... cris-axis-elf
      checking for x86_64-pc-linux-gnu-gcc... gcc
      checking whether the C compiler works... yes
      ...
      checking for library containing tgetent... -ltermcap
      checking for readline in -lreadline... no
      configure: error: the required "readline" library is missing
      make[1]: *** [Makefile:11188: configure-sim] Error 1
      make[1]: Leaving directory '/home/hp/sim/b'
      
      The sim dependency on readline is apparently (nominally)
      valid as there's a readline call in sim/erc32/sis.c.
      
      2022-02-21  Hans-Peter Nilsson  <hp@axis.com>
      
      	* Makefile.def (dependencies): Make configure-sim depend on
      	all-readline.
      	* Makefile.in: Regenerate.
      e2607d71
    • Tobias Burnus's avatar
      GCN: Implement __atomic_compare_exchange_{1,2} in libgcc [PR102215] · 45052655
      Tobias Burnus authored
      libgcc/ChangeLog:
      
      	PR target/102215
      	* config/gcn/atomic.c (__sync_val_compare_and_swap_##SIZE): Move
      	a line up to non-arg-dependent value first.
      	(__ATOMIC_COMPARE_EXCHANGE): Define + call to generate
      	__atomic_compare_exchange_{1,2}.
      45052655
    • Richard Biener's avatar
      Restore INDIRECT_REF asm operand heuristic with MEM_REF · bded0d54
      Richard Biener authored
      As noticed we are looking for INDIRECT_REF with allows_mem to avoid
      a copy since then we're sure the operand is in memory (assuming
      *& is folded).  But INDIRECT_REFs are no longer a thing, the following
      replaces the check with a check for a MEM_REF with a non-ADDR_EXPR
      operand.  This should fix the regression part without fully
      exploring all possibilities around tcc_reference operands.
      
      I've placed an assert that we do not see an INDIRECT_REF here.
      While we gimplify asm operands we never do any checking on its
      IL afterwards.
      
      2022-03-09  Richard Biener  <rguenther@suse.de>
      
      	* cfgexpand.cc (expand_gimple_asm): Special-case MEM_REF
      	with non-decl operand, avoiding a copy.
      bded0d54
    • Jakub Jelinek's avatar
      x86: Define LIBGCC2_UNWIND_ATTRIBUTE on ia32 [PR104781] · caa6c33c
      Jakub Jelinek authored
      On Mon, Mar 07, 2022 at 07:06:28AM -0800, H.J. Lu wrote:
      > Since eh_return doesn't work with stack realignment, disable SSE on
      > unwind-c.c and unwind-dw2.c to avoid stack realignment with the 4-byte
      > incoming stack to avoid SSE usage which is caused by
      
      The following change does that using LIBGCC2_UNWIND_ATTRIBUTE macro instead,
      for ia32 only by forcing -mgeneral-regs-only on routines that call
      __builtin_eh_return in libgcc.
      
      2022-03-09  Jakub Jelinek  <jakub@redhat.com>
      
      	PR target/104781
      	* config/i386/i386.h (LIBGCC2_UNWIND_ATTRIBUTE): Define for ia32.
      caa6c33c
    • Patrick Palka's avatar
      c++: non-constant non-dependent decltype folding [PR104823] · ec0f53a3
      Patrick Palka authored
      When processing a non-dependent decltype operand we want to instantiate
      it even if it's non-constant, since non-dependent decltype is always
      resolved ahead of time.  But currently finish_decltype_type uses
      instantiate_non_dependent_expr, which instantiates only potentially
      constant expressions, and this causes us to miss diagnosing the narrowing
      conversion in S{id(v)} in the below testcase because we never instantiate
      this non-constant non-dependent decltype operand.
      
      In light of
      
        > On Mon, 7 Mar 2022, Jason Merrill wrote:
        >> On 3/7/22 14:41, Patrick Palka wrote:
        >>> instantiate_non_dependent_expr instantiates only potentially constant
        >>> expressions
        >>
        >> Hmm, that now strikes me as a problematic interface, as we don't know whether
        >> what we get back is template or non-template trees.
      
      this patch drops the potentially-constant check in i_n_d_e and turns
      its dependence check into a checking_assert, since most callers already
      check that the argument is non-dependent; thus i_n_d_e now instantiates
      even non-constant expressions and always returns non-templated trees.
      This patch also relaxes the dependence check in i_n_d_e to use the
      _uneval version (since that's what finish_decltype_type uses) and
      strengthens the dependence checks used by other callers accordingly.
      
      In cp_parser_parenthesized_expression_list_elt we were calling
      instantiate_non_dependent_expr (when parsing an attribute list) without
      first checking for non-dependence.  We could fix this by guarding the
      call appropriately, but I noticed we also fold non-dependent attributes
      later from cp_check_const_attribute, so this earlier folding is at best
      redundant.  And it currently causes us to reject constexpr-attribute4.C
      below due to the second folding seeing non-templated trees.  Thus the
      right solution here seems to be to remove this unguarded call to i_n_d_e
      so that we end up instantiating non-dependent attributes only once.
      
      Finally, after calling i_n_d_e in finish_decltype_type we need to keep
      processing_template_decl cleared for sake of the later call to
      lvalue_kind, which handles templated and non-templated COND_EXPR
      differently.  Otherwise we'd incorrectly reject the declaration of g in
      cpp0x/cond2.C with:
      
        error: 'g' declared as function returning a function
      
      	PR c++/104823
      
      gcc/cp/ChangeLog:
      
      	* except.cc (build_noexcept_spec): Strengthen dependence check
      	to instantiation_dependent_expression_p.
      	* parser.cc (cp_parser_parenthesized_expression_list_elt):
      	Remove fold_expr_p parameter, and don't call
      	instantiate_non_dependent_expr.
      	(cp_parser_parenthesized_expression_list): Adjust accordingly.
      	* pt.cc (expand_integer_pack): Strengthen dependence check
      	to instantiation_dependent_expression_p.
      	(instantiate_non_dependent_expr_internal): Adjust comment.
      	(instantiate_non_dependent_expr_sfinae): Likewise.  Drop
      	the potentially-constant check, and relax and turn the
      	dependence check into a checking assert.
      	(instantiate_non_dependent_or_null): Adjust comment.
      	* semantics.cc (finish_decltype_type): Keep
      	processing_template_decl cleared after calling
      	instantiate_non_dependent_expr_sfinae.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/cpp0x/Wnarrowing19.C: New test.
      ec0f53a3
    • Patrick Palka's avatar
      c++: detecting copy-init context during CTAD [PR102137] · e32869a1
      Patrick Palka authored
      Here we're failing to communicate to cp_finish_decl from tsubst_expr
      that we're in a copy-initialization context (via the LOOKUP_ONLYCONVERTING
      flag), which causes us to always consider explicit deduction guides when
      performing CTAD for a templated variable initializer.
      
      It turns out this bug also affects consideration of explicit conversion
      operators for the same reason.  But consideration of explicit constructors
      seems unaffacted thanks to code in build_aggr_init that sets
      LOOKUP_ONLYCONVERTING when the initializer represents copy-initialization.
      
      So this patch fixes this by making cp_finish_decl set LOOKUP_ONLYCONVERTING
      just like build_aggr_init does, by inspecting the initializer, so that
      callers don't need to explicitly pass this flag appropriately.
      
      	PR c++/102137
      	PR c++/87820
      
      gcc/cp/ChangeLog:
      
      	* cp-tree.h (is_copy_initialization): Declare.
      	* decl.cc (cp_finish_decl): Set LOOKUP_ONLYCONVERTING
      	when is_copy_initialization is true.
      	* init.cc (build_aggr_init): Split out copy-initialization
      	check into ...
      	(is_copy_initialization): ... here.
      	* pt.cc (instantiate_decl): Pass 0 instead of
      	LOOKUP_ONLYCONVERTING as flags to cp_finish_decl.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/cpp0x/explicit15.C: New test.
      	* g++.dg/cpp1z/class-deduction108.C: New test.
      e32869a1
    • Patrick Palka's avatar
      c++: merge default targs for function templates [PR65396] · fe548eb8
      Patrick Palka authored
      We currently merge default template arguments for class templates, but
      not for function templates.  This patch fixes this by factoring out the
      argument merging logic in redeclare_class_template into a separate
      function and using it in duplicate_decls as well.
      
      	PR c++/65396
      
      gcc/cp/ChangeLog:
      
      	* cp-tree.h (merge_default_template_args): Declare.
      	* decl.cc (merge_default_template_args): Define, factored out
      	from redeclare_class_template.
      	(duplicate_decls): Use it when merging member function template
      	and free function declarations.
      	* pt.cc (redeclare_class_template): Factor out default argument
      	merging logic into merge_default_template_args.  Improve location
      	of a note when there's a template parameter kind mismatch.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/cpp0x/vt-34314.C: Adjust expected location of
      	"redeclared here" note.
      	* g++.dg/template/pr92440.C: Likewise.
      	* g++.old-deja/g++.pt/redecl1.C: Adjust expected location of
      	"redefinition of default argument" error.
      	* g++.dg/template/defarg23.C: New test.
      	* g++.dg/template/defarg23a.C: New test.
      fe548eb8
    • Richard Biener's avatar
      testsuite/104759 - adjust gcc.dg/vect/vect-multitypes-12.c · 4470e813
      Richard Biener authored
      This adjusts gcc.dg/vect/vect-multitypes-12.c to just look for the
      interesting loop vectorization.
      
      2022-03-09  Richard Biener  <rguenther@suse.de>
      
      	PR testsuite/104759
      	* gcc.dg/vect/vect-multitypes-12.c: Adjust.
      4470e813
    • Richard Biener's avatar
      middle-end/104786 - ICE with asm and VLA · ba3ff5e3
      Richard Biener authored
      The following fixes an ICE observed with a MEM_REF allows_mem asm
      operand referencing a VLA.  The following makes sure to not attempt
      to go the temporary creation way when we cannot.
      
      2022-03-09  Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/104786
      	* cfgexpand.cc (expand_asm_stmt): Do not generate a copy
      	for VLAs without an upper size bound.
      
      	* gcc.dg/pr104786.c: New testcase.
      ba3ff5e3
    • Xi Ruoyao's avatar
      vect: fix out-of-bound access in supports_vec_convert_optab_p [PR 104851] · 1c7b110e
      Xi Ruoyao authored
      Calling VECTOR_MODE_P with MAX_MACHINE_MODE has caused out-of-bound
      access.
      
      gcc/
      
      	PR tree-optimization/104851
      	* optabs-query.cc (supports_vec_convert_optab_p): Fix off-by-one
      	error.
      Unverified
      1c7b110e
    • Tobias Burnus's avatar
      Fortran: Fix CLASS handling in SIZEOF intrinsic · a5c9b7c4
      Tobias Burnus authored
      gcc/fortran/ChangeLog:
      
      	* trans-intrinsic.cc (gfc_conv_intrinsic_sizeof): Fix CLASS handling.
      
      gcc/testsuite/ChangeLog:
      
      	* gfortran.dg/sizeof_6.f90: New test.
      a5c9b7c4
    • Jakub Jelinek's avatar
      c, c++, c-family: -Wshift-negative-value and -Wshift-overflow* tweaks for... · d7651113
      Jakub Jelinek authored
      c, c++, c-family: -Wshift-negative-value and -Wshift-overflow* tweaks for -fwrapv and C++20+ [PR104711]
      
      As mentioned in the PR, different standards have different definition
      on what is an UB left shift.  They all agree on out of bounds (including
      negative) shift count.
      The rules used by ubsan are:
      C99-C2x ((unsigned) x >> (uprecm1 - y)) != 0 then UB
      C++11-C++17 x < 0 || ((unsigned) x >> (uprecm1 - y)) > 1 then UB
      C++20 and later everything is well defined
      Now, for C++20, I've in the P1236R1 implementation added an early
      exit for -Wshift-overflow* warning so that it never warns, but apparently
      -Wshift-negative-value remained as is.  As it is well defined in C++20,
      the following patch doesn't enable -Wshift-negative-value from -Wextra
      anymore for C++20 and later, if users want for compatibility with C++17
      and earlier get the warning, they still can by using -Wshift-negative-value
      explicitly.
      Another thing is -fwrapv, that is an extension to the standards, so it is up
      to us how exactly we define that case.  Our ubsan code treats
      TYPE_OVERFLOW_WRAPS (type0) and cxx_dialect >= cxx20 the same as only
      diagnosing out of bounds shift count and nothing else and IMHO it is most
      sensical to treat -fwrapv signed left shifts the same as C++20 treats
      them, https://eel.is/c++draft/expr.shift#2
      "The value of E1 << E2 is the unique value congruent to E1×2^E2 modulo 2^N,
      where N is the width of the type of the result.
      [Note 1: E1 is left-shifted E2 bit positions; vacated bits are zero-filled.
      — end note]"
      with no UB dependent on the E1 values.  The UB is only
      "The behavior is undefined if the right operand is negative, or greater
      than or equal to the width of the promoted left operand."
      Under the hood (except for FEs and ubsan from FEs) GCC middle-end doesn't
      consider UB in left shifts dependent on the first operand's value, only
      the out of bounds shifts.
      
      While this change isn't a regression, I'd think it is useful for GCC 12,
      it doesn't add new warnings, but just removes warnings that aren't
      appropriate.
      
      2022-03-09  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c/104711
      gcc/
      	* doc/invoke.texi (-Wextra): Document that -Wshift-negative-value
      	is enabled by it only for C++11 to C++17 rather than for C++03 or
      	later.
      	(-Wshift-negative-value): Similarly (except here we stated
      	that it is enabled for C++11 or later).
      gcc/c-family/
      	* c-opts.cc (c_common_post_options): Don't enable
      	-Wshift-negative-value from -Wextra for C++20 or later.
      	* c-ubsan.cc (ubsan_instrument_shift): Adjust comments.
      	* c-warn.cc (maybe_warn_shift_overflow): Use TYPE_OVERFLOW_WRAPS
      	instead of TYPE_UNSIGNED.
      gcc/c/
      	* c-fold.cc (c_fully_fold_internal): Don't emit
      	-Wshift-negative-value warning if TYPE_OVERFLOW_WRAPS.
      	* c-typeck.cc (build_binary_op): Likewise.
      gcc/cp/
      	* constexpr.cc (cxx_eval_check_shift_p): Use TYPE_OVERFLOW_WRAPS
      	instead of TYPE_UNSIGNED.
      	* typeck.cc (cp_build_binary_op): Don't emit
      	-Wshift-negative-value warning if TYPE_OVERFLOW_WRAPS.
      gcc/testsuite/
      	* c-c++-common/Wshift-negative-value-1.c: Remove
      	dg-additional-options, instead in target selectors of each diagnostic
      	check for exact C++ versions where it should be diagnosed.
      	* c-c++-common/Wshift-negative-value-2.c: Likewise.
      	* c-c++-common/Wshift-negative-value-3.c: Likewise.
      	* c-c++-common/Wshift-negative-value-4.c: Likewise.
      	* c-c++-common/Wshift-negative-value-7.c: New test.
      	* c-c++-common/Wshift-negative-value-8.c: New test.
      	* c-c++-common/Wshift-negative-value-9.c: New test.
      	* c-c++-common/Wshift-negative-value-10.c: New test.
      	* c-c++-common/Wshift-overflow-1.c: Remove
      	dg-additional-options, instead in target selectors of each diagnostic
      	check for exact C++ versions where it should be diagnosed.
      	* c-c++-common/Wshift-overflow-2.c: Likewise.
      	* c-c++-common/Wshift-overflow-5.c: Likewise.
      	* c-c++-common/Wshift-overflow-6.c: Likewise.
      	* c-c++-common/Wshift-overflow-7.c: Likewise.
      	* c-c++-common/Wshift-overflow-8.c: New test.
      	* c-c++-common/Wshift-overflow-9.c: New test.
      	* c-c++-common/Wshift-overflow-10.c: New test.
      	* c-c++-common/Wshift-overflow-11.c: New test.
      	* c-c++-common/Wshift-overflow-12.c: New test.
      d7651113
    • Jakub Jelinek's avatar
      simplify-rtx: Fix up SUBREG_PROMOTED_SET arguments [PR104839] · 7ca24ae5
      Jakub Jelinek authored
      The following testcase is miscompiled on powerpc64le-linux at -O1 and higher
      (except for -Og).  The bug was introduced in r12-3252-gcad36f38576a6a7
      which for SIGN_EXTEND from SUBREG_PROMOTED_SIGNED_P SUBREG used
      SUBREG_PROMOTED_SET (temp, 1) (but that makes temp
      SUBREG_PROMOTED_UNSIGNED_P because SRP_UNSIGNED is 1) and similarly the
      ZERO_EXTEND from SUBREG_PROMOTED_UNSIGNED_P SUBREG used
      SUBREG_PROMOTED_SET (temp, 0) (but that makes temp
      SUBREG_PROMOTED_SIGNED_P because SRP_SIGNED is 0).
      The following patch fixes that (swaps the 0s and 1s), but for better
      readability uses the SRP_* constants.
      rtl.h has:
      /* Valid for subregs which are SUBREG_PROMOTED_VAR_P().  In that case
         this gives the necessary extensions:
         0  - signed (SPR_SIGNED)
         1  - normal unsigned (SPR_UNSIGNED)
         2  - value is both sign and unsign extended for mode
              (SPR_SIGNED_AND_UNSIGNED).
         -1 - pointer unsigned, which most often can be handled like unsigned
              extension, except for generating instructions where we need to
              emit special code (ptr_extend insns) on some architectures
              (SPR_POINTER). */
      The expr.c change in the same commit looks ok to me (passes unsignedp
      to SUBREG_PROMOTED_SET, so 0 for signed, 1 for unsigned).
      
      2022-03-09  Jakub Jelinek  <jakub@redhat.com>
      
      	PR rtl-optimization/104839
      	* simplify-rtx.cc (simplify_unary_operation_1) <case SIGN_EXTEND>:
      	Use SRP_SIGNED instead of incorrect 1 in SUBREG_PROMOTED_SET.
      	(simplify_unary_operation_1) <case ZERO_EXTEND>: Use SRP_UNSIGNED
      	instead of incorrect 0 in SUBREG_PROMOTED_SET.
      
      	* gcc.c-torture/execute/pr104839.c: New test.
      7ca24ae5
    • Xi Ruoyao's avatar
      mips: avoid signed overflow in LUI_OPERAND [PR104842] · 2ab70a4a
      Xi Ruoyao authored
      gcc/
      
      	PR target/104842
      	* config/mips/mips.h (LUI_OPERAND): Cast the input to an unsigned
      	value before adding an offset.
      Unverified
      2ab70a4a
    • Jonathan Wakely's avatar
      contrib: Fix non-portable sed commands in gcc-descr [PR102664/] · 17bffa0c
      Jonathan Wakely authored
      POSIX sed does not support \? or \+ in its Basic Regular Expression
      grammar. Replace the \(tags/\)\? part of the pattern with a substitution
      to remove ^tags/ before other substitutions. Replace \([0-9]\+\) with
      \([0-9][0-9]*\) or with \([1-9][0-9]*\) in release branch numbers, where
      a leading zero does not occur.
      
      contrib/ChangeLog:
      
      	PR other/102664
      	* git-descr.sh: Use portable sed commands.
      	* git-undescr.sh: Likewise.
      17bffa0c
    • GCC Administrator's avatar
      Daily bump. · 8d038a84
      GCC Administrator authored
      8d038a84
  2. Mar 08, 2022
    • Roger Sayle's avatar
      PR c++/96440: ICE-on-invalid-code error recovery. · e52af9ca
      Roger Sayle authored
      This patch fixes PR c++/96440 which is an ICE-on-invalid-code regression
      affecting mainline.
      
      2022-03-08  Roger Sayle  <roger@nextmovesoftware.com>
      
      gcc/cp/ChangeLog
      	PR c++/96440
      	* decl.cc (start_decl): Defend against prefix_attributes being
      	error_mark_node.
      
      gcc/testsuite/ChangeLog
      	PR c++/96440
      	* g++.dg/cpp0x/pr96440.C: New test case.
      e52af9ca
    • Tobias Burnus's avatar
      Fortran: Fix gfc_conv_gfc_desc_to_cfi_desc with NULL [PR104126] · 48777d98
      Tobias Burnus authored
      	PR fortran/104126
      gcc/fortran/ChangeLog:
      
      	* trans-expr.cc (gfc_conv_gfc_desc_to_cfi_desc): Handle NULL
      	without MOLD.
      
      gcc/testsuite/ChangeLog:
      
      	* gfortran.dg/null_actual_2.f90: New test.
      48777d98
    • Roger Sayle's avatar
      PR c++/96437: ICE-on-invalid-code error recovery. · 3093f8a1
      Roger Sayle authored
      This patch fixes PR c++/96437 which is an ICE-on-invalid-code regression
      affecting mainline.
      
      2022-03-08  Roger Sayle  <roger@nextmovesoftware.com>
      
      gcc/cp/ChangeLog
      	PR c++/96437
      	* parser.cc (synthesize_implicit_template_parm): Check that
      	TREE_VALUE (new_parm) isn't error_mark_node before setting its
      	DECL_VIRTUAL_P.
      
      gcc/testsuite/ChangeLog
      	PR c++/96437
      	* g++.dg/cpp2a/pr96437.C: New test case.
      3093f8a1
    • Roger Sayle's avatar
      PR c++/96329: ICE-on-invalid-code error recovery. · 8ab72ec7
      Roger Sayle authored
      This patch fixes PR c++/96329 which is an ICE-on-invalid-code regression
      affecting mainline.
      
      2022-03-08  Roger Sayle  <roger@nextmovesoftware.com>
      
      gcc/cp/ChangeLog
      	PR c++/96329
      	* parser.cc (cp_parser_linkage_specification): Treat the case where
      	linkage is error_mark_node as "invalid linkage-specification".
      
      gcc/testsuite/ChangeLog
      	PR c++/96329
      	* g++.dg/template/pr96329.C: New test case.
      8ab72ec7
    • Marek Polacek's avatar
      c++: Wrong error with alias template in class tmpl [PR104108] · d54ce464
      Marek Polacek authored
      In r10-6329 I tried to optimize the number of calls to v_d_e_p in
      convert_nontype_argument by remembering whether the expression was
      value-dependent in a bool flag.  I did that wrongly assuming that its
      value-dependence will not be changed by build_converted_constant_expr.
      This testcase shows that it can: b_c_c_e gets a VAR_DECL for m_parameter,
      which is not value-dependent, but we're converting it to "const int &"
      so it returns
      
        (const int &)(const int *) &m_parameter
      
      which suddenly becomes value-dependent because of the added ADDR_EXPR:
      has_value_dependent_address is now true because m_parameter's context S<T>
      is dependent.  With this bug in place, we went to the second branch here:
      
            if (TYPE_REF_OBJ_P (TREE_TYPE (expr)) && val_dep_p)
              /* OK, dependent reference.  We don't want to ask whether a DECL is
                 itself value-dependent, since what we want here is its address.  */;
            else
              {
                expr = build_address (expr);
      
                if (invalid_tparm_referent_p (type, expr, complain))
                  return NULL_TREE;
              }
      
      wherein build_address created a bad tree and then i_t_r_p complained.
      
      	PR c++/104108
      
      gcc/cp/ChangeLog:
      
      	* pt.cc (convert_nontype_argument): Recompute
      	value_dependent_expression_p after build_converted_constant_expr.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/cpp0x/alias-decl-74.C: New test.
      d54ce464
    • Ian Lance Taylor's avatar
      compiler: ignore function type result name in export data · 2858e2af
      Ian Lance Taylor authored
      This change ensures that we never output a result name in the export
      data if there is only a single result.  Previously we would output a ?
      if the single result had a name.  That made the output unstable,
      because the hashing ignores the result name, so whether we output a ?
      or not depended on how equal hash elements were handled.
      
      For https://gcc.gnu.org/PR104832
      
      Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/390874
      2858e2af
    • Marek Polacek's avatar
      c++: Attribute deprecated/unavailable divergence · 6f748bc1
      Marek Polacek authored
      Attributes deprecated and unavailable are largely the same, except
      that the former produces a warning whereas the latter produces an error.
      So is_late_template_attribute should treat them the same.  Confirmed by
      Iain that this divergence is not intentional:
      <https://gcc.gnu.org/pipermail/gcc-patches/2022-February/591007.html>.
      
      gcc/cp/ChangeLog:
      
      	* decl2.cc (is_late_template_attribute): Do not defer attribute
      	unavailable.
      	* pt.cc (tsubst_enum): Set TREE_UNAVAILABLE.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/ext/attr-unavailable-9.C: Add dg-error.
      6f748bc1
    • Harald Anlauf's avatar
      Fortran: do not frontend-optimize MINLOC/MAXLOC for character arrays · e3e369da
      Harald Anlauf authored
      gcc/fortran/ChangeLog:
      
      	PR fortran/104811
      	* frontend-passes.cc (optimize_minmaxloc): Do not attempt
      	frontend-optimization of MINLOC/MAXLOC for character arrays, as
      	there is no suitable code yet for inline expansion.
      
      gcc/testsuite/ChangeLog:
      
      	PR fortran/104811
      	* gfortran.dg/minmaxloc_16.f90: New test.
      e3e369da
    • Jakub Jelinek's avatar
      c++: Don't suggest cdtor or conversion op identifiers in spelling hints [PR104806] · e480c3c0
      Jakub Jelinek authored
      On the following testcase, we emit "did you mean '__dt '?" in the error
      message.  "__dt " shows there because it is dtor_identifier, but we
      shouldn't suggest those to the user, they are purely internal and can't
      be really typed by the user because of the final space in it.
      
      2022-03-08  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c++/104806
      	* search.cc (lookup_field_fuzzy_info::fuzzy_lookup_field): Ignore
      	identifiers with space at the end.
      
      	* g++.dg/spellcheck-pr104806.C: New test.
      e480c3c0
    • Christophe Lyon's avatar
      arm: Remove unused variable arm_binop_none_none_unone_qualifiers · 768956c0
      Christophe Lyon authored
      Commits r12-7342 and r12-7344 made some cleanup, leaving
      arm_binop_none_none_unone_qualifiers unused.
      This is causing build failures with -Werror (eg bootstrap).
      
      This patch fixes the problem by removing the definition of
      arm_binop_none_none_unone_qualifiers and
      BINOP_NONE_NONE_UNONE_QUALIFIERS which are now unused.
      
      Tested by bootstraping on arm-linux-gnueaibhf.
      
      2022-03-04  Christophe Lyon  <christophe.lyon@arm.com>
      
      	gcc/
      	* config/arm/arm-builtins.cc
      	(arm_binop_none_none_unone_qualifiers): Delete.
      	(BINOP_NONE_NONE_UNONE_QUALIFIERS): Delete.
      768956c0
    • Iain Sandoe's avatar
      Darwin: Address a translation comment [PR104552]. · 34b45cc5
      Iain Sandoe authored
      
      This amends an error message to correct punctuation and a little
      better wording.
      
      Signed-off-by: default avatarIain Sandoe <iain@sandoe.co.uk>
      
      	PR translation/104552
      
      gcc/ChangeLog:
      
      	* config/host-darwin.cc (darwin_gt_pch_get_address): Amend
      	the PCH out of memory error message punctuation and wording.
      34b45cc5
    • David Malcolm's avatar
      analyzer: more test coverage of leak detection [PR99771] · b7175f36
      David Malcolm authored
      
      gcc/testsuite/ChangeLog:
      	PR analyzer/99771
      	* gcc.dg/analyzer/leak-4.c: New test.
      
      Signed-off-by: default avatarDavid Malcolm <dmalcolm@redhat.com>
      b7175f36
    • Marek Polacek's avatar
      rtl: ICE with thread_local and inline asm [PR104777] · e1133c02
      Marek Polacek authored
      In r270550, Jakub fixed classify_insn to handle asm goto: if the asm can
      jump to a label, the insn should be a JUMP_INSN.
      
      However, as the following testcase shows, non-null ASM_OPERANDS_LABEL_VEC
      doesn't guarantee that the rtx has any actual labels it can branch to.
      Here, the rtvec has 0 elements because expand_asm_stmt created it:
      
        rtvec labelvec = rtvec_alloc (nlabels); // nlabels == 0
      
      This causes an ICE in update_br_prob_note: BRANCH_EDGE (bb) crashes
      because there's no branch edge.  I think we can fix this by checking
      that there is at least one label the asm can jump to before wrapping
      the ASM_OPERANDS in a JUMP_INSN.
      
      	PR rtl-optimization/104777
      
      gcc/ChangeLog:
      
      	* rtl.cc (classify_insn): For ASM_OPERANDS, return JUMP_INSN only if
      	ASM_OPERANDS_LABEL_VEC has at least one element.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/torture/tls/pr104777.c: New test.
      e1133c02
    • H.J. Lu's avatar
      x86: Disallow unsupported EH return · 23ed4df5
      H.J. Lu authored
      Disallow stack realignment and regparm nested function with EH return
      since they don't work together.
      
      gcc/
      
      	PR target/104781
      	* config/i386/i386.cc (ix86_expand_epilogue): Sorry if there is
      	stack realignment or regparm nested function with EH return.
      
      gcc/testsuite/
      
      	PR target/104781
      	* gcc.target/i386/eh_return-1.c: Add -mincoming-stack-boundary=4.
      	* gcc.target/i386/eh_return-2.c: Likewise.
      23ed4df5
    • Andre Vieira's avatar
      arm: MVE: Relax addressing modes for full loads and stores · 796f5220
      Andre Vieira authored
      This patch relaxes the addressing modes for the mve full load and stores (by
      full loads and stores I mean non-widening or narrowing loads and stores resp).
      The code before was requiring a LO_REGNUM for these, where this is only a
      requirement if the load is widening or the store narrowing.
      
      gcc/ChangeLog:
      
      	PR target/104790
      	* config/arm/arm.h (MVE_STN_LDW_MODE): New MACRO.
      	* config/arm/arm.cc (mve_vector_mem_operand): Relax constraint on base
      	register for non widening loads or narrowing stores.
      796f5220
    • Eric Gallager's avatar
      Fix typo in gcc/params.opt. · 6319391d
      Eric Gallager authored
      Addresses one of the points raised in #104552; checking in under
      the "obvious" rule.
      
      gcc/ChangeLog:
      	PR translation/104552
      	* params.opt: Fix typo.
      6319391d
    • Jonathan Wakely's avatar
      contrib: Fix gcc-descr script [PR102664] · 10ecf518
      Jonathan Wakely authored
      POSIX expr does not support the 'match' keyword, so the git-descr.sh
      scripts should use ':' instead.
      
      contrib/ChangeLog:
      
      	PR other/102664
      	* git-descr.sh: Use portable form of expr match.
      10ecf518
    • Richard Biener's avatar
      tree-optimization/84201 - add --param vect-induction-float · 058d19b4
      Richard Biener authored
      This adds a --param to allow disabling of vectorization of
      floating point inductions.  Ontop of -Ofast this should allow
      549.fotonik3d_r to not miscompare.
      
      2022-03-08  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/84201
      	* params.opt (-param=vect-induction-float): Add.
      	* doc/invoke.texi (vect-induction-float): Document.
      	* tree-vect-loop.cc (vectorizable_induction): Honor
      	param_vect_induction_float.
      
      	* gcc.dg/vect/pr84201.c: New testcase.
      058d19b4
    • Jonathan Wakely's avatar
      libstdc++: Remove incorrect copyright notice from header · 7cce7b1c
      Jonathan Wakely authored
      This file has the SGI copyright notice, but contains no code from
      the SGI STL. It was entirely written by me in 2019, originally as part
      of the <memory> header. When I extracted it into a new header I
      accidentally copied across the SGI copyright, but that only applies to
      some much older parts of <memory>.
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/uses_allocator_args.h: Remove incorrect copyright
      	notice.
      7cce7b1c
    • Tamar Christina's avatar
      vect: disable bitmask tests on sparc · 5f07095d
      Tamar Christina authored
      These testcases declare requiring vect_int which sparc declares as well however
      sparc doesn't have an optab to vectorize comparisons so these testcases fail to
      vectorize and so the tests fail.
      
      As such best coure of action is to just skip them on sparc as comparisons are
      somewhat expected from a target that can do SIMD.
      
      gcc/testsuite/ChangeLog:
      
      	PR tree-optimization/104755
      	* gcc.dg/vect/vect-bic-bitmask-10.c: Disable sparc.
      	* gcc.dg/vect/vect-bic-bitmask-11.c: Likewise.
      	* gcc.dg/vect/vect-bic-bitmask-12.c: Likewise.
      	* gcc.dg/vect/vect-bic-bitmask-2.c: Likewise.
      	* gcc.dg/vect/vect-bic-bitmask-23.c: Likewise.
      	* gcc.dg/vect/vect-bic-bitmask-3.c: Likewise.
      	* gcc.dg/vect/vect-bic-bitmask-4.c: Likewise.
      	* gcc.dg/vect/vect-bic-bitmask-5.c: Likewise.
      	* gcc.dg/vect/vect-bic-bitmask-6.c: Likewise.
      	* gcc.dg/vect/vect-bic-bitmask-8.c: Likewise.
      	* gcc.dg/vect/vect-bic-bitmask-9.c: Likewise.
      5f07095d
    • Martin Jambor's avatar
      params: Remove repeated word "that" in parameter description · da2667cb
      Martin Jambor authored
      One of the mistakes reported in PR 104552 is repeated "that" in
      description of ipa-cp-recursive-freq-factor which I introduced.  This
      patch removes one of them.
      
      gcc/ChangeLog:
      
      2022-03-07  Martin Jambor  <mjambor@suse.cz>
      
      	PR translation/104552
      	* params.opt (ipa-cp-recursive-freq-factor): Remove repeated word
      	"that" in the description.
      Unverified
      da2667cb
    • Richard Biener's avatar
      tree-optimization/104825 - guard modref query · dc46350d
      Richard Biener authored
      The following makes sure to guard the modref query in VN on a
      pointer typed argument.
      
      2022-03-08  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/104825
      	* tree-ssa-sccvn.cc (visit_reference_op_call): Properly
      	guard modref get_ao_ref on a pointer typed argument.
      
      	* gcc.dg/torture/pr104825.c: New testcase.
      dc46350d
    • liuhongt's avatar
      Optimize v4si broadcast for noavx512vl. · b1a741a0
      liuhongt authored
      This will enable below
      
      -       vbroadcastss    .LC1(%rip), %xmm0
      +       movl    $-45, %edx
      +       vmovd   %edx, %xmm0
      +       vpshufd $0, %xmm0, %xmm0
      
      According to microbenchmark, it's faster than broadcast from memory
      for TARGET_INTER_UNIT_MOVES_TO_VEC.
      
      gcc/ChangeLog:
      
      	* config/i386/sse.md (*vec_dupv4si): Disable memory operand
      	for !TARGET_INTER_UNIT_MOVES_TO_VEC when prefer_for_speed.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/i386/pr100865-8a.c: Adjust testcase.
      	* gcc.target/i386/pr100865-8c.c: Ditto.
      	* gcc.target/i386/pr100865-9c.c: Ditto.
      b1a741a0
    • GCC Administrator's avatar
      Daily bump. · e6533e2e
      GCC Administrator authored
      e6533e2e
Loading