Commit graph

206953 commits

Author SHA1 Message Date
Patrick Palka
fced59166f c++: local class memfn synth from uneval context [PR113063]
Here we first use and therefore synthesize the local class operator<=>
from an unevaluated context, which inadvertently affects synthesization
by preventing functions used within the definition (such as the copy
constructor of std::strong_ordering) from getting marked as odr-used.

This patch fixes this by using maybe_push_to_top_level in synthesize_method
which ensures cp_unevaluated_operand gets cleared even in the function-local
case.

	PR c++/113063

gcc/cp/ChangeLog:

	* method.cc (synthesize_method): Use maybe_push_to_top_level
	and maybe_pop_from_top_level.

gcc/testsuite/ChangeLog:

	* g++.dg/cpp2a/spaceship-synth16.C: New test.
2023-12-19 16:33:55 -05:00
Patrick Palka
7f26997e64 c++: missing state restoration in maybe_pop_from_top_level
In the function-local case of maybe_pop_from_top_level, we need to
restore the global flags that maybe_push_to_top_level cleared.

gcc/cp/ChangeLog:

	* name-lookup.cc (struct local_state_t): Define.
	(local_state_stack): Define.
	(maybe_push_to_top_level): Use them.
	(maybe_pop_from_top_level): Likewise.
	* pt.cc (instantiate_decl): Remove dead code for saving/restoring
	cp_unevaluated_operand and c_inhibit_evaluation_warnings.
2023-12-19 16:26:27 -05:00
Nathaniel Shead
5ba949c096 c++: Check null pointer deref when calling memfn in constexpr [PR102420]
Calling a non-static member function on a null pointer is undefined
behaviour (see [expr.ref] p8) and should error in constant evaluation,
even if the 'this' pointer is never actually accessed within that
function.

One catch is that currently, the function pointer conversion operator
for lambdas passes a null pointer as the 'this' pointer to the
underlying 'operator()', so for now we ignore such calls.

	PR c++/102420

gcc/cp/ChangeLog:

	* constexpr.cc (cxx_bind_parameters_in_call): Check for calling
	non-static member functions with a null pointer.

gcc/testsuite/ChangeLog:

	* g++.dg/cpp0x/constexpr-memfn2.C: New test.

Signed-off-by: Nathaniel Shead <nathanieloshead@gmail.com>
2023-12-20 08:18:56 +11:00
Francois-Xavier Coudert
d31c54c7da libgfortran: avoid duplicate libraries in spec
The linking of libgcc is already present in %(liborig), so the current
situation duplicates libraries. This was not an issue until macOS's new
linker started giving warnings for such cases.

libgfortran/ChangeLog:

	PR libfortran/110651
	* libgfortran.spec.in: Remove duplicate libraries.
2023-12-19 22:10:55 +01:00
Sandra Loosemore
d0603dfe9d OpenMP: Permit additional selector properties
This patch adds "hpe" to the known properties for the "vendor" selector,
and support for "acquire" and "release" for "atomic_default_mem_order".

gcc/ChangeLog
	* omp-general.cc (vendor_properties): Add "hpe".
	(atomic_default_mem_order_properties): Add "acquire" and "release".
	(omp_context_selector_matches): Handle "acquire" and "release".

gcc/testsuite/ChangeLog
	* c-c++-common/gomp/declare-variant-2.c: Don't expect error on
	"acquire" and "release".
	* gfortran.dg/gomp/declare-variant-2a.f90: Likewise.
2023-12-19 20:07:13 +00:00
Sandra Loosemore
9f9b3d6732 OpenMP: Use enumerators for names of trait-sets and traits
This patch introduces enumerators to represent trait-set names and
trait names, which makes it easier to use tables to control other
behavior and for switch statements to dispatch on the tags.  The tags
are stored in the same place in the TREE_LIST structure (OMP_TSS_ID or
OMP_TS_ID) and are encoded there as integer constants.

gcc/ChangeLog
	* omp-selectors.h: New file.
	* omp-general.h: Include omp-selectors.h.
	(OMP_TSS_CODE, OMP_TSS_NAME): New.
	(OMP_TS_CODE, OMP_TS_NAME): New.
	(make_trait_set_selector, make_trait_selector): Adjust declarations.
	(omp_construct_traits_to_codes): Likewise.
	(omp_context_selector_set_compare): Likewise.
	(omp_get_context_selector): Likewise.
	(omp_get_context_selector_list): New.
	* omp-general.cc (omp_construct_traits_to_codes): Pass length in
	as argument instead of returning it.  Make it table-driven.
	(omp_tss_map): New.
	(kind_properties, vendor_properties, extension_properties): New.
	(atomic_default_mem_order_properties): New.
	(omp_ts_map): New.
	(omp_check_context_selector): Simplify lookup and dispatch logic.
	(omp_mark_declare_variant): Ignore variants with unknown construct
	selectors.  Adjust for new representation.
	(make_trait_set_selector, make_trait_selector): Adjust for new
	representations.
	(omp_context_selector_matches): Simplify dispatch logic.  Avoid
	fixed-sized buffers and adjust call to omp_construct_traits_to_codes.
	(omp_context_selector_props_compare): Adjust for new representations
	and simplify dispatch logic.
	(omp_context_selector_set_compare): Likewise.
	(omp_context_selector_compare): Likewise.
	(omp_get_context_selector): Adjust for new representations, and split
	out...
	(omp_get_context_selector_list): New function.
	(omp_lookup_tss_code): New.
	(omp_lookup_ts_code): New.
	(omp_context_compute_score): Adjust for new representations.  Avoid
	fixed-sized buffers and magic numbers.  Adjust call to
	omp_construct_traits_to_codes.
	* gimplify.cc (omp_construct_selector_matches): Avoid use of
	fixed-size buffer.  Adjust call to omp_construct_traits_to_codes.

gcc/c/ChangeLog
	* c-parser.cc (omp_construct_selectors): Delete.
	(omp_device_selectors): Delete.
	(omp_implementation_selectors): Delete.
	(omp_user_selectors): Delete.
	(c_parser_omp_context_selector): Adjust for new representations
	and simplify dispatch logic.  Uniformly warn instead of sometimes
	error when an unknown selector is found.  Adjust error messages
	for extraneous/incorrect score.
	(c_parser_omp_context_selector_specification): Likewise.
	(c_finish_omp_declare_variant): Adjust for new representations.

gcc/cp/ChangeLog
	* decl.cc (omp_declare_variant_finalize_one): Adjust for new
	representations.
	* parser.cc (omp_construct_selectors): Delete.
	(omp_device_selectors): Delete.
	(omp_implementation_selectors): Delete.
	(omp_user_selectors): Delete.
	(cp_parser_omp_context_selector): Adjust for new representations
	and simplify dispatch logic.  Uniformly warn instead of sometimes
	error when an unknown selector is found.  Adjust error messages
	for extraneous/incorrect score.
	(cp_parser_omp_context_selector_specification): Likewise.
	* pt.cc (tsubst_attribute): Adjust for new representations.

gcc/fortran/ChangeLog
	* gfortran.h: Include omp-selectors.h.
	(enum gfc_omp_trait_property_kind): Delete, and replace all
	references with equivalent omp_tp_type enumerators.
	(struct gfc_omp_trait_property): Update for omp_tp_type.
	(struct gfc_omp_selector): Replace string name with new enumerator.
	(struct gfc_omp_set_selector): Likewise.
	* openmp.cc (gfc_free_omp_trait_property_list): Update for
	omp_tp_type.
	(omp_construct_selectors): Delete.
	(omp_device_selectors): Delete.
	(omp_implementation_selectors): Delete.
	(omp_user_selectors): Delete.
	(gfc_ignore_trait_property_extension): New.
	(gfc_ignore_trait_property_extension_list): New.
	(gfc_match_omp_selector): Adjust for new representations and simplify
	dispatch logic.  Uniformly warn instead of sometimes error when an
	unknown selector is found.
	(gfc_match_omp_context_selector): Adjust for new representations.
	Adjust error messages for extraneous/incorrect score.
	(gfc_match_omp_context_selector_specification): Likewise.
	* trans-openmp.cc (gfc_trans_omp_declare_variant): Adjust for
	new representations.

gcc/testsuite/
	* c-c++-common/gomp/declare-variant-1.c: Expect warning on
	unknown selectors.
	* c-c++-common/gomp/declare-variant-2.c: Likewise.  Also adjust
	messages for score errors.
	* c-c++-common/gomp/declare-variant-no-score.c: New.
	* gfortran.dg/gomp/declare-variant-1.f90: Expect warning on
	unknown selectors.
	* gfortran.dg/gomp/declare-variant-2.f90: Likewise.  Also adjust
	messages for score errors.
	* gfortran.dg/gomp/declare-variant-no-score.f90: New.
2023-12-19 20:07:13 +00:00
Sandra Loosemore
9b8fdcbf21 OpenMP: Unify representation of name-list properties.
Previously, name-list properties specified as identifiers were stored
in the TREE_PURPOSE/OMP_TP_NAME slot, while those specified as strings
were stored in the TREE_VALUE/OMP_TP_VALUE slot.  This patch puts both
representations in OMP_TP_VALUE with a magic cookie in OMP_TP_NAME.

gcc/ChangeLog
	* omp-general.h (OMP_TP_NAMELIST_NODE): New.
	* omp-general.cc (omp_context_name_list_prop): Move earlier
	in the file, and adjust for new representation.
	(omp_check_context_selector): Adjust this too.
	(omp_context_selector_props_compare): Likewise.

gcc/c/ChangeLog
	* c-parser.cc (c_parser_omp_context_selector): Adjust for new
	namelist property representation.

gcc/cp/ChangeLog
	* parser.cc (cp_parser_omp_context_selector): Adjust for new
	namelist property representation.
	* pt.cc (tsubst_attribute): Likewise.

gcc/fortran/ChangeLog
	* trans-openmp.cc (gfc_trans_omp_declare_varaint): Adjust for
	new namelist property representation.
2023-12-19 20:07:13 +00:00
Sandra Loosemore
82b32adaa7 OpenMP: Introduce accessor macros and constructors for context selectors.
This patch hides the underlying nested TREE_LIST structure of context
selectors behind accessor macros that have more meaningful names than
the generic TREE_PURPOSE/TREE_VALUE accessors.  There is a slight
change to the representation in that the score expression in
trait-selectors has a distinguished tag and is separated from the
ordinary properties, although internally it is still represented as
the first item in the TREE_VALUE of the selector.  This patch also renames
some local variables with slightly more descriptive names so it is easier
to track whether something is a selector-set, selector, or property.

gcc/ChangeLog
	* omp-general.h (OMP_TS_SCORE_NODE): New.
	(OMP_TSS_ID, OMP_TSS_TRAIT_SELECTORS): New.
	(OMP_TS_ID, OMP_TS_SCORE, OMP_TS_PROPERTIES): New.
	(OMP_TP_NAME, OMP_TP_VALUE): New.
	(make_trait_set_selector): Declare.
	(make_trait_selector): Declare.
	(make_trait_property): Declare.
	(omp_constructor_traits_to_codes): Rename to
	omp_construct_traits_to_codes.
	* omp-general.cc (omp_constructor_traits_to_codes): Rename
	to omp_construct_traits_to_codes.  Use new accessors.
	(omp_check_context_selector): Use new accessors.
	(make_trait_set_selector): New.
	(make_trait_selector): New.
	(make_trait_property): New.
	(omp_context_name_list_prop): Use new accessors.
	(omp_context_selector_matches): Use new accessors.
	(omp_context_selector_props_compare): Use new accessors.
	(omp_context_selector_set_compare): Use new accessors.
	(omp_get_context_selector): Use new accessors.
	(omp_context_compute_score): Use new accessors.
	* gimplify.cc (omp_construct_selector_matches): Adjust for renaming
	of omp_constructor_traits_to_codes.

gcc/c/ChangeLog
	* c-parser.cc (c_parser_omp_context_selector): Use new constructors.

gcc/cp/ChangeLog
	* parser.cc (cp_parser_omp_context_selector): Use new constructors.
	* pt.cc: Include omp-general.h.
	(tsubst_attribute): Use new context selector accessors and
	constructors.

gcc/fortran/ChangeLog
	* trans-openmp.cc (gfc_trans_omp_declare_variant): Use new
	constructors.
2023-12-19 20:06:58 +00:00
David Faust
1502d724df btf: change encoding of forward-declared enums [PR111735]
The BTF specification does not formally define a representation for
forward-declared enum types such as:

  enum Foo;

Forward-declarations for struct and union types are represented by
BTF_KIND_FWD, which has a 1-bit flag distinguishing the two.

The de-facto standard format used by other tools like clang and pahole
is to represent forward-declared enums as BTF_KIND_ENUM with vlen=0,
i.e. as a regular enum type with no enumerators.  This patch changes
GCC to adopt that format, and makes a couple of minor cleanups in
btf_asm_type ().

gcc/

	PR debug/111735
	* btfout.cc (btf_fwd_to_enum_p): New.
	(btf_asm_type_ref): Special case references to enum forwards.
	(btf_asm_type): Special case enum forwards. Rename btf_size_type to
	btf_size, and change chained ifs switching on btf_kind into else ifs.

gcc/testsuite/

	PR debug/111735
	* gcc.dg/debug/btf/btf-forward-2.c: New test.
2023-12-19 09:50:14 -08:00
Patrick Palka
0a37463758 c++: partial ordering and dep alias tmpl specs [PR90679]
During partial ordering, we want to look through dependent alias
template specializations within template arguments and otherwise
treat them as opaque in other contexts (see e.g. r7-7116-g0c942f3edab108
and r11-7011-g6e0a231a4aa240).  To that end template_args_equal was
given a partial_order flag that controls this behavior.  This flag
does the right thing when a dependent alias template specialization
appears as template argument of the partial specialization, e.g. in

  template<class T, class...> using first_t = T;
  template<class T> struct traits;
  template<class T> struct traits<first_t<T, T&>> { }; // #1
  template<class T> struct traits<first_t<const T, T&>> { }; // #2

we correctly consider #2 to be more specialized than #1.  But if the
alias specialization appears as a nested template argument of another
class template specialization, e.g. in

  template<class T> struct traits<A<first_t<T, T&>>> { }; // #1
  template<class T> struct traits<A<first_t<const T, T&>>> { }; // #2

then we incorrectly consider #1 and #2 to be unordered.  This is because

  1. we don't propagate the flag to recursive template_args_equal calls
  2. we don't use structural equality for class template specializations
     written in terms of dependent alias template specializations

This patch fixes the first issue by turning the partial_order flag into
a global.  This patch fixes the second issue by making us propagate
structural equality appropriately when building a class template
specialization.  In passing this patch also improves hashing of
specializations that use structural equality.

	PR c++/90679

gcc/cp/ChangeLog:

	* cp-tree.h (comp_template_args): Remove partial_order parameter.
	(template_args_equal): Likewise.
	* pt.cc (comparing_for_partial_ordering): New global flag.
	(iterative_hash_template_arg) <case tcc_type>: Hash the template
	and arguments for specializations that use structural equality.
	(template_args_equal): Remove partial order parameter and
	use comparing_for_partial_ordering instead.
	(comp_template_args): Likewise.
	(comp_template_args_porder): Set comparing_for_partial_ordering
	instead.  Make static.
	(any_template_arguments_need_structural_equality_p): Return true
	for an argument that's a dependent alias template specialization
	or a class template specialization that itself needs structural
	equality.
	* tree.cc (cp_tree_equal) <case TREE_VEC>: Adjust call to
	comp_template_args.

gcc/testsuite/ChangeLog:

	* g++.dg/cpp0x/alias-decl-75a.C: New test.
	* g++.dg/cpp0x/alias-decl-75b.C: New test.
2023-12-19 11:40:15 -05:00
Patrick Palka
6d27ee7fcc c++: refine dependent_alias_template_spec_p [PR90679]
For a (complex) alias template-id, dependent_alias_template_spec_p
returns true if any template argument of the template-id is dependent.
This predicate indicates that substitution into the template-id may
behave differently with respect to SFINAE than substitution into the
expanded alias, and so the alias is in a way non-transparent.

For example, 'first_t<T, T&>' in

  template<class T, class...> using first_t = T;
  template<class T> first_t<T, T&> f();

is such an alias template-id since first_t doesn't use its second
template parameter and so the substitution into the expanded alias would
discard the SFINAE effects of the corresponding (dependent) argument 'T&'.

But this predicate is overly conservative since what really matters for
sake of SFINAE equivalence is whether a template argument corresponding
to an _unused_ template parameter is dependent.  So the predicate should
return false for e.g. 'first_t<T&, int>'.

This patch refines the predicate appropriately.  We need to be able to
efficiently determine which template parameters of a complex alias
template are unused, so to that end we add a new out parameter to
complex_alias_template_p and cache its result in an on-the-side hash_map
that replaces the existing TEMPLATE_DECL_COMPLEX_ALIAS_P flag.

	PR c++/90679

gcc/cp/ChangeLog:

	* cp-tree.h (TEMPLATE_DECL_COMPLEX_ALIAS_P): Remove.
	(most_general_template): Constify parameter.
	* pt.cc (push_template_decl): Adjust after removing
	TEMPLATE_DECL_COMPLEX_ALIAS_P.
	(complex_alias_tmpl_info): New hash_map.
	(uses_all_template_parms_data::seen): Change type to
	tree* from bool*.
	(complex_alias_template_r): Adjust accordingly.
	(complex_alias_template_p): Add 'seen_out' out parameter.
	Call most_general_template and check PRIMARY_TEMPLATE_P.
	Use complex_alias_tmpl_info to cache the result and set
	'*seen_out' accordigly.
	(dependent_alias_template_spec_p): Add !processing_template_decl
	early exit test.  Consider dependence of only template arguments
	corresponding to seen template parameters as per

gcc/testsuite/ChangeLog:

	* g++.dg/cpp0x/alias-decl-76.C: New test.
2023-12-19 11:26:34 -05:00
Marc Poulhiès
c37159d2e5 testsuite: adjust call to abort in excess-precision-12
On non-hosted targets, cstdlib may not be sufficient to have abort
defined, but it should be for std::abort.

gcc/testsuite/ChangeLog:

	* g++.target/i386/excess-precision-12.C: call std::abort instead of abort.
2023-12-19 16:02:48 +01:00
Marc Poulhiès
41f1b570ac ada: Add makefile targets for building/installing html doc
Add the ada.html and ada.install-html targets so that we can build the
html with `make html`.

gcc/ada/

	* gcc-interface/Make-lang.in (ada.html, ada.install-html): Add.
2023-12-19 15:27:51 +01:00
Eric Botcazou
a3626f49d6 ada: Fix internal error on call with parameter of predicated subtype
The problem is that the predicated subtype does not inherit all the required
attributes of a string subtype with a static predicate.

gcc/ada/

	* sem_ch3.adb (Analyze_Subtype_Declaration): Remove a short-circuit
	for subtypes without aspects when it comes to predicates.
	* sem_util.adb (Inherit_Predicate_Flags): Deal with private subtypes
	whose full view is an Itype.
2023-12-19 15:27:51 +01:00
Viljar Indus
257a2fca4f ada: Check all interfaces for valid iterator type
gcc/ada/

	* sem_ch13.adb (Valid_Default_Iterator): Check all interfaces for
	valid iterator type. Also improve error reporting.
2023-12-19 15:27:50 +01:00
Gary Dismukes
aad881afce ada: Missing error on positional container aggregates for types with Add_Named
The compiler fails to reject a container aggregate written using positional
notation when the container type specifies an Add_Named operation in its
Aggregate aspect. Container aggregates for such types must be written using
named associations. The compiler ignores the positional associations and
produces an empty aggregate object. An error check is added to catch such
illegal container aggregates.

gcc/ada/

	* sem_aggr.adb (Resolve_Container_Aggregate): In the Add_Named
	case, issue an error if the container aggregate is written as a
	positional aggregate, since such an aggregate must have named
	associations.
2023-12-19 15:27:50 +01:00
Sheri Bernstein
8ce9496f0e ada: Remove GNATcheck violations
Remove GNATcheck violations by refactoring code and also using
pragma Annotate to exempt them.

gcc/ada/

	* libgnat/a-comlin.adb (Argument_Count): Rewrite code so there is
	only one return, to remove Improper_Returns violation.
	(Command_Name): Add pragma to exempt Improper_Returns violation.
2023-12-19 15:27:50 +01:00
Eric Botcazou
23508d3dc6 ada: Rework comment in Expand_Ctrl_Function_Call
This expands on the reason for properly guarding the transformation.

gcc/ada/

	* exp_ch6.adb (Expand_Ctrl_Function_Call): Rework last comment.
2023-12-19 15:27:50 +01:00
Gary Dismukes
b09d948e05 ada: Compiler hangs on container aggregate with function call as key expression
The compiler hangs (or may crash, if assertions are enabled) when compiling
an iterated association of a container aggregate that has a key expression
given by a function call. The resolution of the call leads to a blowup in
Build_Call_Marker, because the temporary copy of the expression that's
analyzed has an Empty parent, causing insertion of the call marker to fail.
The fix for this is to preanalyze, rather than analyze, the copy of the key
expression (Build_Call_Marker will return without creating a call marker in
the case of preanalysis).

gcc/ada/

	* sem_aggr.adb (Resolve_Iterated_Association): Call
	Preanalyze_And_Resolve instead of Analyze_And_Resolve on a key
	expression of an iterated association.
2023-12-19 15:27:50 +01:00
Piotr Trojanek
b90089402f ada: Fix style and typos in comments
Code cleanup.

gcc/ada/

	* exp_ch9.adb, sem_ch10.adb, sem_util.adb: Fix comments.
2023-12-19 15:27:50 +01:00
Piotr Trojanek
8106b44764 ada: Remove unreferenced utility routine Get_Logical_Line_Number_Img
Routine Get_Logical_Line_Number_Img was introduced for splitting of
Pre/Post contracts, but subsequent patch for that feature removed its
only use. It was then used by GNATprove, but that use is now removed
as well.

gcc/ada/

	* sinput.adb, sinput.ads (Get_Logical_Line_Number_Img): Remove.
2023-12-19 15:27:50 +01:00
Patrick Bernardi
3e137ec2ef ada: gnatbind: Do not generate Ada.Command_Line references when not used
It was previously assumed that configurable runtimes could not return exit
statuses, however this assumption no longer holds. Instead, only import
the required symbols from Ada.Command_Line's support packages if
Ada.Command_Line is in the closure of the partition when a configurable
runtime is used.

gcc/ada/

	* bindgen.adb (Command_Line_Used): New object.
	(Gen_Main): Only generate references to symbols used by
	Ada.Command_Line if the package is used by the partition.
	(Gen_Output_File_Ada): Ditto.
	(Resolve_Binder_Options): Check if Ada.Command_Line is in the
	closure of the partition.
2023-12-19 15:27:49 +01:00
Vasiliy Fofanov
e691cda519 ada: Optimize performance and remove dynamic frame requirement.
gcc/ada/

	* libgnat/i-cstrin.adb (Value): Optimize.
2023-12-19 15:27:49 +01:00
Piotr Trojanek
9bbd4af053 ada: Ignore unconstrained components as inputs for Depends
The current wording of SPARK RM 6.1.5(5) about the inputs for the
Depends contract doesn't mention "a record with at least one
unconstrained component".

gcc/ada/

	* sem_prag.adb (Is_Unconstrained_Or_Tagged_Item): Update comment
	and body.
2023-12-19 15:27:49 +01:00
Eric Botcazou
80a63cc744 ada: Rename Is_Constr_Subt_For_UN_Aliased flag
The flag is set on the constructed subtype of an object with unconstrained
nominal subtype that is aliased and is used by the code generator to adjust
the layout of the object.

But it is actually only used for array subtypes, where it determines whether
the object is allocated with its bounds, and this usage could be extended to
other cases than the original case.

gcc/ada/

	* einfo.ads (Is_Constr_Subt_For_UN_Aliased): Rename into...
	(Is_Constr_Array_Subt_With_Bounds): ...this.
	* exp_ch3.adb (Expand_N_Object_Declaration): Adjust to above
	renaming and remove now redundant test.
	* sem_ch3.adb (Analyze_Object_Declaration): Likewise, but set
	Is_Constr_Array_Subt_With_Bounds only on arrays.
	* gen_il-fields.ads (Opt_Field_Enum): Apply same renaming.
	* gen_il-gen-gen_entities.adb (Entity_Kind): Likewise.
	* gen_il-internals.adb (Image): Remove specific processing for
	Is_Constr_Subt_For_UN_Aliased.
	* treepr.adb (Image): Likewise.
	* gcc-interface/decl.cc (gnat_to_gnu_entity): Adjust to renaming
	and remove now redundant tests.
	* gcc-interface/trans.cc (Identifier_to_gnu): Likewise.
	(Call_to_gnu): Likewise.
2023-12-19 15:27:49 +01:00
Johannes Kliemann
35ef3e08ec ada: Remove No_Dynamic_Priorities from Restricted_Tasking
Some of our restricted runtimes support dynamic priorities. The binder
needs to generate code for a restricted runtime even if the restriction
No_Dynamic_Priorities is not in place.

gcc/ada/

	* libgnat/s-rident.ads: Remove No_Dynamic_Priorities from
	Restricted_Tasking.
2023-12-19 15:27:49 +01:00
Patrick Bernardi
15626fb116 ada: Adapt Ada.Command_Line to work on configurable runtimes
The behaviour of the binder when handling command line arguments and exit
codes is simplified so that references to the corresponding runtime symbols
are always generated when the runtime is configured with command line
argument and exit code support. This allows Ada.Command_Line to work with
all runtimes, which was not the case previously.

As a result of this change, configurable runtimes that do not include
Ada.Command_Line and it support files, but are configured with
Command_Line_Args and/or Exit_Status_Supported set to True will need to
provide the symbols required by the binder, as these symbols will no longer
be defined in the binder generated file.

argv.c includes a small change to exclude adaint.h when compiling for a
light runtime, since this header is not required.

gcc/ada/

	* argv.c: Do not include adaint.h if LIGHT_RUNTIME is defined.
	* bindgen.adb (Gen_Main): Simplify command line argument and exit
	handling by requiring the runtime to always provide the required
	symbols if command line argument and exit code is enabled.
	* targparm.ads: Update comments to reflect changes to gnatbind.
2023-12-19 15:27:49 +01:00
Ronan Desplanques
346e4645eb ada: Fix crash on concurrent type aggregate
Before this patch, the compiler would fail to examine the corresponding
record types of concurrent types when building aggregate components.
This patch fixes this, and adds a precondition and additional documentation
on the subprogram that triggered the crash, as it never makes sense
to call it with a concurrent type.

gcc/ada/

	* exp_aggr.adb (Initialize_Component): Use corresponding record
	types of concurrent types.
	* exp_util.ads (Make_Tag_Assignment_From_Type): Add precondition
	and extend documentation.

Co-authored-by: Javier Miranda <miranda@adacore.com>
2023-12-19 15:27:49 +01:00
Eric Botcazou
6b92b664aa ada: Further cleanup in finalization machinery
This removes the setting of the Is_Ignored_Transient flag on the temporaries
needing finalization created by Expand_Ctrl_Function_Call when invoked from
within the dependent expressions of conditional expressions.

This flag tells the general finalization machinery to disregard the object.
But temporaries needing finalization present in action lists of dependent
expressions are picked up by Process_Transients_In_Expression, which deals
with their finalization and sets the Is_Finalized_Transient flag on them.

Now this latter flag has exactly the same effect as Is_Ignored_Transient
as far as the general finalization machinery is concerned, so setting the
flag is unnecessary.  In the end, the flag can be decoupled entirely from
transient objects and renamed into Is_Ignored_For_Finalization.

This also moves around the declaration of a local variable and turns a
library-level procedure into a nested procedure.

gcc/ada/

	* einfo.ads (Is_Ignored_Transient): Rename into...
	(Is_Ignored_For_Finalization): ...this.
	* gen_il-fields.ads (Opt_Field_Enum): Adjust to above renaming.
	* gen_il-gen-gen_entities.adb (Object_Kind): Likewise.
	* exp_aggr.adb (Expand_Array_Aggregate): Likewise.
	* exp_ch7.adb (Build_Finalizer.Process_Declarations): Likewise.
	* exp_util.adb (Requires_Cleanup_Actions): Likewise.
	* exp_ch4.adb (Expand_N_If_Expression): Move down declaration of
	variable Optimize_Return_Stmt.
	(Process_Transient_In_Expression): Turn procedure into a child of...
	(Process_Transients_In_Expression): ...this procedure.
	* exp_ch6.adb (Expand_Ctrl_Function_Call): Remove obsolete setting
	of Is_Ignored_Transient flag on the temporary if within a dependent
	expression of a conditional expression.
2023-12-19 15:27:48 +01:00
Yannick Moy
c3d97f236e ada: Fix SPARK expansion of container aggregates
GNATprove supports container aggregates, except for indexed aggregates.
It needs all expressions to have suitable target types and Do_Range_Check
flags, which are added by the special expansion for GNATprove.

There is no impact on code generation.

gcc/ada/

	* exp_spark.adb (Expand_SPARK_N_Aggregate): New procedure for the
	special expansion.
	(Expand_SPARK): Call the new expansion procedure.
	* sem_util.adb (Is_Container_Aggregate): Implement missing test.
2023-12-19 15:27:48 +01:00
Eric Botcazou
40cf86ef4a ada: Add missing guard to previous change
Ancestor_Type is overloaded with Aggregate_Bounds on N_Aggregate nodes
so its access needs to be guarded in Copy_Generic_Node.

gcc/ada/

	* sem_ch12.adb (Copy_Generic_Node): Add guard for Ancestor_Type.
2023-12-19 15:27:48 +01:00
Eric Botcazou
cdd8f4b3f2 ada: Fix spurious visibility error on parent's component in instance
This occurs for an aggregate of a derived tagged type in the body of the
instance, because the full view of the parent type, which was visible in
the generic construct (otherwise the aggregate would have been illegal),
is not restored in the body of the instance.

Copy_Generic_Node already contains code to restore the full view in this
case, but it works only if the derived tagged type is itself global to
the generic construct, and not if the derived tagged type is local but
the parent type global, as is the case here.

gcc/ada/

	* gen_il-fields.ads (Aggregate_Bounds): Rename to
	Aggregate_Bounds_Or_Ancestor_Type.
	* gen_il-gen-gen_nodes.adb (Aggregate_Bounds): Likewise.
	* sem_aggr.adb (Resolve_Record_Aggregate): Remove obsolete bypass.
	* sem_ch12.adb (Check_Generic_Actuals): Add decoration.
	(Copy_Generic_Node): For an extension aggregate, restore only the
	full view, if any.  For a full aggregate, restore the full view as
	well as that of its Ancestor_Type, if any, and up to the root type.
	(Save_References_In_Aggregate): For a full aggregate of a local
	derived tagged type with a global ancestor, set Ancestor_Type to
	this ancestor.  For a full aggregate of a global derived tagged
	type, set Ancestor_Type to the parent type.
	* sinfo-utils.ads (Aggregate_Bounds): New function renaming.
	(Ancestor_Type): Likewise.
	(Set_Aggregate_Bounds): New procedure renaming.
	(Set_Ancestor_Type): Likewise.
	* sinfo.ads (Ancestor_Type): Document new field.
2023-12-19 15:27:48 +01:00
Eric Botcazou
64a485df89 ada: Plug small loophole in finalization machinery
The path in Expand_N_If_Expression implementing the special optimization for
an unidimensional array type and dependent expressions with static bounds
fails to call Process_Transients_In_Expression on their list of actions.

gcc/ada/

	* exp_ch4.adb (Expand_N_If_Expression): Also add missing calls to
	Process_Transients_In_Expression on the code path implementing the
	special optimization for an unidimensional array type and
	dependent expressions with static bounds.
2023-12-19 15:27:48 +01:00
Steve Baird
5c374c0907 ada: Cope with Sem_Util.Enclosing_Declaration oddness.
Sem_Util.Enclosing_Declaration can return a non-empty result which is not
a declaration; clients may need to compensate for the case where an
N_Subprogram_Specification node is returned. One such client is the function
Is_Actual_Subp_Of_Inst.

gcc/ada/

	* sem_ch8.adb (Is_Actual_Subp_Of_Inst): After calling
	Enclosing_Declaration, add a check for the case where one more
	Parent call is needed to get the enclosing declaration.
2023-12-19 15:27:48 +01:00
Ronan Desplanques
95a7771da2 ada: Restore object constraint optimization
This patch relaxes the requirement that discriminants values should be
known at compile time for a particular optimization to be applied. That
optimization is the one that treats an unconstrained object as constrained
when the object is of a limited type, in order to reduce the size of the
object.

What makes it possible to relax this requirement is that the set of
cases where the optimization is applied was narrowed in a previous
patch.

gcc/ada/

	* sem_util.adb (Build_Default_Subtype_OK): Relax
	known-at-compile-time requirement.
	* sem_util.ads (Build_Default_Subtype_OK): Bring documentation
	comment up-to-date.
2023-12-19 15:27:48 +01:00
Yannick Moy
1acce1417b ada: Do not issue SPARK legality error if SPARK_Mode ignored
When pragma Ignore_Pragma(SPARK_Mode) is used, do not issue error
messages related to SPARK legality checking. This facilitates the
instrumentation of code by GNATcoverage.

gcc/ada/

	* doc/gnat_rm/implementation_defined_pragmas.rst: Fix doc for
	pragma Ignore_Pragma, in the case where it follows another
	configuration pragma that it names, which causes the preceding
	pragma to be ignored after parsing.
	* errout.adb (Should_Ignore_Pragma_SPARK_Mode): New query.
	(SPARK_Msg_N): Do nothing if SPARK_Mode is ignored.
	(SPARK_Msg_NE): Same.
	* gnat-style.texi: Regenerate.
	* gnat_rm.texi: Regenerate.
	* gnat_ugn.texi: Regenerate.
2023-12-19 15:27:48 +01:00
Yannick Moy
da5dca1d36 ada: Cleanup SPARK legality checking
Move one SPARK legality check from GNAT to GNATprove, and cleanup
other uses of SPARK_Mode for legality checking.

gcc/ada/

	* sem_ch4.adb (Analyze_Selected_Component): Check correct mode
	variable for GNATprove.
	* sem_prag.adb (Refined_State): Call SPARK_Msg_NE which checks
	value of SPARK_Mode before issuing a message.
	* sem_res.adb (Resolve_Entity_Name): Remove legality check for
	SPARK RM 6.1.9(1), moved to GNATprove.
2023-12-19 15:27:47 +01:00
Steve Baird
27fd2dc518 ada: Illegal instance of Generic_1.Generic_2 incorrectly accepted
If G1 is a generic package and G1.G2 is a child unit (also a generic package)
then it would be illegal if some third generic unit (declared outside of G1)
takes a formal instance of G1.G2, as in "with package I2 is new G1.G2;".
This construct was incorrectly accepted in some cases.

gcc/ada/

	* sem_ch12.adb (Check_Generic_Child_Unit): Introduce a new nested
	function Adjusted_Inst_Par_Ekind to cope with cases where either
	a- the visibility of a compiler-generated renaming is incorrect;
	or b- we are inside of a generic parent unit G1 that has a child
	unit G1.G2, so instantiation of G1.G2 is permitted.
2023-12-19 15:27:47 +01:00
Eric Botcazou
54d049b281 ada: Further cleanup in finalization machinery
This streamlines the submachinery that makes it so that the finalization of
temporaries created for EWAs and conditional expressions is deferred to the
enclosing context.

The original implementation was using a deep tree traversal for EWAs, which
was later restricted to immediate subexpressions; this further flattens it
to the traversal of the immediate list of actions of the EWA in keeping with
the implementation for conditional expressions.

This should not change anything because the enclosing context found by the
machinery is the same, whatever the starting position in a nest of EWAs or
conditional expressions.

gcc/ada/

	* exp_ch4.adb (Process_If_Case_Statements): Rename into...
	(Process_Transients_In_Expression): ...this and beef up comment.
	(Expand_N_Case_Expression): Call Process_Transients_In_Expression
	unconditionally on the list of actions of each alternative.
	(Expand_N_Expression_With_Actions): Do not deal with actions in
	nested subexpressions, but call Process_Transients_In_Expression
	on the list of actions only.
	(Expand_N_If_Expression): Adjust to above renaming.  Add missing
	calls to Process_Transients_In_Expression in the case when an EWA
	is not used because of Minimize_Expression_With_Actions.
2023-12-19 15:27:47 +01:00
Juzhe-Zhong
71bc7c6fa1 RISC-V: Fix FAIL of bb-slp-cond-1.c for RVV
Due to recent VLSmode changes (Change for fixing ICE and run-time FAIL).

The dump check is same as ARM SVE now. So adapt test for RISC-V.

gcc/testsuite/ChangeLog:

	* gcc.dg/vect/bb-slp-cond-1.c: Adapt for RISC-V.
2023-12-19 21:14:22 +08:00
Richard Biener
afd49e6632 tree-optimization/113080 - missing final value replacement
When performing final value replacement we guard against exponential
(temporary) code growth due to unsharing of trees (SCEV heavily
relies on tree sharing).  The following relaxes this a tiny bit
to cover some more optimizations and puts in comments as to what
the real fix would be.

	PR tree-optimization/113080
	* tree-scalar-evolution.cc (expression_expensive_p): Allow
	a tiny bit of growth due to expansion of shared trees.
	(final_value_replacement_loop): Add comment.

	* gcc.dg/tree-ssa/sccp-3.c: New testcase.
2023-12-19 13:31:30 +01:00
Richard Biener
aa2a48984c tree-optimization/113073 - amend PR112736 fix
The PR112736 testcase fails on RISC-V because the aligned exception
uses the wrong check.  The alignment support scheme can be
dr_aligned even when the access isn't aligned to the vector size
but some targets are happy with element alignment.  The following
fixes that.

	PR tree-optimization/113073
	* tree-vect-stmts.cc (vectorizable_load): Properly ensure
	to exempt only vector-size aligned overreads.
2023-12-19 13:31:30 +01:00
Roger Sayle
7e1c440bc8 i386: Improved TImode (128-bit) integer constants on x86_64.
This patch fixes two issues with the handling of 128-bit TImode integer
constants in the x86_64 backend.  The main issue is that GCC always
tries to load 128-bit integer constants via broadcasts to vector SSE
registers, even if the result is required in general registers.  This
is seen in the two closely related functions below:

__int128 m;
void foo() { m &= CONST; }
void bar() { m = CONST; }

When compiled with -O2 -mavx, we currently generate:

foo:	movabsq $81985529216486895, %rax
        vmovq   %rax, %xmm0
        vpunpcklqdq     %xmm0, %xmm0, %xmm0
        vmovq   %xmm0, %rax
        vpextrq $1, %xmm0, %rdx
        andq    %rax, m(%rip)
        andq    %rdx, m+8(%rip)
        ret

bar:	movabsq $81985529216486895, %rax
        vmovq   %rax, %xmm1
        vpunpcklqdq     %xmm1, %xmm1, %xmm0
        vpextrq $1, %xmm0, %rdx
        vmovq   %xmm0, m(%rip)
        movq    %rdx, m+8(%rip)
        ret

With this patch we defer the decision to use vector broadcast for
TImode until we know that we actually want a SSE register result,
by moving the call to ix86_convert_const_wide_int_to_broadcast from
the RTL expansion pass, to the scalar-to-vector (STV) pass.  With
this change (and a minor tweak described below) we now generate:

foo:	movabsq $81985529216486895, %rax
        andq    %rax, m(%rip)
        andq    %rax, m+8(%rip)
        ret

bar:	movabsq $81985529216486895, %rax
        vmovq   %rax, %xmm0
        vpunpcklqdq     %xmm0, %xmm0, %xmm0
        vmovdqa %xmm0, m(%rip)
        ret

showing that we now correctly use vector mode broadcasts (only)
where appropriate.

The one minor tweak mentioned above is to enable the un-cprop hi/lo
optimization, that I originally contributed back in September 2004
https://gcc.gnu.org/pipermail/gcc-patches/2004-September/148756.html
even when not optimizing for size.  Without this (and currently with
just -O2) the function foo above generates:

foo:    movabsq $81985529216486895, %rax
	movabsq $81985529216486895, %rdx
        andq    %rax, m(%rip)
        andq    %rdx, m+8(%rip)
        ret

I'm not sure why (back in 2004) I thought that avoiding the implicit
"movq %rax, %rdx" instead of a second load was faster, perhaps avoiding
a dependency to allow better scheduling, but nowadays "movq %rax, %rdx"
is either eliminated by GCC's hardreg cprop pass, or special cased by
modern hardware, making the first foo preferrable, not only shorter but
also faster.

2023-12-19  Roger Sayle  <roger@nextmovesoftware.com>

gcc/ChangeLog
	* config/i386/i386-expand.cc
	(ix86_convert_const_wide_int_to_broadcast): Remove static.
	(ix86_expand_move): Don't attempt to convert wide constants
	to SSE using ix86_convert_const_wide_int_to_broadcast here.
	(ix86_split_long_move): Always un-cprop multi-word constants.
	* config/i386/i386-expand.h
	(ix86_convert_const_wide_int_to_broadcast): Prototype here.
	* config/i386/i386-features.cc: Include i386-expand.h.
	(timode_scalar_chain::convert_insn): When converting TImode to
	V1TImode, try ix86_convert_const_wide_int_to_broadcast.

gcc/testsuite/ChangeLog
	* gcc.target/i386/movti-2.c: New test case.
	* gcc.target/i386/movti-3.c: Likewise.
2023-12-19 11:24:36 +00:00
Thomas Schwinge
cf840a7f7c Unify OpenACC/C and C++ behavior re duplicate OpenACC 'declare' directives for 'extern' variables [PR90868]
This likely still isn't what OpenACC actually intends (addressing that is for
another day), but at least we now misbehave consistently for C and C++.

	PR c++/90868
	gcc/cp/
	* parser.cc (cp_parser_oacc_declare): For "more than once", check
	the DECL that we're actually setting the attribute on.
	gcc/testsuite/
	* c-c++-common/goacc/declare-1.c: Adjust.
	* c-c++-common/goacc/declare-2.c: Likewise.
2023-12-19 12:15:17 +01:00
Juzhe-Zhong
1555a5e24c RISC-V: Refine some codes of expand_const_vector [NFC]
gcc/ChangeLog:

	* config/riscv/riscv-v.cc (expand_const_vector): Use builder.inner_mode ().
2023-12-19 19:11:31 +08:00
Jakub Jelinek
80e1375ed7 i386: Fix mmx.md signbit expanders [PR112816]
Apparently when looking for "signbit<mode>2" vector expanders, I've only
looked at sse.md and forgot mmx.md, which has two further ones and the
following patch still ICEd.

2023-12-19  Jakub Jelinek  <jakub@redhat.com>

	PR target/112816
	* config/i386/mmx.md (signbitv2sf2, signbit<mode>2): Force operands[1]
	into a REG.

	* gcc.target/i386/sse2-pr112816-2.c: New test.
2023-12-19 10:24:33 +01:00
Alex Coplan
2cd5548085 aarch64: Fix parens in aarch64_stp_reg_operand [PR113061]
In r14-6603-gfcdd2757c76bf925115b8e1ba4318d6366dd6f09 I messed up the
parentheses in aarch64_stp_reg_operand, the indentation shows the intended
nesting of the conditions.  This patch fixes that.

This fixes PR113061 which shows IRA substituting (const_int 1) into a
writeback stp pattern as a result (and LRA failing to reload the
constant).

gcc/ChangeLog:

	PR target/113061
	* config/aarch64/predicates.md (aarch64_stp_reg_operand): Fix
	parentheses to match intent.

gcc/testsuite/ChangeLog:

	PR target/113061
	* gfortran.dg/PR113061.f90: New test.
2023-12-19 09:22:20 +00:00
Juzhe-Zhong
a0cc5eb21d RISC-V: Force scalable vector on all vsetvl tests
Since when VLEN = 128bits and FIXED-VLMAX, vsetvli a5,zero will be optimized
into vsetivli zero, 16 for SEW = 16.
Such situation will cause many bogus FAILs in FIXED-VLMAX of full coverage
testing.

Force them all scalable vectors to supress those bogus FAILs.

gcc/testsuite/ChangeLog:

	* gcc.target/riscv/rvv/vsetvl/avl_multiple-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_multiple-10.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_multiple-11.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_multiple-12.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_multiple-13.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_multiple-14.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_multiple-15.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_multiple-16.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_multiple-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_multiple-3.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_multiple-4.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_multiple-5.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_multiple-6.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_multiple-7.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_multiple-8.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_multiple-9.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_prop-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_prop-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-10.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-100.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-101.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-102.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-103.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-104.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-105.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-106.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-107.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-108.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-109.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-11.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-12.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-13.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-14.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-15.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-16.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-17.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-18.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-19.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-20.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-21.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-22.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-23.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-24.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-25.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-26.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-27.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-28.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-29.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-3.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-30.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-31.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-32.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-33.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-34.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-35.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-36.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-37.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-38.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-39.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-4.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-40.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-41.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-42.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-43.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-44.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-45.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-46.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-47.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-48.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-49.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-5.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-50.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-51.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-52.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-53.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-54.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-55.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-56.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-57.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-58.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-59.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-6.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-60.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-61.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-62.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-63.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-64.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-65.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-66.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-67.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-68.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-69.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-7.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-70.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-71.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-72.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-73.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-74.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-75.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-76.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-77.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-78.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-79.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-8.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-80.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-81.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-82.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-83.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-84.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-85.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-86.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-87.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-88.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-89.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-9.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-90.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-91.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-92.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-93.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-94.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-95.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-96.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-97.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-98.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/avl_single-99.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/dump-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/ffload-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/ffload-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/ffload-3.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/ffload-5.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/ffload-6.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/ffload-7.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-10.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-11.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-12.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-13.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-3.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-4.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-5.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-6.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-7.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-8.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_bb_prop-9.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_conflict-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_conflict-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_conflict-3.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_conflict-4.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_conflict-5.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-10.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-11.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-12.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-13.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-14.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-15.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-16.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-17.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-3.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-4.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-5.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-6.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-7.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-8.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-9.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_switch-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_switch-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_switch-3.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_switch-4.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_switch-5.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_switch-6.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_switch-7.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_switch-8.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/imm_switch-9.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr108270.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr109399.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr109547.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr109615.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr109743-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr109743-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr109743-3.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr109743-4.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr109748.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr109773-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr109773-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr109974.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr111037-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr111037-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr111037-3.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr111037-4.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr111234.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr111255.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr111927.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr111947.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr112092-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr112092-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr112713-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr112713-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr112776.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr112813-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr112929-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/pr112988-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-10.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-11.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-12.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-13.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-14.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-15.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-16.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-17.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-18.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-19.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-20.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-21.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-22.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-23.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-24.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-25.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-26.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-27.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-28.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-29.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-3.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-30.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-31.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-32.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-33.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-34.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-35.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-36.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-37.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-38.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-39.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-4.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-40.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-41.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-42.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-43.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-44.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-45.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-46.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-5.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-6.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-7.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-8.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-9.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-10.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-11.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-12.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-13.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-14.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-15.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-16.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-17.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-18.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-19.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-20.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-21.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-22.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-23.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-24.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-25.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-26.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-27.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-28.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-3.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-4.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-5.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-6.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-7.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-8.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-9.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_call-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_call-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_call-3.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_call-4.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_complex_loop-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_complex_loop-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-10.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-11.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-12.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-13.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-3.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-4.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-5.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-6.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-7.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-8.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-9.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-10.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-11.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-12.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-13.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-14.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-15.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-16.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-17.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-18.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-19.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-20.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-21.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-22.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-23.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-24.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-25.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-26.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-27.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-28.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-3.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-4.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-5.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-6.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-7.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-8.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-9.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-10.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-11.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-12.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-13.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-14.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-15.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-16.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-17.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-18.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-19.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-20.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-21.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-22.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-23.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-24.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-25.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-26.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-27.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-28.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-3.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-4.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-5.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-6.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-7.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-8.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-9.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-10.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-11.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-12.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-13.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-14.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-15.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-16.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-17.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-18.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-19.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-3.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-4.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-5.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-6.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-7.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-8.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-9.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-3.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-4.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-5.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-6.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-7.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-8.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-10.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-11.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-12.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-13.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-14.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-15.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-16.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-3.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-4.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-5.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-6.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-7.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-8.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-9.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl-10.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl-11.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl-12.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl-13.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl-14.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl-15.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl-16.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl-17.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl-18.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl-19.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl-20.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl-21.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl-22.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl-23.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl-24.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl-3.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl-4.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl-5.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl-6.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl-7.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl-8.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl-9.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl_bug-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl_bug-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvl_int.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-1.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-10.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-11.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-12.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-13.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-14.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-15.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-16.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-17.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-18.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-19.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-2.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-20.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-3.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-4.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-5.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-6.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-7.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-8.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/vsetvlmax-9.c: Force scalable vector.
	* gcc.target/riscv/rvv/vsetvl/wredsum_vlmax.c: Force scalable vector.
2023-12-19 16:45:55 +08:00
Juzhe-Zhong
746e7b214d RISC-V: Fix FAIL of dynamic-lmul2-7.c
Fix this FAIL:
FAIL: gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul2-7.c scan-tree-dump-times vect "Maximum lmul = 2" 1

gcc/testsuite/ChangeLog:

	* gcc.dg/vect/costmodel/riscv/rvv/dynamic-lmul2-7.c: Adapt test.
2023-12-19 14:07:39 +08:00
xuli
b61e849bd3 testsuite: Fix dump checks under different riscv-sim for RVV.
gcc/testsuite/ChangeLog:

	* gcc.target/riscv/rvv/base/cpymem-1.c: Fix checks under medany.
	* gcc.target/riscv/rvv/base/cpymem-strategy-3.c: Fix checks.
	* gcc.target/riscv/rvv/base/cpymem-strategy-4.c: Ditto.
2023-12-19 05:26:09 +00:00