testsuite: Fix missing EFFECTIVE_TARGETS variable errors
Permit running vector tests outside `check_vect_support_and_set_flags' environment, removing errors such as: ERROR: gcc.dg/analyzer/torture/pr93350.c -O0 : can't read "EFFECTIVE_TARGETS": no such variable for " dg-require-effective-target 1 vect_int " or: ERROR: gcc.dg/bic-bitmask-13.c: error executing dg-final: can't read "EFFECTIVE_TARGETS": no such variable with `mips-linux-gnu' target testing. The EFFECTIVE_TARGETS variable has originated from commit 9b7937cf ("Add support to run auto-vectorization tests for multiple effective targets."), where arrangements have been made to run vector tests run within `check_vect_support_and_set_flags' environment iteratively over all the vector unit variants available in the architecture using extra compilation flags regardless of whether the target environment arranged for a particular testsuite run has vector support enabled by default. So far this has been used for the MIPS target only. Vector tests have since been added though that run outside environment set up by `check_vect_support_and_set_flags' just using the current compilation environment with no extra flags added. This works for most targets, however causes problems with the MIPS target, because outside `check_vect_support_and_set_flags' environment the EFFECTIVE_TARGETS variable will not have been correctly set up even if it was added to the particular script invoking the test in question. Fix this by using just the current compilation environment whenever a vector feature is requested by `et-is-effective-target' in the absence of the EFFECTIVE_TARGETS variable. This required some modification to individual vector feature tests, which always added the compilation flags required for the determination of whether the given vector unit variant can be verified with the current testsuite run (except for the Loongson MMI variant). Now explicit flags are only passed in setting up EFFECTIVE_TARGETS and otherwise the current compilation environment will determine whether such a vector test is applicable. This changes how Loongson MMI is handled in that the `-mloongson-mmi' flag is explicitly passed for the determination of whether this vector unit variant can be verified, which I gather is how it was supposed to be arranged anyway because the flag is then added for testing the Loongson MMI variant. gcc/testsuite/ * lib/target-supports.exp (check_effective_target_mpaired_single): Add `args' argument and pass it to `check_no_compiler_messages' replacing `-mpaired-single'. (add_options_for_mips_loongson_mmi): Add `args' argument and pass it to `check_no_compiler_messages'. (check_effective_target_mips_msa): Add `args' argument and pass it to `check_no_compiler_messages' replacing `-mmsa'. (check_effective_target_mpaired_single_runtime) (add_options_for_mpaired_single): Pass `-mpaired-single' to `check_effective_target_mpaired_single'. (check_effective_target_mips_loongson_mmi_runtime) (add_options_for_mips_loongson_mmi): Pass `-mloongson-mmi' to `check_effective_target_mips_loongson_mmi'. (check_effective_target_mips_msa_runtime) (add_options_for_mips_msa): Pass `-mmsa' to `check_effective_target_mips_msa'. (et-is-effective-target): Verify that EFFECTIVE_TARGETS exists and if not, just check if the current compilation environment supports the target feature requested. (check_vect_support_and_set_flags): Pass `-mpaired-single', `-mloongson-mmi', and `-mmsa' to the respective target feature checks.
Loading
Please register or sign in to comment