Skip to content
Snippets Groups Projects
  1. Mar 02, 2024
  2. Mar 01, 2024
    • Patrick Palka's avatar
      c++/modules: depending local enums [PR104919, PR106009] · 574fd1f1
      Patrick Palka authored
      For local enums defined in a non-template function or a function template
      instantiation it seems we neglect to make the function depend on the enum
      definition (which modules considers logically separate), which ultimately
      causes the enum definition to not be properly streamed before uses
      within the function definition are streamed.
      
      The code responsible for noting such dependencies is
      
      gcc/cp/module.cc
      @@ -8784,17 +8784,6 @@ trees_out::decl_node (tree decl, walk_kind ref)
         depset *dep = NULL;
         if (streaming_p ())
           dep = dep_hash->find_dependency (decl);
      !  else if (TREE_CODE (ctx) != FUNCTION_DECL
      !          || TREE_CODE (decl) == TEMPLATE_DECL
      !          || (dep_hash->sneakoscope && DECL_IMPLICIT_TYPEDEF_P (decl))
      !          || (DECL_LANG_SPECIFIC (decl)
      !              && DECL_MODULE_IMPORT_P (decl)))
      !    {
      !      auto kind = (TREE_CODE (decl) == NAMESPACE_DECL
      !                  && !DECL_NAMESPACE_ALIAS (decl)
      !                  ? depset::EK_NAMESPACE : depset::EK_DECL);
      !      dep = dep_hash->add_dependency (decl, kind);
      !    }
      
         if (!dep)
           {
      
      and the condition there notably excludes local TYPE_DECLs from a
      non-template-pattern function (when streaming a template pattern
      we'll see be dealing with the corresponding TEMPLATE_DECL of the
      local TYPE_DECL here, so we'll add the dependency).
      
      Local classes on the other hand seem to work properly, but perhaps by
      accident: with a local class we end up making the function depend on the
      injected-class-name of the local class rather than the local class as a
      whole because the injected-class-name satisfies the criteria (since its
      context is the local class, not the function).
      
      The 'sneakoscope' flag is set when walking a function declaration and
      its purpose seems to be to catch a local type that escapes the function
      via a deduced return type (so called voldemort types) and note a
      dependency on them.  But there seems to be no reason to restrict this
      behavior to voldemort types, and indeed consistently noting the dependency
      for all local types fixes these PRs (almost).  So this patch gets rid of
      this flag and enables the dependency tracking unconditionally.
      
      This was nearly enough to make things work, except we now ran into
      issues with the local TYPE_/CONST_DECL copies from the pre-gimplified
      version of a constexpr function body during streaming.  Rather than
      making modules cope with this, it occurred to me that we don't need to
      make copies of local types when saving the pre-gimplified body (and when
      making further copies thereof); only VAR_DECLs etc need to be copied
      (so that we don't conflate local variables from different recursive
      calls to the same function during constexpr evaluation).  So this patch
      adjusts copy_fn accordingly.
      
      	PR c++/104919
      	PR c++/106009
      
      gcc/cp/ChangeLog:
      
      	* module.cc (depset::hash::sneakoscope): Remove.
      	(trees_out::decl_node): Always add a dependency on a local type.
      	(depset::hash::find_dependencies): Remove sneakoscope stuff.
      
      gcc/ChangeLog:
      
      	* tree-inline.cc (remap_decl): Handle copy_decl returning the
      	original decl.
      	(remap_decls): Handle remap_decl returning the original decl.
      	(copy_fn): Adjust copy_decl callback to skip TYPE_DECL and
      	CONST_DECL.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/modules/tdef-7.h: Remove outdated comment.
      	* g++.dg/modules/tdef-7_b.C: Don't expect two TYPE_DECLs.
      	* g++.dg/modules/enum-13_a.C: New test.
      	* g++.dg/modules/enum-13_b.C: New test.
      574fd1f1
    • Nathaniel Shead's avatar
      c++: Stream definitions for implicit instantiations [PR114170] · 852b5855
      Nathaniel Shead authored
      
      An implicit instantiation has an initializer depending on whether
      DECL_INITIALIZED_P is set (like normal VAR_DECLs) which needs to be
      written to ensure that consumers of header modules properly emit
      definitions for these instantiations. This patch ensures that we
      correctly fallback to checking this flag when DECL_INITIAL is not set
      for a template instantiation.
      
      For variables with non-trivial dynamic initialization, DECL_INITIAL can
      be empty after 'split_nonconstant_init' but DECL_INITIALIZED_P is still
      set; we need to check the latter to determine if we need to go looking
      for a definition to emit (often in 'static_aggregates' here). This is
      the case in the linked testcase.
      
      However, for template specialisations (not instantiations?) we primarily
      care about DECL_INITIAL; if the variable has initialization depending on
      a template parameter then we'll need to emit that definition even though
      it doesn't yet have DECL_INITIALIZED_P set; this is the case in e.g.
      
        template <int N> int value = N;
      
      As a drive-by fix, also ensures that the count of initializers matches
      the actual number of initializers written. This doesn't seem to be
      necessary for correctness in the current testsuite, but feels wrong and
      makes debugging harder when initializers aren't properly written for
      other reasons.
      
      	PR c++/114170
      
      gcc/cp/ChangeLog:
      
      	* module.cc (has_definition): Fall back to DECL_INITIALIZED_P
      	when DECL_INITIAL is not set on a template.
      	(module_state::write_inits): Only increment count when
      	initializers are actually written.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/modules/var-tpl-2_a.H: New test.
      	* g++.dg/modules/var-tpl-2_b.C: New test.
      
      Signed-off-by: default avatarNathaniel Shead <nathanieloshead@gmail.com>
      852b5855
    • Nathaniel Shead's avatar
      c++: Ensure DECL_CONTEXT is set for temporary vars [PR114005] · 2823b4d9
      Nathaniel Shead authored
      
      Modules streaming requires DECL_CONTEXT to be set for anything streamed.
      This patch ensures that 'create_temporary_var' does set a DECL_CONTEXT
      for these variables (such as the backing storage for initializer_lists)
      even if not inside a function declaration.
      
      	PR c++/114005
      
      gcc/cp/ChangeLog:
      
      	* init.cc (create_temporary_var): Use current_scope instead of
      	current_function_decl.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/modules/pr114005_a.C: New test.
      	* g++.dg/modules/pr114005_b.C: New test.
      
      Signed-off-by: default avatarNathaniel Shead <nathanieloshead@gmail.com>
      2823b4d9
    • Jeff Law's avatar
      [14 regression] Fix insn types in risc-v port · b7b387e1
      Jeff Law authored
      So one of the broad goals we've had over the last few months has been to ensure
      that every insn has a scheduling type and that every insn is associated with an
      insn reservation in the scheduler.
      
      This avoids some amazingly bad behavior in the scheduler.  I won't go through
      the gory details.
      
      I was recently analyzing a code quality regression with dhrystone (ugh!) and
      one of the issues was poor scheduling which lengthened the lifetime of a pseudo
      and ultimately resulted in needing an additional callee saved register
      save/restore.
      
      This was ultimately tracked down incorrect types on a few patterns.  So I did
      an audit of all the patterns that had types added/changed as part of this
      effort and found a variety of problems, primarily in the various move patterns
      and extension patterns.  This is a regression relative to gcc-13.
      
      Naturally the change in types affects scheduling, which in turn changes the
      precise code we generate and causes some testsuite fallout.
      
      I considered updating the regexps since the change in the resulting output is
      pretty consistent.  But of course the test would still be sensitive to things
      like load latency.  So instead I just turned off the 2nd phase scheduler in the
      affected tests.
      
      Bootstrapped and regression tested on rv64gc-linux-gnu.
      gcc
      	* config/riscv/riscv.md (zero_extendqi<SUPERQI:mode>2_internal): Fix
      	type attribute.
      	(extendsidi2_internal, movhf_hardfloat, movhf_softfloat): Likewise.
      	(movdi_32bit, movdi_64bit, movsi_internal): Likewise.
      	(movhi_internal, movqi_internal): Likewise.
      	(movsf_softfloat, movsf_hardfloat): Likewise.
      	(movdf_hardfloat_rv32, movdf_hardfloat_rv64): Likewise.
      	(movdf_softfloat): Likewise.
      
      gcc/testsuite
      	* gcc.target/riscv/rvv/autovec/vls/calling-convention-1.c: Turn off
      	second phase scheduler.
      	* gcc.target/riscv/rvv/autovec/vls/calling-convention-2.c: Likewise.
      	* gcc.target/riscv/rvv/autovec/vls/calling-convention-3.c: Likewise.
      	* gcc.target/riscv/rvv/autovec/vls/calling-convention-4.c: Likewise.
      	* gcc.target/riscv/rvv/autovec/vls/calling-convention-5.c: Likewise.
      	* gcc.target/riscv/rvv/autovec/vls/calling-convention-6.c: Likewise.
      	* gcc.target/riscv/rvv/autovec/vls/calling-convention-7.c: Likewise.
      b7b387e1
    • Patrick Palka's avatar
      c++/modules: complete_vars ICE with non-exported constexpr var · e15ef78e
      Patrick Palka authored
      
      Here after stream-in of the non-exported constexpr global 'A a' we call
      maybe_register_incomplete_var, which we'd expect to be a no-op here but
      it manages to take its second branch and pushes {a, NULL_TREE} onto
      incomplete_vars.  Later after defining B we ICE from complete_vars due
      to this pushed NULL_TREE class context.
      
      Judging by the two commits that introduced/modified this part of
      maybe_register_incomplete_var, r196852 and r214333, it seems this second
      branch is only concerned with constexpr static data members (whose
      initializer may contain a pointer-to-member for a not-yet-complete class)
      So this patch restricts this branch accordingly so it's not inadvertently
      taken during stream-in.
      
      gcc/cp/ChangeLog:
      
      	* decl.cc (maybe_register_incomplete_var): Restrict second
      	branch to static data members from a not-yet-complete class.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/modules/cexpr-4_a.C: New test.
      	* g++.dg/modules/cexpr-4_b.C: New test.
      
      Reviewed-by: default avatarJason Merrill <jason@redhat.com>
      e15ef78e
    • Marek Polacek's avatar
      c++: implement [[gnu::no_dangling]] [PR110358] · c7607c4c
      Marek Polacek authored
      Since -Wdangling-reference has false positives that can't be
      prevented, we should offer an easy way to suppress the warning.
      Currently, that is only possible by using a #pragma, either around the
      enclosing class or around the call site.  But #pragma GCC diagnostic tend
      to be onerous.  A better solution would be to have an attribute.
      
      To that end, this patch adds a new attribute, [[gnu::no_dangling]].
      This attribute takes an optional bool argument to support cases like:
      
        template <typename T>
        struct [[gnu::no_dangling(std::is_reference_v<T>)]] S {
           // ...
        };
      
      	PR c++/110358
      	PR c++/109642
      
      gcc/cp/ChangeLog:
      
      	* call.cc (no_dangling_p): New.
      	(reference_like_class_p): Use it.
      	(do_warn_dangling_reference): Use it.  Don't warn when the function
      	or its enclosing class has attribute gnu::no_dangling.
      	* tree.cc (cxx_gnu_attributes): Add gnu::no_dangling.
      	(handle_no_dangling_attribute): New.
      
      gcc/ChangeLog:
      
      	* doc/extend.texi: Document gnu::no_dangling.
      	* doc/invoke.texi: Mention that gnu::no_dangling disables
      	-Wdangling-reference.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/ext/attr-no-dangling1.C: New test.
      	* g++.dg/ext/attr-no-dangling2.C: New test.
      	* g++.dg/ext/attr-no-dangling3.C: New test.
      	* g++.dg/ext/attr-no-dangling4.C: New test.
      	* g++.dg/ext/attr-no-dangling5.C: New test.
      	* g++.dg/ext/attr-no-dangling6.C: New test.
      	* g++.dg/ext/attr-no-dangling7.C: New test.
      	* g++.dg/ext/attr-no-dangling8.C: New test.
      	* g++.dg/ext/attr-no-dangling9.C: New test.
      c7607c4c
    • David Faust's avatar
      testsuite: ctf: make array in ctf-file-scope-1 fixed length · 64221c7b
      David Faust authored
      The array member of struct SFOO in the ctf-file-scope-1 caused the test
      to fail for the BPF target, since BPF does not support dynamic stack
      allocation. The array does not need to variable length for the sake of
      the test, so make it fixed length instead to allow the test to run
      successfully for the bpf-unknown-none target.
      
      gcc/testsuite/
      
      	* gcc.dg/debug/ctf/ctf-file-scope-1.c (SFOO): Make array member
      	fixed-length.
      64221c7b
    • Harald Anlauf's avatar
      Fortran: improve checks of NULL without MOLD as actual argument [PR104819] · db0b6746
      Harald Anlauf authored
      gcc/fortran/ChangeLog:
      
      	PR fortran/104819
      	* check.cc (gfc_check_null): Handle nested NULL()s.
      	(is_c_interoperable): Check for MOLD argument of NULL() as part of
      	the interoperability check.
      	* interface.cc (gfc_compare_actual_formal): Extend checks for NULL()
      	actual arguments for presence of MOLD argument when required by
      	Interp J3/22-146.
      
      gcc/testsuite/ChangeLog:
      
      	PR fortran/104819
      	* gfortran.dg/assumed_rank_9.f90: Adjust testcase use of NULL().
      	* gfortran.dg/pr101329.f90: Adjust testcase to conform to interp.
      	* gfortran.dg/null_actual_4.f90: New test.
      db0b6746
    • Patrick Palka's avatar
      c++: auto(x) partial substitution [PR110025, PR114138] · a6a1920b
      Patrick Palka authored
      
      In r12-6773-g09845ad7569bac we gave CTAD placeholders a level of 0 and
      ensured we never replaced them via tsubst.  It turns out that autos
      representing an explicit cast need the same treatment and for the same
      reason: such autos appear in an expression context and so their level
      gets easily messed up after partial substitution, leading to premature
      replacement via an incidental tsubst instead of via do_auto_deduction.
      
      This patch fixes this by extending the r12-6773 approach to auto(x).
      
      	PR c++/110025
      	PR c++/114138
      
      gcc/cp/ChangeLog:
      
      	* cp-tree.h (make_cast_auto): Declare.
      	* parser.cc (cp_parser_functional_cast): If the type is an auto,
      	replace it with a level-less one via make_cast_auto.
      	* pt.cc (find_parameter_packs_r): Don't treat level-less auto
      	as a type parameter pack.
      	(tsubst) <case TEMPLATE_TYPE_PARM>: Generalize CTAD placeholder
      	auto handling to all level-less autos.
      	(make_cast_auto): Define.
      	(do_auto_deduction): Handle replacement of a level-less auto.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/cpp23/auto-fncast16.C: New test.
      	* g++.dg/cpp23/auto-fncast17.C: New test.
      	* g++.dg/cpp23/auto-fncast18.C: New test.
      
      Reviewed-by: default avatarJason Merrill <jason@redhat.com>
      a6a1920b
    • Georg-Johann Lay's avatar
      AVR: Overhaul help screen · 4894c82b
      Georg-Johann Lay authored
      gcc/
      	* config/avr/avr.opt: Overhaul help screen.
      4894c82b
    • Jakub Jelinek's avatar
      c++: Fix up decltype of non-dependent structured binding decl in template [PR92687] · 867cbadb
      Jakub Jelinek authored
      finish_decltype_type uses DECL_HAS_VALUE_EXPR_P (expr) check for
      DECL_DECOMPOSITION_P (expr) to determine if it is
      array/struct/vector/complex etc. subobject proxy case vs. structured
      binding using std::tuple_{size,element}.
      For non-templates or when templates are already instantiated, that works
      correctly, finalized DECL_DECOMPOSITION_P non-base vars indeed have
      DECL_VALUE_EXPR in the former case and don't have it in the latter.
      It works fine for dependent structured bindings as well, cp_finish_decomp in
      that case creates DECLTYPE_TYPE tree and defers the handling until
      instantiation.
      As the testcase shows, this doesn't work for the non-dependent structured
      binding case in templates, because DECL_HAS_VALUE_EXPR_P is set in that case
      always; cp_finish_decomp ends with:
        if (processing_template_decl)
          {
            for (unsigned int i = 0; i < count; i++)
              if (!DECL_HAS_VALUE_EXPR_P (v[i]))
                {
                  tree a = build_nt (ARRAY_REF, decl, size_int (i),
                                     NULL_TREE, NULL_TREE);
                  SET_DECL_VALUE_EXPR (v[i], a);
                  DECL_HAS_VALUE_EXPR_P (v[i]) = 1;
                }
          }
      and those artificial ARRAY_REFs are used in various places during
      instantiation to find out what base the DECL_DECOMPOSITION_P VAR_DECLs
      have and their positions.
      
      The following patch fixes that by changing lookup_decomp_type, such that
      it doesn't ICE when called on a DECL_DECOMPOSITION_P var which isn't in a
      hash table, but returns NULL_TREE in that case, and for processing_template_decl
      asserts DECL_HAS_VALUE_EXPR_P is non-NULL and just calls lookup_decomp_type.
      If it returns non-NULL, it is a structured binding using tuple and its result
      is returned, otherwise it falls through to returning unlowered_expr_type (expr)
      because it is an array, structure etc. subobject proxy.
      For !processing_template_decl it keeps doing what it did before,
      DECL_HAS_VALUE_EXPR_P meaning it is an array/structure etc. subobject proxy,
      otherwise the tuple case.
      
      2024-03-01  Jakub Jelinek  <jakub@redhat.com>
      
      	PR c++/92687
      	* decl.cc (lookup_decomp_type): Return NULL_TREE if decomp_type_table
      	doesn't have entry for V.
      	* semantics.cc (finish_decltype_type): If ptds.saved, assert
      	DECL_HAS_VALUE_EXPR_P is true and decide on tuple vs. non-tuple based
      	on if lookup_decomp_type is NULL or not.
      
      	* g++.dg/cpp1z/decomp59.C: New test.
      867cbadb
    • Jakub Jelinek's avatar
      OpenMP/C++: Fix (first)private clause with member variables [PR110347] · 4f82d5a9
      Jakub Jelinek authored
      
      OpenMP permits '(first)private' for C++ member variables, which GCC handles
      by tagging those by DECL_OMP_PRIVATIZED_MEMBER, adding a temporary VAR_DECL
      and DECL_VALUE_EXPR pointing to the 'this->member_var' in the C++ front end.
      
      The idea is that in omp-low.cc, the DECL_VALUE_EXPR is used before the
      region (for 'firstprivate'; ignored for 'private') while in the region,
      the DECL itself is used.
      
      In gimplify, the value expansion is suppressed and deferred if the
        lang_hooks.decls.omp_disregard_value_expr (decl, shared)
      returns true - which is never the case if 'shared' is true. In OpenMP 4.5,
      only 'map' and 'use_device_ptr' was permitted for the 'target' directive.
      And when OpenMP 5.0's 'private'/'firstprivate' clauses was added, the
      the update that now 'shared' argument could be false was missed. The
      respective check has now been added.
      
      2024-03-01  Jakub Jelinek  <jakub@redhat.com>
      	    Tobias Burnus  <tburnus@baylibre.com>
      
      	PR c++/110347
      
      gcc/ChangeLog:
      
      	* gimplify.cc (omp_notice_variable): Fix 'shared' arg to
      	lang_hooks.decls.omp_disregard_value_expr for
      	(first)private in target regions.
      
      libgomp/ChangeLog:
      
      	* testsuite/libgomp.c++/target-lambda-3.C: Moved from
      	gcc/testsuite/g++.dg/gomp/ and fixed is-mapped handling.
      	* testsuite/libgomp.c++/target-lambda-1.C: Modify to also
      	also work without offloading.
      	* testsuite/libgomp.c++/firstprivate-1.C: New test.
      	* testsuite/libgomp.c++/firstprivate-2.C: New test.
      	* testsuite/libgomp.c++/private-1.C: New test.
      	* testsuite/libgomp.c++/private-2.C: New test.
      	* testsuite/libgomp.c++/target-lambda-4.C: New test.
      	* testsuite/libgomp.c++/use_device_ptr-1.C: New test.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/gomp/target-lambda-1.C: Moved to become a
      	run-time test under testsuite/libgomp.c++.
      
      Co-authored-by: default avatarTobias Burnus <tburnus@baylibre.com>
      4f82d5a9
    • Bernhard Reutner-Fischer's avatar
      contrib: mklog: Use present tense in ChangeLog · 1e74ce89
      Bernhard Reutner-Fischer authored
      contrib/ChangeLog:
      
      	* mklog.py: Use present tense in ChangeLog.
      1e74ce89
    • Jakub Jelinek's avatar
      calls: Further fixes for TYPE_NO_NAMED_ARGS_STDARG_P handling [PR114136] · b5377928
      Jakub Jelinek authored
      On Tue, Feb 27, 2024 at 04:41:32PM +0000, Richard Earnshaw wrote:
      > On Arm the PR107453 change is causing all anonymous arguments to be passed on the
      > stack, which is incorrect per the ABI.  On a target that uses
      > 'pretend_outgoing_vararg_named', why is it correct to set n_named_args to
      > zero?  Is it enough to guard both the statements you've added with
      > !targetm.calls.pretend_outgoing_args_named?
      
      The TYPE_NO_NAMED_ARGS_STDARG_P functions (C23 fns like void foo (...) {})
      have NULL type_arg_types, so the list_length (type_arg_types) isn't done for
      it, but it should be handled as if it was non-NULL but list length was 0.
      
      So, for the
        if (type_arg_types != 0)
          n_named_args
            = (list_length (type_arg_types)
               /* Count the struct value address, if it is passed as a parm.  */
               + structure_value_addr_parm);
        else if (TYPE_NO_NAMED_ARGS_STDARG_P (funtype))
          n_named_args = 0;
        else
          /* If we know nothing, treat all args as named.  */
          n_named_args = num_actuals;
      case, I think guarding it by any target hooks is wrong, although
      I guess it should have been
          n_named_args = structure_value_addr_parm;
      instead of
          n_named_args = 0;
      
      For the second
        if (type_arg_types != 0
            && targetm.calls.strict_argument_naming (args_so_far))
          ;
        else if (type_arg_types != 0
                 && ! targetm.calls.pretend_outgoing_varargs_named (args_so_far))
          /* Don't include the last named arg.  */
          --n_named_args;
        else if (TYPE_NO_NAMED_ARGS_STDARG_P (funtype))
          n_named_args = 0;
        else
          /* Treat all args as named.  */
          n_named_args = num_actuals;
      I think we should treat those as if type_arg_types was non-NULL
      with 0 elements in the list, except the --n_named_args would for
      !structure_value_addr_parm lead to n_named_args = -1, I think we want
      0 for that case.
      
      2024-03-01  Jakub Jelinek  <jakub@redhat.com>
      
      	PR middle-end/114136
      	* calls.cc (expand_call): For TYPE_NO_NAMED_ARGS_STDARG_P set
      	n_named_args initially before INIT_CUMULATIVE_ARGS to
      	structure_value_addr_parm rather than 0, after it don't modify
      	it if strict_argument_naming and clear only if
      	!pretend_outgoing_varargs_named.
      b5377928
    • Jakub Jelinek's avatar
      dwarf2out: Don't move variable sized aggregates to comdat [PR114015] · 5b1fb8f8
      Jakub Jelinek authored
      The following testcase ICEs, because we decide to move that
      struct { char a[n]; } DW_TAG_structure_type into .debug_types section
      / DW_UT_type DWARF5 unit, but refer from there to a DW_TAG_variable
      (created artificially for the array bounds).
      Even with non-bitint, I think it is just wrong to use .debug_types
      section / DW_UT_type for something that uses DW_OP_fbreg and similar
      in it, things clearly dependent on a particular function.
      In most cases, is_nested_in_subprogram (die) check results in such
      aggregates not being moved, but in the function parameter type case
      that is not the case.
      
      The following patch fixes it by returning false from should_move_die_to_comdat
      for non-constant sized aggregate types, i.e. when either we gave up on
      adding DW_AT_byte_size for it because it wasn't expressable, or when
      it is something non-constant (location description, reference, ...).
      
      2024-03-01  Jakub Jelinek  <jakub@redhat.com>
      
      	PR debug/114015
      	* dwarf2out.cc (should_move_die_to_comdat): Return false for
      	aggregates without DW_AT_byte_size attribute or with non-constant
      	DW_AT_byte_size.
      
      	* gcc.dg/debug/dwarf2/pr114015.c: New test.
      5b1fb8f8
    • Georg-Johann Lay's avatar
      AVR: Document valid ranges of -mfuse-add= · 270d0f69
      Georg-Johann Lay authored
      gcc/
      	* doc/invoke.texi (AVR Options) <-mfuse-add=level>: Document
      	valid values for level.
      270d0f69
    • Richard Biener's avatar
      middle-end/114070 - VEC_COND_EXPR folding · f9c30ea7
      Richard Biener authored
      The following amends the PR114070 fix to optimistically allow
      the folding when we cannot expand the current vec_cond using
      vcond_mask and we're still before vector lowering.  This leaves
      a small window between vectorization and lowering where we could
      break vec_conds that can be expanded via vcond{,u,eq}, most
      susceptible is the loop unrolling pass which applies VN and thus
      possibly folding to the unrolled body of a vectorized loop.
      
      This gets back the folding for targets that cannot do vectorization.
      It doesn't get back the folding for x86 with AVX512 for example
      since that can handle the original IL but not the folded since
      it misses some vcond_mask expanders.
      
      	PR middle-end/114070
      	* match.pd ((c ? a : b) op d  -->  c ? (a op d) : (b op d)):
      	Allow the folding if before lowering and the current IL
      	isn't supported with vcond_mask.
      f9c30ea7
    • xuli's avatar
      RISC-V: Add riscv_vector_cc function attribute · 4547628c
      xuli authored
      Standard vector calling convention variant will only enabled when function
      has vector argument or returning value by default, however user may also
      want to invoke function without that during a vectorized loop at some situation,
      but it will cause a huge performance penalty due to vector register store/restore.
      
      So user can declare function with this riscv_vector_cc attribute like below, that could enforce
      function will use standard vector calling convention variant.
      
      void foo() __attribute__((riscv_vector_cc));
      [[riscv::vector_cc]] void foo(); // For C++11 and C23
      
      For more details please reference the below link.
      https://github.com/riscv-non-isa/riscv-c-api-doc/pull/67
      
      gcc/ChangeLog:
      
      	* config/riscv/riscv.cc (TARGET_GNU_ATTRIBUTES): Add riscv_vector_cc
      	attribute to riscv_attribute_table.
      	(riscv_vector_cc_function_p): Return true if FUNC is a riscv_vector_cc function.
      	(riscv_fntype_abi): Add riscv_vector_cc attribute check.
      	* doc/extend.texi: Add riscv_vector_cc attribute description.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.target/riscv/rvv/base/attribute-riscv_vector_cc-error.C: New test.
      	* gcc.target/riscv/rvv/base/attribute-riscv_vector_cc-callee-saved.c: New test.
      	* gcc.target/riscv/rvv/base/attribute-riscv_vector_cc-error.c: New test.
      4547628c
    • Pan Li's avatar
      RISC-V: Introduce gcc option mrvv-vector-bits for RVV · 0a01d123
      Pan Li authored
      
      This patch would like to introduce one new gcc option for RVV. To
      appoint the bits size of one RVV vector register. Valid arguments to
      '-mrvv-vector-bits=' are:
      
      * scalable
      * zvl
      
      The scalable will pick up the zvl*b in the march as the minimal vlen.
      For example, the minimal vlen will be 512 when march=rv64gcv_zvl512b
      and mrvv-vector-bits=scalable.
      
      The zvl will pick up the zvl*b in the march as exactly vlen.
      For example, the vlen will be 1024 exactly when march=rv64gcv_zvl1024b
      and mrvv-vector-bits=zvl.
      
      The internal option --param=riscv-autovec-preference will be replaced
      by option -mrvv-vector-bits. Aka:
      
      * -mrvv-vector-bits=scalable indicates --param=riscv-autovec-preference=scalable
      * -mrvv-vector-bits=zvl indicates --param=riscv-autovec-preference=fixed-vlmax
      
      You can also take -fno-tree-vectorize for --param=riscv-autovec-preference=none.
      The internal option --param=riscv-autovec-preference is unavailable after this
      patch.
      
      Given below sample for more details:
      
      void test_rvv_vector_bits ()
      {
        vint32m1_t x;
        asm volatile ("def %0": "=vr"(x));
        asm volatile (""::: "v0",   "v1",  "v2",  "v3",  "v4",  "v5",  "v6",  "v7",
                            "v8",   "v9", "v10", "v11", "v12", "v13", "v14", "v15",
                            "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
                            "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31");
        asm volatile ("use %0": : "vr"(x));
      }
      
      With -march=rv64gcv_zvl128b -mrvv-vector-bits=scalable we have (for min_vlen >= 128)
        csrr    t0,vlenb
        sub     sp,sp,t0
        def v1
        vs1r.v  v1,0(sp)
        vl1re32.v       v1,0(sp)
        use v1
        csrr    t0,vlenb
        add     sp,sp,t0
        jr      ra
      
      With -march=rv64gcv_zvl128b -mrvv-vector-bits=zvl we have (for vlen = 128)
        addi    sp,sp,-16
        def v1
        vs1r.v  v1,0(sp)
        vl1re32.v       v1,0(sp)
        use v1
        addi    sp,sp,16
        jr      ra
      
      The below test are passed for this patch.
      
      * The riscv fully regression test.
      
      	PR target/112817
      
      gcc/ChangeLog:
      
      	* config/riscv/riscv-avlprop.cc (pass_avlprop::execute): Replace
      	RVV_FIXED_VLMAX to RVV_VECTOR_BITS_ZVL.
      	* config/riscv/riscv-opts.h (enum riscv_autovec_preference_enum): Remove.
      	(enum rvv_vector_bits_enum): New enum for different RVV vector bits.
      	* config/riscv/riscv-selftests.cc (riscv_run_selftests): Update
      	comments for option replacement.
      	* config/riscv/riscv-v.cc (autovec_use_vlmax_p): Replace enum of
      	riscv_autovec_preference to rvv_vector_bits.
      	(vls_mode_valid_p): Ditto.
      	(estimated_poly_value): Ditto.
      	* config/riscv/riscv.cc (riscv_convert_vector_chunks): Rename to
      	vector chunks and honor new option mrvv-vector-bits.
      	(riscv_override_options_internal): Update comments and rename the
      	vector chunks.
      	* config/riscv/riscv.opt: Add option mrvv-vector-bits and remove
      	internal option param=riscv-autovec-preference.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.target/riscv/rvv/base/pr111296.C: Replace
      	param=riscv-autovec-preference to mrvv-vector-bits.
      	* gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul4-6.c: Ditto.
      	* gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul4-8.c: Ditto.
      	* gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul8-12.c: Ditto.
      	* gcc.dg/vect/costmodel/riscv/rvv/pr113112-1.c: Ditto.
      	* gcc.dg/vect/costmodel/riscv/rvv/pr113112-2.c: Ditto.
      	* gcc.dg/vect/costmodel/riscv/rvv/pr113112-3.c: Ditto.
      	* gcc.dg/vect/costmodel/riscv/rvv/pr113112-4.c: Ditto.
      	* gcc.dg/vect/costmodel/riscv/rvv/pr113112-5.c: Ditto.
      	* gcc.dg/vect/costmodel/riscv/rvv/pr113247-2.c: Ditto.
      	* gcc.dg/vect/costmodel/riscv/rvv/pr113247-4.c: Ditto.
      	* gcc.dg/vect/costmodel/riscv/rvv/pr113281-2.c: Ditto.
      	* gcc.dg/vect/costmodel/riscv/rvv/pr113281-4.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/align-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/align-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/copysign-run.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/copysign-rv32gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/copysign-rv64gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/copysign-zvfh-run.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/fmax-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/fmax_run-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/fmax_zvfh-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/fmax_zvfh_run-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/fmin-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/fmin_run-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/fmin_zvfh-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/fmin_zvfh_run-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/mulh-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/mulh-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/mulh_run-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/mulh_run-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/narrow-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/narrow-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/narrow-3.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/narrow_run-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/narrow_run-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/narrow_run-3.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/shift-immediate.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/shift-run.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/shift-rv32gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/shift-rv64gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/shift-scalar-run.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/shift-scalar-rv32gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/shift-scalar-rv64gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/shift-scalar-template.h: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vadd-run-nofm.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vadd-run.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vadd-rv32gcv-nofm.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vadd-rv32gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vadd-rv64gcv-nofm.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vadd-rv64gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vadd-zvfh-run.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vand-run.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vand-rv32gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vand-rv64gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vcompress-avlprop-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vdiv-run-nofm.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vdiv-run.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vdiv-rv32gcv-nofm.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vdiv-rv32gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vdiv-rv64gcv-nofm.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vdiv-rv64gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vdiv-zvfh-run.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vmax-run.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vmax-rv32gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vmax-rv64gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vmax-zvfh-run.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vmin-run.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vmin-rv32gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vmin-rv64gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vmin-zvfh-run.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vmul-run-nofm.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vmul-run.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vmul-rv32gcv-nofm.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vmul-rv32gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vmul-rv64gcv-nofm.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vmul-rv64gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vmul-zvfh-run.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vor-run.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vor-rv32gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vor-rv64gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vrem-run.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vrem-rv32gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vrem-rv64gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vsub-run-nofm.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vsub-run.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vsub-rv32gcv-nofm.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vsub-rv32gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vsub-rv64gcv-nofm.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vsub-rv64gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vsub-zvfh-run.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vxor-run.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vxor-rv32gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/binop/vxor-rv64gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/bug-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/bug-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/bug-3.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/bug-4.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/bug-5.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/bug-6.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/bug-8.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cmp/vcond-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cmp/vcond-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cmp/vcond-3.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cmp/vcond-4.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cmp/vcond_run-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cmp/vcond_run-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cmp/vcond_run-3.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cmp/vcond_run-4.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_arith-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_arith-10.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_arith-11.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_arith-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_arith-3.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_arith-4.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_arith-5.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_arith-6.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_arith-7.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_arith-8.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_arith-9.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_arith_run-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_arith_run-10.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_arith_run-11.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_arith_run-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_arith_run-3.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_arith_run-4.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_arith_run-5.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_arith_run-6.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_arith_run-7.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_arith_run-8.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_arith_run-9.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_float2float-rv32-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_float2float-rv32-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_float2float-rv64-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_float2float-rv64-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_float2float_run-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_float2float_run-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_float2int-rv32-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_float2int-rv32-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_float2int-rv64-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_float2int-rv64-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_float2int_run-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_float2int_run-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_float2int_zvfh-rv32-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_float2int_zvfh-rv32-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_float2int_zvfh-rv64-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_float2int_zvfh-rv64-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_float2int_zvfh_run-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_float2int_zvfh_run-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_int2float-rv32-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_int2float-rv32-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_int2float-rv64-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_int2float-rv64-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_int2float_run-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_int2float_run-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_int2int-rv32-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_int2int-rv32-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_int2int-rv64-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_int2int-rv64-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_int2int_run-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_convert_int2int_run-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_copysign-run.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_copysign-rv32gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_copysign-rv64gcv.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_copysign-zvfh-run.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fadd-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fadd-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fadd-3.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fadd-4.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fadd_run-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fadd_run-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fadd_run-3.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fadd_run-4.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma-3.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma-4.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma-5.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma-6.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma-7.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma-8.c:
      	* gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma_run-1.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma_run-2.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma_run-3.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma_run-4.c: Ditto.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma_run-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma_run-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma_run-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fma_fnma_run-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmax-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmax-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmax-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmax-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmax_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmax_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmax_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmax_run-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmax_zvfh-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmax_zvfh-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmax_zvfh-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmax_zvfh-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmax_zvfh_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmax_zvfh_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmax_zvfh_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmax_zvfh_run-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmin-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmin-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmin-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmin-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmin_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmin_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmin_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmin_run-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmin_zvfh-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmin_zvfh-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmin_zvfh-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmin_zvfh-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmin_zvfh_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmin_zvfh_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmin_zvfh_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmin_zvfh_run-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fms_fnms-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fms_fnms-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fms_fnms-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fms_fnms-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fms_fnms-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fms_fnms-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fms_fnms_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fms_fnms_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fms_fnms_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fms_fnms_run-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fms_fnms_run-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fms_fnms_run-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmul-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmul-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmul-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmul-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmul-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmul_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmul_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmul_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmul_run-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_fmul_run-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_logical_min_max-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_logical_min_max-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_logical_min_max-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_logical_min_max-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_logical_min_max-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_logical_min_max_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_logical_min_max_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_logical_min_max_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_logical_min_max_run-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_logical_min_max_run-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_mulh-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_mulh-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_mulh_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_mulh_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_narrow_shift-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_narrow_shift-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_narrow_shift-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_narrow_shift_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_narrow_shift_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_narrow_shift_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_shift-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_shift-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_shift-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_shift-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_shift-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_shift-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_shift-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_shift-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_shift-9.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_shift_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_shift_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_shift_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_shift_run-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_shift_run-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_shift_run-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_shift_run-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_shift_run-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_shift_run-9.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_sqrt-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_sqrt-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_sqrt-zvfh-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_sqrt-zvfh-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_sqrt_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_sqrt_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_sqrt_run-zvfh-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_sqrt_run-zvfh-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_unary-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_unary-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_unary-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_unary-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_unary-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_unary-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_unary-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_unary-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_unary_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_unary_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_unary_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_unary_run-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_unary_run-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_unary_run-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_unary_run-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_unary_run-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_widen_complicate-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_widen_complicate-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_widen_complicate-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_widen_complicate-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_widen_complicate-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_widen_complicate-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_widen_complicate-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_widen_complicate-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_widen_complicate-9.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_widen_reduc-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_widen_reduc-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_widen_reduc_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/cond_widen_reduc_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/cond/pr111401.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vec-narrow-int64-float16.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vec-widen-float16-int64.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfcvt-itof-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfcvt-itof-rv32gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfcvt-itof-rv64gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfcvt-itof-zvfh-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfcvt_rtz-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfcvt_rtz-rv32gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfcvt_rtz-rv64gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfcvt_rtz-zvfh-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfncvt-ftoi-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfncvt-ftoi-rv32gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfncvt-ftoi-rv64gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfncvt-ftoi-zvfh-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-rv32gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-rv64gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-zvfh-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfncvt-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfncvt-rv32gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfncvt-rv64gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfncvt-zvfh-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfwcvt-ftoi-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfwcvt-ftoi-rv32gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfwcvt-ftoi-rv64gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfwcvt-ftoi-zvfh-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfwcvt-itof-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfwcvt-itof-rv32gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfwcvt-itof-rv64gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfwcvt-itof-zvfh-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfwcvt-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfwcvt-rv32gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfwcvt-rv64gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vfwcvt-zvfh-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vncvt-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vncvt-rv32gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vncvt-rv64gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vsext-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vsext-rv32gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vsext-rv64gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vzext-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vzext-rv32gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/conversions/vzext-rv64gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/fixed-vlmax-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/fold-min-poly.c: Diito.
      	* gcc.target/riscv/rvv/autovec/gather-scatter/strided_load-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/gather-scatter/strided_load-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/gather-scatter/strided_store-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/gather-scatter/strided_store-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/madd-split2-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/gimple_fold-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/live-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/live-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/live_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/live_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/multiple_rgroup-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/multiple_rgroup-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/multiple_rgroup-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/multiple_rgroup-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/multiple_rgroup_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/multiple_rgroup_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/multiple_rgroup_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/multiple_rgroup_run-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/multiple_rgroup_zbb.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/select_vl-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/select_vl-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/single_rgroup-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/single_rgroup-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/single_rgroup-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/single_rgroup_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/single_rgroup_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/single_rgroup_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp-10.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp-11.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp-12.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp-13.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp-14.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp-15.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp-16.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp-17.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp-18.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp-19.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp-9.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp_run-10.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp_run-11.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp_run-12.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp_run-13.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp_run-14.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp_run-15.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp_run-16.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp_run-17.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp_run-18.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp_run-19.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp_run-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp_run-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp_run-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp_run-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp_run-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/partial/slp_run-9.c: Diito.
      	* gcc.target/riscv/rvv/autovec/post-ra-avl.c: Diito.
      	* gcc.target/riscv/rvv/autovec/pr110950.c: Diito.
      	* gcc.target/riscv/rvv/autovec/pr110964.c: Diito.
      	* gcc.target/riscv/rvv/autovec/pr110989.c: Diito.
      	* gcc.target/riscv/rvv/autovec/pr111232.c: Diito.
      	* gcc.target/riscv/rvv/autovec/pr111295.c: Diito.
      	* gcc.target/riscv/rvv/autovec/pr111313.c: Diito.
      	* gcc.target/riscv/rvv/autovec/pr112326.c: Diito.
      	* gcc.target/riscv/rvv/autovec/pr112552.c: Diito.
      	* gcc.target/riscv/rvv/autovec/pr112554.c: Diito.
      	* gcc.target/riscv/rvv/autovec/pr112561.c: Diito.
      	* gcc.target/riscv/rvv/autovec/pr112597-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/pr112599-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/pr112599-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/pr112694-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/pr112854.c: Diito.
      	* gcc.target/riscv/rvv/autovec/pr112872.c: Diito.
      	* gcc.target/riscv/rvv/autovec/pr112999.c: Diito.
      	* gcc.target/riscv/rvv/autovec/pr113393-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/pr113393-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/pr113393-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last-10.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last-11.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last-12.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last-13.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last-14.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last-9.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last_run-10.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last_run-11.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last_run-12.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last_run-13.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last_run-14.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last_run-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last_run-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last_run-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last_run-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last_run-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/extract_last_run-9.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc-10.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc-9.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_call-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_call-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_call-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_call-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_call-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_run-10.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_run-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_run-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_run-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_run-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_run-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_strict-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_strict-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_strict-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_strict-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_strict-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_strict-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_strict-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_strict_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_strict_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_zvfh-10.c: Diito.
      	* gcc.target/riscv/rvv/autovec/reduc/reduc_zvfh_run-10.c: Diito.
      	* gcc.target/riscv/rvv/autovec/scalable-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/series-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/series_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/slp-mask-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/slp-mask-run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_load-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_load-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_load-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_load-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_load-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_load-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_load-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_load_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_load_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_load_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_load_run-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_load_run-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_load_run-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_load_run-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_store-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_store-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_store-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_store-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_store-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_store-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_store-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_store_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_store_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_store_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_store_run-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_store_run-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_store_run-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/mask_struct_store_run-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect-10.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect-11.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect-12.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect-13.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect-14.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect-15.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect-16.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect-17.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect-18.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect-9.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect_run-10.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect_run-11.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect_run-12.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect_run-13.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect_run-14.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect_run-15.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect_run-16.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect_run-17.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect_run-18.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect_run-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect_run-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect_run-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect_run-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect_run-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/struct/struct_vect_run-9.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop-10.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop-11.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop-12.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop-9.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_nofm-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_nofm-10.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_nofm-11.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_nofm-12.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_nofm-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_nofm-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_nofm-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_nofm-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_nofm-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_nofm-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_nofm-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_nofm-9.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_nofm_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_nofm_run-10.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_nofm_run-11.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_nofm_run-12.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_nofm_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_nofm_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_nofm_run-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_nofm_run-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_nofm_run-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_nofm_run-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_nofm_run-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_nofm_run-9.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_run-10.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_run-11.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_run-12.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_run-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_run-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_run-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_run-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_run-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_run-9.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-10.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-11.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-12.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/ternop/ternop_run_zvfh-9.c: Diito.
      	* gcc.target/riscv/rvv/autovec/unop/abs-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/unop/abs-rv32gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/unop/abs-rv64gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/unop/abs-zvfh-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/unop/popcount-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/unop/popcount-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/unop/vfsqrt-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/unop/vfsqrt-rv32gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/unop/vfsqrt-rv64gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/unop/vfsqrt-zvfh-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/unop/vneg-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/unop/vneg-rv32gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/unop/vneg-rv64gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/unop/vneg-zvfh-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/unop/vnot-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/unop/vnot-rv32gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/unop/vnot-rv64gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/v-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/v-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-10.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-11.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-12.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-13.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-14.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/bitmask-9.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/combine-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/compress-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/compress-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/compress-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/compress-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/compress-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/compress-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/compress_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/compress_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/compress_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/compress_run-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/compress_run-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/compress_run-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/consecutive-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/consecutive-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/consecutive_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/consecutive_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/full-vec-move1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/init-repeat-sequence-run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/init-repeat-sequence-run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/init-repeat-sequence-run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/insert_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/insert_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/merge-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/merge-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/merge-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/merge-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/merge-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/merge-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/merge-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/merge_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/merge_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/merge_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/merge_run-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/merge_run-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/merge_run-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/merge_run-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/perm_run-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/pr110985.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/repeat_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/repeat_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/repeat_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/repeat_run-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/repeat_run-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/repeat_run-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/trailing-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/trailing-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/trailing_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls-vlmax/trailing_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls/calling-convention-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls/calling-convention-10.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls/calling-convention-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls/calling-convention-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls/calling-convention-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls/calling-convention-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls/calling-convention-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls/calling-convention-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls/calling-convention-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls/calling-convention-9.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls/calling-convention-run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls/calling-convention-run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls/calling-convention-run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls/calling-convention-run-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls/calling-convention-run-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls/calling-convention-run-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vls/pr110994.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vmv-imm-fixed-rv32.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vmv-imm-fixed-rv64.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vmv-imm-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vmv-imm-rv32.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vmv-imm-rv64.c: Diito.
      	* gcc.target/riscv/rvv/autovec/vreinterpet-fixed.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/vec-avg-run.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/vec-avg-rv32gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/vec-avg-rv64gcv.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen-10.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen-11.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen-12.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen-9.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen-complicate-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen-complicate-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen-complicate-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen-complicate-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen-complicate-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen-complicate-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen-complicate-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen-complicate-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen-complicate-9.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_reduc-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_reduc_order-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_reduc_order-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_reduc_order_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_reduc_order_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_reduc_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_run-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_run-10.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_run-11.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_run-12.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_run-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_run-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_run-4.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_run-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_run-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_run-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_run-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_run-9.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-10.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-11.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-12.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-5.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-6.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-7.c: Diito.
      	* gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-8.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve32f-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve32f-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve32f-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve32f_zvl1024b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve32f_zvl128b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve32f_zvl128b-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve32f_zvl2048b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve32f_zvl256b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve32f_zvl4096b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve32f_zvl512b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve32x-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve32x-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve32x-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve32x_zvl1024b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve32x_zvl128b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve32x_zvl128b-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve32x_zvl2048b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve32x_zvl256b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve32x_zvl4096b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve32x_zvl512b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64d-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64d-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64d-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64d_zvl1024b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64d_zvl128b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64d_zvl128b-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64d_zvl2048b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64d_zvl256b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64d_zvl4096b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64d_zvl512b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64f-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64f-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64f-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64f_zvl1024b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64f_zvl128b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64f_zvl128b-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64f_zvl2048b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64f_zvl256b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64f_zvl4096b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64f_zvl512b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64x-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64x-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64x-3.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64x_zvl1024b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64x_zvl128b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64x_zvl128b-2.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64x_zvl2048b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64x_zvl256b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64x_zvl4096b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zve64x_zvl512b-1.c: Diito.
      	* gcc.target/riscv/rvv/autovec/zvfhmin-1.c: Diito.
      	* gcc.target/riscv/rvv/base/abi-callee-saved-1-fixed-1.c: Diito.
      	* gcc.target/riscv/rvv/base/abi-callee-saved-1-fixed-2.c: Diito.
      	* gcc.target/riscv/rvv/base/cpymem-1.c: Diito.
      	* gcc.target/riscv/rvv/base/cpymem-2.c: Diito.
      	* gcc.target/riscv/rvv/base/cpymem-strategy-3.c: Diito.
      	* gcc.target/riscv/rvv/base/cpymem-strategy-4.c: Diito.
      	* gcc.target/riscv/rvv/base/float-point-dynamic-frm-77.c: Diito.
      	* gcc.target/riscv/rvv/base/float-point-frm-autovec-1.c: Diito.
      	* gcc.target/riscv/rvv/base/float-point-frm-autovec-2.c: Diito.
      	* gcc.target/riscv/rvv/base/float-point-frm-autovec-3.c: Diito.
      	* gcc.target/riscv/rvv/base/float-point-frm-autovec-4.c: Diito.
      	* gcc.target/riscv/rvv/base/poly-selftest-1.c: Diito.
      	* gcc.target/riscv/rvv/base/pr110119-1.c: Diito.
      	* gcc.target/riscv/rvv/base/pr110119-2.c: Diito.
      	* gcc.target/riscv/rvv/base/pr111720-0.c: Diito.
      	* gcc.target/riscv/rvv/base/pr111720-1.c: Diito.
      	* gcc.target/riscv/rvv/base/pr111720-10.c: Diito.
      	* gcc.target/riscv/rvv/base/pr111720-2.c: Diito.
      	* gcc.target/riscv/rvv/base/pr111720-3.c: Diito.
      	* gcc.target/riscv/rvv/base/pr111720-4.c: Diito.
      	* gcc.target/riscv/rvv/base/pr111720-5.c: Diito.
      	* gcc.target/riscv/rvv/base/pr111720-6.c: Diito.
      	* gcc.target/riscv/rvv/base/pr111720-7.c: Diito.
      	* gcc.target/riscv/rvv/base/pr111720-8.c: Diito.
      	* gcc.target/riscv/rvv/base/pr111720-9.c: Diito.
      	* gcc.target/riscv/rvv/base/vf_avl-1.c: Diito.
      	* gcc.target/riscv/rvv/base/vf_avl-2.c: Diito.
      	* gcc.target/riscv/rvv/base/vf_avl-3.c: Diito.
      	* gcc.target/riscv/rvv/base/vf_avl-4.c: Diito.
      	* gcc.target/riscv/rvv/base/zvl-unimplemented-1.c: Diito.
      	* gcc.target/riscv/rvv/base/zvl-unimplemented-2.c: Diito.
      	* gcc.target/riscv/rvv/rvv.exp: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_multiple-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_multiple-10.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_multiple-11.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_multiple-12.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_multiple-13.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_multiple-14.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_multiple-15.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_multiple-16.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_multiple-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_multiple-3.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_multiple-4.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_multiple-5.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_multiple-6.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_multiple-7.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_multiple-8.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_multiple-9.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_prop-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_prop-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-10.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-100.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-101.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-102.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-103.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-104.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-105.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-106.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-107.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-108.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-109.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-11.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-12.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-13.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-14.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-15.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-16.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-17.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-18.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-19.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-20.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-21.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-22.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-23.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-24.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-25.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-26.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-27.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-28.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-29.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-3.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-30.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-31.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-32.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-33.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-34.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-35.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-36.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-37.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-38.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-39.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-4.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-40.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-41.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-42.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-43.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-44.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-45.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-46.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-47.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-48.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-49.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-5.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-50.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-51.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-52.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-53.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-54.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-55.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-56.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-57.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-58.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-59.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-6.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-60.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-61.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-62.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-63.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-64.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-65.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-66.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-67.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-68.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-69.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-7.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-70.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-71.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-72.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-73.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-74.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-75.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-76.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-77.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-78.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-79.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-8.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-80.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-81.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-82.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-83.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-84.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-85.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-86.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-87.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-88.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-89.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-9.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-90.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-91.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-92.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-93.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-94.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-95.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-96.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-97.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-98.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/avl_single-99.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/dump-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/ffload-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/ffload-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/ffload-3.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/ffload-5.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/ffload-6.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/ffload-7.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-10.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-11.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-12.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-13.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-3.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-4.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-5.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-6.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-7.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-8.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-9.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_conflict-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_conflict-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_conflict-3.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_conflict-4.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_conflict-5.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-10.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-11.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-12.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-13.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-14.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-15.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-16.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-17.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-3.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-4.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-5.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-6.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-7.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-8.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-9.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_switch-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_switch-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_switch-3.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_switch-4.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_switch-5.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_switch-6.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_switch-7.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_switch-8.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/imm_switch-9.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr108270.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr109399.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr109547.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr109615.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr109743-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr109743-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr109743-3.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr109743-4.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr109748.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr109773-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr109773-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr109974.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr111037-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr111037-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr111037-3.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr111037-4.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr111234.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr111255.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr111927.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr111947.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr112092-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr112092-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr112713-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr112713-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr112776.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr112813-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr112929-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr112988-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr113248.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/pr113696.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-10.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-11.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-12.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-13.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-14.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-15.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-16.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-17.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-18.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-19.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-20.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-21.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-22.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-23.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-24.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-25.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-26.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-27.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-28.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-29.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-3.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-30.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-31.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-32.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-33.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-34.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-35.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-36.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-37.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-38.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-39.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-4.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-40.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-41.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-42.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-43.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-44.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-45.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-46.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-5.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-6.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-7.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-8.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-9.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-10.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-11.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-12.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-13.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-14.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-15.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-16.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-17.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-18.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-19.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-20.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-21.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-22.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-23.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-24.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-25.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-26.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-27.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-28.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-3.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-4.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-5.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-6.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-7.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-8.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-9.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_call-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_call-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_call-3.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_call-4.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_complex_loop-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_complex_loop-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-10.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-11.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-12.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-13.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-3.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-4.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-5.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-6.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-7.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-8.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-9.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-10.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-11.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-12.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-13.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-14.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-15.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-16.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-17.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-18.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-19.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-20.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-21.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-22.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-23.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-24.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-25.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-26.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-27.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-28.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-3.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-4.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-5.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-6.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-7.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-8.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-9.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-10.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-11.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-12.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-13.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-14.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-15.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-16.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-17.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-18.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-19.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-20.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-21.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-22.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-23.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-24.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-25.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-26.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-27.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-28.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-3.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-4.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-5.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-6.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-7.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-8.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-9.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-10.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-11.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-12.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-13.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-14.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-15.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-16.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-17.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-18.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-19.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-3.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-4.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-5.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-6.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-7.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-8.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-9.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-3.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-4.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-5.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-6.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-7.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-8.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-10.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-11.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-12.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-13.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-14.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-15.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-16.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-3.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-4.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-5.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-6.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-7.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-8.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-9.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl-10.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl-11.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl-12.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl-13.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl-14.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl-15.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl-16.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl-17.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl-18.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl-19.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl-20.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl-21.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl-22.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl-23.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl-24.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl-3.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl-4.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl-5.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl-6.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl-7.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl-8.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl-9.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl_bug-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl_bug-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl_int.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvl_pre-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-1.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-10.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-11.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-12.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-13.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-14.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-15.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-16.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-17.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-18.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-19.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-2.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-20.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-3.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-4.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-5.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-6.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-7.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-8.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-9.c: Diito.
      	* gcc.target/riscv/rvv/vsetvl/wredsum_vlmax.c: Diito.
      	* gcc.target/riscv/rvv/base/rvv-vector-bits-1.c: New test.
      	* gcc.target/riscv/rvv/base/rvv-vector-bits-2.c: New test.
      	* gcc.target/riscv/rvv/base/rvv-vector-bits-3.c: New test.
      	* gcc.target/riscv/rvv/base/rvv-vector-bits-4.c: New test.
      	* gcc.target/riscv/rvv/base/rvv-vector-bits-5.c: New test.
      	* gcc.target/riscv/rvv/base/rvv-vector-bits-6.c: New test.
      
      Signed-off-by: default avatarPan Li <pan2.li@intel.com>
      0a01d123
    • Jakub Jelinek's avatar
      function: Fix another TYPE_NO_NAMED_ARGS_STDARG_P spot · c6f5f773
      Jakub Jelinek authored
      When looking at PR114175 (although that bug seems to be now a riscv backend
      bug), I've noticed that for the TYPE_NO_NAMED_ARGS_STDARG_P functions which
      return value through hidden reference, like
        #include <stdarg.h>
      
        struct S { char a[64]; };
        int n;
      
        struct S
        foo (...)
        {
          struct S s = {};
          va_list ap;
          va_start (ap);
          for (int i = 0; i < n; ++i)
            if ((i & 1))
              s.a[0] += va_arg (ap, double);
            else
              s.a[0] += va_arg (ap, int);
          va_end (ap);
          return s;
        }
      we were incorrectly calling assign_parms_setup_varargs twice, once
      at the start of the function and once in
            if (cfun->stdarg && !DECL_CHAIN (parm))
              assign_parms_setup_varargs (&all, &data, false);
      where parm is the last and only "named" parameter.
      
      The first call, guarded with TYPE_NO_NAMED_ARGS_STDARG_P, was added in
      r13-3549 and is needed for int bar (...) etc. functions using
      va_start/va_arg/va_end, otherwise the
        FOR_EACH_VEC_ELT (fnargs, i, parm)
      in which the other call is will not iterate at all.  But we shouldn't
      be doing that if we have the hidden return pointer.
      
      With the following patch on the above testcase with -O0 -std=c23 the
      assembly difference is:
       	pushq	%rbp
       	.cfi_def_cfa_offset 16
       	.cfi_offset 6, -16
       	movq	%rsp, %rbp
       	.cfi_def_cfa_register 6
       	pushq	%rbx
       	subq	$192, %rsp
       	.cfi_offset 3, -24
      -	movq	%rdi, -192(%rbp)
      -	movq	%rsi, -184(%rbp)
      -	movq	%rdx, -176(%rbp)
      -	movq	%rcx, -168(%rbp)
      -	movq	%r8, -160(%rbp)
      -	movq	%r9, -152(%rbp)
      -	testb	%al, %al
      -	je	.L2
      -	movaps	%xmm0, -144(%rbp)
      -	movaps	%xmm1, -128(%rbp)
      -	movaps	%xmm2, -112(%rbp)
      -	movaps	%xmm3, -96(%rbp)
      -	movaps	%xmm4, -80(%rbp)
      -	movaps	%xmm5, -64(%rbp)
      -	movaps	%xmm6, -48(%rbp)
      -	movaps	%xmm7, -32(%rbp)
      -.L2:
       	movq	%rdi, -312(%rbp)
       	movq	%rdi, -192(%rbp)
       	movq	%rsi, -184(%rbp)
       	movq	%rdx, -176(%rbp)
       	movq	%rcx, -168(%rbp)
       	movq	%r8, -160(%rbp)
       	movq	%r9, -152(%rbp)
       	testb	%al, %al
      -	je	.L13
      +	je	.L12
       	movaps	%xmm0, -144(%rbp)
       	movaps	%xmm1, -128(%rbp)
       	movaps	%xmm2, -112(%rbp)
       	movaps	%xmm3, -96(%rbp)
       	movaps	%xmm4, -80(%rbp)
       	movaps	%xmm5, -64(%rbp)
       	movaps	%xmm6, -48(%rbp)
       	movaps	%xmm7, -32(%rbp)
      -.L13:
      +.L12:
      plus some renumbering of labels later on which clearly shows
      that because of this bug, we were saving all the registers twice
      rather then once.  With -O2 -std=c23 some of it is DCEd, but we still get
       	subq	$160, %rsp
       	.cfi_def_cfa_offset 168
      -	testb	%al, %al
      -	je	.L2
      -	movaps	%xmm0, 24(%rsp)
      -	movaps	%xmm1, 40(%rsp)
      -	movaps	%xmm2, 56(%rsp)
      -	movaps	%xmm3, 72(%rsp)
      -	movaps	%xmm4, 88(%rsp)
      -	movaps	%xmm5, 104(%rsp)
      -	movaps	%xmm6, 120(%rsp)
      -	movaps	%xmm7, 136(%rsp)
      -.L2:
       	movq	%rdi, -24(%rsp)
       	movq	%rsi, -16(%rsp)
       	movq	%rdx, -8(%rsp)
       	movq	%rcx, (%rsp)
       	movq	%r8, 8(%rsp)
       	movq	%r9, 16(%rsp)
       	testb	%al, %al
      -	je	.L13
      +	je	.L12
       	movaps	%xmm0, 24(%rsp)
       	movaps	%xmm1, 40(%rsp)
       	movaps	%xmm2, 56(%rsp)
       	movaps	%xmm3, 72(%rsp)
       	movaps	%xmm4, 88(%rsp)
       	movaps	%xmm5, 104(%rsp)
       	movaps	%xmm6, 120(%rsp)
       	movaps	%xmm7, 136(%rsp)
      -.L13:
      +.L12:
      difference, i.e. this time not all, but the floating point args
      were conditionally all saved twice.
      
      2024-03-01  Jakub Jelinek  <jakub@redhat.com>
      
      	* function.cc (assign_parms): Only call assign_parms_setup_varargs
      	early for TYPE_NO_NAMED_ARGS_STDARG_P functions if fnargs is empty.
      c6f5f773
    • Jakub Jelinek's avatar
      bitint: Handle VCE from large/huge _BitInt SSA_NAME from load [PR114156] · d3d0fcb6
      Jakub Jelinek authored
      When adding checks in which case not to merge a VIEW_CONVERT_EXPR from
      large/huge _BitInt to vector/complex etc., I missed the case of loads.
      Those are handled differently later.
      Anyway, I think the load case is something we can handle just fine,
      so the following patch does that instead of preventing the merging
      gimple_lower_bitint; we'd then copy from memory to memory and and do the
      vce only on the second one, it is just better to vce the first one.
      
      2024-03-01  Jakub Jelinek  <jakub@redhat.com>
      
      	PR middle-end/114156
      	* gimple-lower-bitint.cc (bitint_large_huge::lower_stmt): Allow
      	rhs1 of a VCE to have no underlying variable if it is a load and
      	handle that case.
      
      	* gcc.dg/bitint-96.c: New test.
      d3d0fcb6
    • Ian Lance Taylor's avatar
      libbacktrace: read symbol table of debuginfo file · c6d4fb00
      Ian Lance Taylor authored
      These become another symbol table to search.  This is needed if people
      use --strip-all rather than --strip-debug when adding a debuglink
      section.
      
      Patch is from GitHub user pickard1.
      
      Fixes https://github.com/ianlancetaylor/libbacktrace/issues/113.
      
      	* elf.c (elf_add): Add the symbol table from a debuginfo file.
      	* Makefile.am (MAKETESTS): Add buildidfull and gnudebuglinkfull
      	variants of buildid and gnudebuglink tests.
      	(%_gnudebuglinkfull, %_buildidfull): New patterns.
      	* Makefile.in: Regenerate.
      c6d4fb00
    • GCC Administrator's avatar
      Daily bump. · b05f474c
      GCC Administrator authored
      b05f474c
  3. Feb 29, 2024
    • David Malcolm's avatar
      analyzer: fix ICE in call summarization [PR114159] · c0d8a64e
      David Malcolm authored
      
      PR analyzer/114159 reports an ICE inside playback of call summaries
      for very low values of --param=analyzer-max-svalue-depth=VAL.
      
      Root cause is that call_summary_edge_info's ctor tries to evaluate
      the function ptr of a gimple call stmt and assumes it gets a function *,
      but with low values of --param=analyzer-max-svalue-depth=VAL we get
      back an UNKNOWN svalue, rather than a pointer to a specific function.
      
      Fix by adding a new call_info ctor that passes a specific
      const function & from the call_summary_edge_info, rather than trying
      to compute the function.
      
      In doing so, I noticed that the analyzer was using "function *" despite
      not modifying functions, and was sloppy about can-be-null versus
      must-be-non-null function pointers, so I "constified" the function, and
      converted the many places where the function must be non-null to be
      "const function &".
      
      gcc/analyzer/ChangeLog:
      	PR analyzer/114159
      	* analyzer.cc: Include "tree-dfa.h".
      	(get_ssa_default_def): New decl.
      	* analyzer.h (get_ssa_default_def): New.
      	* call-info.cc (call_info::call_info): New ctor taking an explicit
      	called_fn.
      	* call-info.h (call_info::call_info): Likewise.
      	* call-summary.cc (call_summary_replay::call_summary_replay):
      	Convert param from function * to const function &.
      	* call-summary.h (call_summary_replay::call_summary_replay):
      	Likewise.
      	* checker-event.h (state_change_event::get_dest_function):
      	Constify return value.
      	* engine.cc (point_and_state::validate): Update for conversion to
      	const function &.
      	(exploded_node::on_stmt): Likewise.
      	(call_summary_edge_info::call_summary_edge_info): Likewise.
      	Pass in called_fn to call_info ctor.
      	(exploded_node::replay_call_summaries): Update for conversion to
      	const function &.  Convert per_function_data from * to &.
      	(exploded_node::replay_call_summary): Update for conversion to
      	const function &.
      	(exploded_graph::add_function_entry): Likewise.
      	(toplevel_function_p): Likewise.
      	(add_tainted_args_callback): Likewise.
      	(exploded_graph::build_initial_worklist): Likewise.
      	(exploded_graph::maybe_create_dynamic_call): Likewise.
      	(maybe_update_for_edge): Likewise.
      	(exploded_graph::on_escaped_function): Likewise.
      	* exploded-graph.h (exploded_node::replay_call_summaries):
      	Likewise.
      	(exploded_node::replay_call_summary): Likewise.
      	(exploded_graph::add_function_entry): Likewise.
      	* program-point.cc (function_point::from_function_entry):
      	Likewise.
      	(program_point::from_function_entry): Likewise.
      	* program-point.h (function_point::from_function_entry): Likewise.
      	(program_point::from_function_entry): Likewise.
      	* program-state.cc (program_state::push_frame): Likewise.
      	(program_state::get_current_function): Constify return type.
      	* program-state.h (program_state::push_frame): Update for
      	conversion to const function &.
      	(program_state::get_current_function): Likewise.
      	* region-model-manager.cc
      	(region_model_manager::get_frame_region): Likewise.
      	* region-model-manager.h
      	(region_model_manager::get_frame_region): Likewise.
      	* region-model.cc (region_model::called_from_main_p): Likewise.
      	(region_model::update_for_gcall): Likewise.
      	(region_model::push_frame): Likewise.
      	(region_model::get_current_function): Constify return type.
      	(region_model::pop_frame): Update for conversion to
      	const function &.
      	(selftest::test_stack_frames): Likewise.
      	(selftest::test_get_representative_path_var): Likewise.
      	(selftest::test_state_merging): Likewise.
      	(selftest::test_alloca): Likewise.
      	* region-model.h (region_model::push_frame): Likewise.
      	(region_model::get_current_function): Likewise.
      	* region.cc (frame_region::dump_to_pp): Likewise.
      	(frame_region::get_region_for_local): Likewise.
      	* region.h (class frame_region): Likewise.
      	* sm-signal.cc (signal_unsafe_call::describe_state_change):
      	Likewise.
      	(update_model_for_signal_handler): Likewise.
      	(signal_delivery_edge_info_t::update_model): Likewise.
      	(register_signal_handler::impl_transition): Likewise.
      	* state-purge.cc (class gimple_op_visitor): Likewise.
      	(state_purge_map::state_purge_map): Likewise.
      	(state_purge_map::get_or_create_data_for_decl): Likewise.
      	(state_purge_per_ssa_name::state_purge_per_ssa_name): Likewise.
      	(state_purge_per_ssa_name::add_to_worklist): Likewise.
      	(state_purge_per_ssa_name::process_point): Likewise.
      	(state_purge_per_decl::add_to_worklist): Likewise.
      	(state_purge_annotator::print_needed): Likewise.
      	* state-purge.h
      	(state_purge_map::get_or_create_data_for_decl): Likewise.
      	(class state_purge_per_tree): Likewise.
      	(class state_purge_per_ssa_name): Likewise.
      	(class state_purge_per_decl): Likewise.
      	* supergraph.cc (supergraph::dump_dot_to_pp): Likewise.
      	* supergraph.h
      	(supergraph::get_node_for_function_entry): Likewise.
      	(supergraph::get_node_for_function_exit): Likewise.
      
      gcc/ChangeLog:
      	PR analyzer/114159
      	* function.cc (function_name): Make param const.
      	* function.h (function_name): Likewise.
      
      gcc/testsuite/ChangeLog:
      	PR analyzer/114159
      	* c-c++-common/analyzer/call-summaries-pr114159.c: New test.
      
      Signed-off-by: default avatarDavid Malcolm <dmalcolm@redhat.com>
      c0d8a64e
    • Georg-Johann Lay's avatar
      AVR: target/114100 - Better indirect accesses for reduced Tiny · cda38361
      Georg-Johann Lay authored
      The Reduced Tiny core does not support indirect addressing with offset,
      which basically means that every indirect memory access with a size
      of more than one byte is effectively POST_INC or PRE_DEC.  The lack of
      that addressing mode is currently handled by pretending to support it,
      and then let the insn printers add and subtract again offsets as needed.
      For example, the following C code
      
         int vars[10];
      
         void inc_var2 (void) {
            ++vars[2];
         }
      
      is compiled to:
      
         ldi r30,lo8(vars)     ;  14   [c=4 l=2]  *movhi/4
         ldi r31,hi8(vars)
         subi r30,lo8(-(4))    ;  15   [c=8 l=6]  *movhi/2
         sbci r31,hi8(-(4))
         ld r20,Z+
         ld r21,Z
         subi r30,lo8((4+1))
         sbci r31,hi8((4+1))
         subi r20,-1             ;  16   [c=4 l=2]  *addhi3_clobber/1
         sbci r21,-1
         subi r30,lo8(-(4+1))    ;  17   [c=4 l=4]  *movhi/3
         sbci r31,hi8(-(4+1))
         st Z,r21
         st -Z,r20
      
      where the code could be -- and with this patch actually is -- like
      
         ldi r30,lo8(vars+4)    ;  28   [c=4 l=2]  *movhi/4
         ldi r31,hi8(vars+4)
         ld r20,Z+              ;  17   [c=8 l=2]  *movhi/2
         ld r21,Z+
         subi r20,-1            ;  19   [c=4 l=2]  *addhi3_clobber/1
         sbci r21,-1
         st -Z,r21              ;  30   [c=4 l=2]  *movhi/3
         st -Z,r20
      
      This is achieved in two steps:
      
      - A post-reload split into "real" instructions during .split2.
      - A new avr-specific mini pass .avr-fuse-add that runs before
        RTL peephole and that tries to combine the generated pointer
        additions into memory accesses to form POST_INC or PRE_DEC.
      
      gcc/
      	PR target/114100
      	* doc/invoke.texi (AVR Options) <-mfuse-add>: Document.
      	* config/avr/avr.opt (-mfuse-add=): New target option.
      	* common/config/avr/avr-common.cc (avr_option_optimization_table)
      	[OPT_LEVELS_1_PLUS]: Set -mfuse-add=1.
      	[OPT_LEVELS_2_PLUS]: Set -mfuse-add=2.
      	* config/avr/avr-passes.def (avr_pass_fuse_add): Insert new pass.
      	* config/avr/avr-protos.h (avr_split_tiny_move)
      	(make_avr_pass_fuse_add): New protos.
      	* config/avr/avr.md [AVR_TINY]: New post-reload splitter uses
      	avr_split_tiny_move to split indirect memory accesses.
      	(gen_move_clobbercc): New define_expand helper.
      	* config/avr/avr.cc (avr_pass_data_fuse_add): New pass data.
      	(avr_pass_fuse_add): New class from rtl_opt_pass.
      	(make_avr_pass_fuse_add, avr_split_tiny_move): New functions.
      	(reg_seen_between_p, emit_move_ccc, emit_move_ccc_after): New functions.
      	(avr_legitimate_address_p) [AVR_TINY]: Don't restrict offsets
      	of PLUS addressing for AVR_TINY.
      	(avr_regno_mode_code_ok_for_base_p) [AVR_TINY]: Ignore -mstrict-X.
      	(avr_out_plus_1) [AVR_TINY]: Tweak ++Y and --Y.
      	(avr_mode_code_base_reg_class) [AVR_TINY]: Always return POINTER_REGS.
      cda38361
    • Jonathan Wakely's avatar
      libstdc++: Fix std::basic_format_arg::handle for BasicFormatters · 02ca9d3f
      Jonathan Wakely authored
      std::basic_format_arg::handle is supposed to format its value as const
      if that is valid, to reduce the number of instantiations of the
      formatter's format function. I made a silly typo so that it checks
      formattable_with<TD, Context> not formattable_with<const TD, Context>,
      which breaks support for BasicFormatters i.e. ones that can only format
      non-const types.
      
      There's a static_assert in the handle constructor which is supposed to
      improve diagnostics for trying to format a const argument with a
      formatter that doesn't support it. That condition can't fail, because
      the std::basic_format_arg constructor is already constrained to check
      that the argument type is formattable. The static_assert can be removed.
      
      libstdc++-v3/ChangeLog:
      
      	* include/std/format (basic_format_arg::handle::__maybe_const_t):
      	Fix condition to check if const type is formattable.
      	(basic_format_arg::handle::handle(T&)): Remove redundant
      	static_assert.
      	* testsuite/std/format/formatter/basic.cc: New test.
      02ca9d3f
    • Jonathan Wakely's avatar
      libstdc++: Fix conditions for using memcmp in std::lexicographical_compare_three_way [PR113960] · f5cdda8a
      Jonathan Wakely authored
      The change in r11-2981-g2f983fa69005b6 meant that
      std::lexicographical_compare_three_way started to use memcmp for
      unsigned integers on big endian targets, but for that to be valid we
      need the two value types to have the same size and we need to use that
      size to compute the length passed to memcmp.
      
      I already defined a __is_memcmp_ordered_with trait that does the right
      checks, std::lexicographical_compare_three_way just needs to use it.
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/113960
      	* include/bits/stl_algobase.h (__is_byte_iter): Replace with ...
      	(__memcmp_ordered_with): New concept.
      	(lexicographical_compare_three_way): Use __memcmp_ordered_with
      	instead of __is_byte_iter. Use correct length for memcmp.
      	* testsuite/25_algorithms/lexicographical_compare_three_way/113960.cc:
      	New test.
      f5cdda8a
    • Georg-Johann Lay's avatar
      AVR: target/114132 - Code sets up a frame pointer without need. · 2f43ad6a
      Georg-Johann Lay authored
      The condition CUMULATIVE_ARGS.nregs == 0 in avr_frame_pointer_required_p()
      means that no more argument registers are left, but that's not the same
      condition that tells whether an argument pointer is required.
      
      	PR target/114132
      gcc/
      	* config/avr/avr.h (CUMULATIVE_ARGS) <has_stack_args>: New field.
      	* config/avr/avr.cc (avr_init_cumulative_args): Initialize it.
      	(avr_function_arg): Set it.
      	(avr_frame_pointer_required_p): Use it instead of .nregs.
      
      gcc/testsuite/
      	* gcc.target/avr/pr114132-1.c: New test.
      	* gcc.target/avr/torture/pr114132-2.c: New test.
      2f43ad6a
    • Marek Polacek's avatar
      c++: -Wuninitialized when binding a ref to uninit DM [PR113987] · b83f3cd3
      Marek Polacek authored
      This PR asks that our -Wuninitialized for mem-initializers does
      not warn when binding a reference to an uninitialized data member.
      We already check !INDIRECT_TYPE_P in find_uninit_fields_r, but
      that won't catch binding a parameter of a reference type to an
      uninitialized field, as in:
      
        struct S { S (int&); };
        struct T {
            T() : s(i) {}
            S s;
            int i;
        };
      
      This patch adds a new function to handle this case.
      
      	PR c++/113987
      
      gcc/cp/ChangeLog:
      
      	* call.cc (conv_binds_to_reference_parm_p): New.
      	* cp-tree.h (conv_binds_to_reference_parm_p): Declare.
      	* init.cc (find_uninit_fields_r): Call it.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/warn/Wuninitialized-15.C: Turn dg-warning into dg-bogus.
      	* g++.dg/warn/Wuninitialized-34.C: New test.
      b83f3cd3
    • Tom Tromey's avatar
      Fix PR libcc1/113977 · bc0e18a9
      Tom Tromey authored
      PR libcc1/113977 points out a case where a simple expression is
      rejected with a compiler error message.  The bug here is that gdb does
      not inform the plugin of the correct alignment -- in fact, there is no
      way to do that.
      
      This patch adds a new method to allow the alignment to be set, and
      bumps the C front end protocol version.
      
      It also includes some updates to various comments in 'include', done
      here to simplify the merge to binutils-gdb.
      
      include
      
      	* gcc-cp-interface.h (gcc_cp_fe_context_function): Update
      	comment.
      	* gcc-c-interface.h (enum gcc_c_api_version) <GCC_C_FE_VERSION_2>:
      	New constant.
      	(gcc_c_fe_context_function): Update comment.
      	* gcc-c-fe.def (finish_record_with_alignment): New method.
      	Update documentation.
      
      libcc1
      
      	PR libcc1/113977
      	* libcc1plugin.cc (plugin_finish_record_or_union): New function.
      	(plugin_finish_record_or_union): Rewrite.
      	(plugin_init): Use GCC_C_FE_VERSION_2.
      	* libcc1.cc (c_vtable): Use GCC_C_FE_VERSION_2.
      	(gcc_c_fe_context): Check for GCC_C_FE_VERSION_2.
      
      
      bc0e18a9
    • Tom Tromey's avatar
      Fix version negotiation in libcc1 plugins · 54137725
      Tom Tromey authored
      This fixes version negotiation in the libcc1 plugins.  It's done in a
      simple way: the version number from the context object is now passed
      to base_gdb_plugin.
      
      The idea behind this is that when the client (gdb) requests version N,
      the plugin should respond with the newest version that it knows of
      that is backward compatible to N.  That is, the connection can be
      upgraded.  Note that the protocol does not change much, and no
      backward incompatibilities have ever been needed.
      
      The C plugin is also changed to advertise GCC_C_FE_VERSION_1.
      
      The version negotiation approach should of course be documented, but I
      did that in a subsequent patch, in order to only have one patch
      touching the 'include' directory and thus needing a merge to
      binutils-gdb.
      
      libcc1
      
      	* libcp1.cc (libcp1::libcp1): Use FE version number from context.
      	* libcc1.cc (libcc1::libcc1): Use FE version number from context.
      	(c_vtable): Use GCC_C_FE_VERSION_1.
      
      
      54137725
    • Tom Tromey's avatar
      Change 'v1' float and int code to fall back to v0 · fd846abc
      Tom Tromey authored
      While working on another patch, I discovered that the libcc1 plugin
      code never did version negotiation correctly.  So, the patches to
      introduce v1 never did anything -- the new code, as far as I know, has
      never been run.
      
      Making version negotiation work shows that the existing code causes
      crashes.  For example, safe_lookup_builtin_type might return
      error_mark_node in some cases, which the callers aren't prepared to
      accept.
      
      Looking into it some more, I couldn't find any justification for this
      v1 code for the C compiler plugin.  Since it's not run at all, it's
      also clear that removing it doesn't cause any regressions in gdb.
      
      However, rather than remove it, this patch changes it to handle
      ERROR_MARK better, and then to fall back to the v0 code if the new
      code fails to find the type it's looking for.
      
      libcc1
      
      	* libcc1plugin.cc (safe_lookup_builtin_type): Handle ERROR_MARK.
      	(plugin_int_type): Fall back to plugin_int_type_v0.
      	(plugin_float_type): Fall back to plugin_float_type_v0.
      
      
      fd846abc
    • Gaius Mulley's avatar
      PR modula2/102344 TestLong4.mod FAILs · 46666b9b
      Gaius Mulley authored
      
      This is a testsuite fix for TestLong4.mod so that it
      succeeds on 32 bit systems.  The original TestLong4.mod has
      been rewritten as testing MAX(LONGCARD) into the variable l.
      The new testlong4.mod has been added to cpp/pass.  The new
      testcode uses the C preprocessor to select the appropriate
      constant literal depending upon __SIZEOF_LONG__.
      
      gcc/testsuite/ChangeLog:
      
      	PR modula2/102344
      	* gm2/pim/pass/TestLong4.mod: Rewrite.
      	* gm2/cpp/pass/testlong4.mod: New test.
      
      Signed-off-by: default avatarGaius Mulley <gaiusmod2@gmail.com>
      46666b9b
    • Andrew Pinski's avatar
      aarch64: Fix memtag builtins vs GC [PR108174] · 5ec77404
      Andrew Pinski authored
      
      The memtag builtins were being GC'ed away so we end up
      with a crash sometimes (maybe even wrong code).
      This fixes that issue by adding GTY on the variable/struct
      aarch64_memtag_builtin_data.
      
      Committed as obvious after a build/test for aarch64-linux-gnu.
      
      	PR target/108174
      
      gcc/ChangeLog:
      
      	* config/aarch64/aarch64-builtins.cc (aarch64_memtag_builtin_data): Make
      	static and mark with GTY.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/aarch64/acle/memtag_4.c: New test.
      
      Signed-off-by: default avatarAndrew Pinski <quic_apinski@quicinc.com>
      5ec77404
    • Xi Ruoyao's avatar
      LoongArch: Remove unneeded sign extension after crc/crcc instructions · aab1c5dc
      Xi Ruoyao authored
      The specification of crc/crcc instructions is clear that the output is
      sign-extended to GRLEN.  Add a define_insn to tell the compiler this
      fact and allow it to remove the unneeded sign extension on crc/crcc
      output.  As crc/crcc instructions are usually used in a tight loop,
      this should produce a significant performance gain.
      
      gcc/ChangeLog:
      
      	* config/loongarch/loongarch.md
      	(loongarch_<crc>_w_<size>_w_extended): New define_insn.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/loongarch/crc-sext.c: New test;
      aab1c5dc
    • Xi Ruoyao's avatar
      LoongArch: NFC: Deduplicate crc instruction defines · c556ea07
      Xi Ruoyao authored
      Introduce an iterator for UNSPEC_CRC and UNSPEC_CRCC to make the next
      change easier.
      
      gcc/ChangeLog:
      
      	* config/loongarch/loongarch.md (CRC): New define_int_iterator.
      	(crc): New define_int_attr.
      	(loongarch_crc_w_<size>_w, loongarch_crcc_w_<size>_w): Unify
      	into ...
      	(loongarch_<crc>_w_<size>_w): ... here.
      c556ea07
    • Nathaniel Shead's avatar
      c++: Support lambdas attached to more places in modules [PR111710] · 3685fae2
      Nathaniel Shead authored
      
      The fix for PR107398 weakened the restrictions that lambdas must belong
      to namespace scope. However this was not sufficient: we also need to
      allow lambdas attached to FIELD_DECLs, PARM_DECLs, and TYPE_DECLs.
      
      For field decls we key the lambda to its class rather than the field
      itself. Otherwise we can run into issues when deduplicating the lambda's
      TYPE_DECL, because when loading its context we load the containing field
      before we've deduplicated the keyed lambda, causing mismatches; by
      keying to the class instead we defer checking keyed declarations until
      deduplication has completed.
      
      Additionally, by [basic.link] p15.2 a lambda defined anywhere in a
      class-specifier should not be TU-local, which includes base-class
      declarations, so ensure that lambdas declared there are keyed
      appropriately as well.
      
      Because this now requires 'DECL_MODULE_KEYED_DECLS_P' to be checked on a
      fairly large number of different kinds of DECLs, and that in general
      it's safe to just get 'false' as a result of a check on an unexpected
      DECL type, this patch also removes the tree checking from the accessor.
      
      Finally, to handle deduplicating templated lambda fields, we need to
      ensure that we can determine that two lambdas from different field decls
      match, so we ensure that we also deduplicate LAMBDA_EXPRs on stream in.
      
      	PR c++/111710
      
      gcc/cp/ChangeLog:
      
      	* cp-tree.h (DECL_MODULE_KEYED_DECLS_P): Remove tree checking.
      	(struct lang_decl_base): Update comments and fix whitespace.
      	* module.cc (trees_out::lang_decl_bools): Always write
      	module_keyed_decls_p flag...
      	(trees_in::lang_decl_bools): ...and always read it.
      	(trees_out::decl_value): Handle all kinds of keyed decls.
      	(trees_in::decl_value): Likewise.
      	(trees_in::tree_value): Deduplicate LAMBDA_EXPRs.
      	(maybe_key_decl): Also support lambdas attached to fields,
      	parameters, and types. Key lambdas attached to fields to their
      	class.
      	(trees_out::get_merge_kind): Likewise.
      	(trees_out::key_mergeable): Likewise.
      	(trees_in::key_mergeable): Support keyed decls in a TYPE_DECL
      	container.
      	* parser.cc (cp_parser_class_head): Start a lambda scope when
      	parsing base classes.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/modules/lambda-7.h: New test.
      	* g++.dg/modules/lambda-7_a.H: New test.
      	* g++.dg/modules/lambda-7_b.C: New test.
      	* g++.dg/modules/lambda-7_c.C: New test.
      
      Signed-off-by: default avatarNathaniel Shead <nathanieloshead@gmail.com>
      Reviewed-by: default avatarPatrick Palka <ppalka@redhat.com>
      Reviewed-by: default avatarJason Merrill <jason@redhat.com>
      3685fae2
    • Kito Cheng's avatar
      RISC-V: Fix __atomic_compare_exchange with 32 bit value on RV64 · fd07a29e
      Kito Cheng authored
      
      atomic_compare_and_swapsi will use lr.w to do obtain the original value,
      which sign extends to DI.  RV64 only has DI comparisons, so we also need
      to sign extend the expected value to DI as otherwise the comparison will
      fail when the expected value has the 32nd bit set.
      
      gcc/ChangeLog:
      
      	PR target/114130
      	* config/riscv/sync.md (atomic_compare_and_swap<mode>): Sign
      	extend the expected value if needed.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/riscv/pr114130.c: New.
      
      Reviewed-by: default avatarPalmer Dabbelt <palmer@rivosinc.com>
      fd07a29e
    • Andrew Pinski's avatar
      Add libcc1 to bug components · 5ff49272
      Andrew Pinski authored
      As found by Tom Tromey in https://gcc.gnu.org/pipermail/gcc-patches/2024-February/646807.html
      
      
      libcc1 is not listed as bug component even though it is there in bugzilla.
      This fixes that oversight.
      
      Committed as obvious after testing using git gcc-verify on a patch.
      
      contrib/ChangeLog:
      
      	* gcc-changelog/git_commit.py (bug_components): Add libcc1.
      
      Signed-off-by: default avatarAndrew Pinski <quic_apinski@quicinc.com>
      5ff49272
Loading