Andrew Bennett <[email protected]> writes:
> I have noticed that in the mips.exp dg-option handling code the isa and
> arch_test_option_p variables are not updated after the pre-arch to arch
> dependency handling. This means that if this code changes the
> architecture the post-arch dependency handling code (which relies on
> arch_test_option_p being true) is not run to handle any extra dependencies
> the new architecture might need.
I'm not sure this is the right place to fix this, though it does seem
subjective as we are stretching the logic a little I think.
In the pre-arch options (i.e. when an arch is not explicitly requested) we
already have code that sets -mnan-2008 when downgrading a test R6 to R5 as
the R6 headers will be nan2008 and there is no guarantee of nan legacy headers
existing. This is the opposite case where we upgrade a test from R5 to R6
and R6 has to use -mnan=2008 so needs to explicitly override any command line
option to use -mnan=legacy. I think that therefore needs adding when we set
the arch to R6 in the pre-arch options.
At the same time I think we need to add -mabs=2008 in the same place as R6
requires ABS2008 as well. You should see that as a failure if you test with
-mabs=legacy.
I think I wrote the exact same patch as you have when I did the original R6
tests and concluded it was not in-keeping with the structure of mips.exp.
I've added Richard too since he may be able to offer a guiding hand as original
author of most of the mips.exp code.
Thanks,
Matthew
> I have found this issue while investigating failures with the mips-mti-elf
> toolchain using the -mnan=legacy multilib flags when running any of the
> mips tests that have the HAS_LSA option specified in the dg-options. The
> default architecture for this toolchain is mips32r2. This means the
> architecture
> handling code changes the architecture to mips32r6 to handle the HAS_LSA
> requirements. Unfortunately because the arch_test_option_p is not updated
> it is still set to false, so the post-arch code is not run. This means
> the nan encoding is not set to -mnan=2008 when then causes the tests to fail
> because mips32r6 does not support -mnan=legacy.
>
> The patch and ChangeLog are below.
>
> Ok to commit?
>
>
>
> Regards,
>
>
>
> Andrew
>
>
> testsuite/
> * gcc.target/mips/mips.exp (mips-dg-options): Update the isa and
> arch_test_option_p variables after the arch dependency handling code.
>
>
> diff --git a/gcc/testsuite/gcc.target/mips/mips.exp
> b/gcc/testsuite/gcc.target/mips/mips.exp
> index 1dd4173..1eb714d 100644
> --- a/gcc/testsuite/gcc.target/mips/mips.exp
> +++ b/gcc/testsuite/gcc.target/mips/mips.exp
> @@ -1188,8 +1188,10 @@ proc mips-dg-options { args } {
> }
>
> # Re-calculate the isa_rev for use in the abi handling code below
> + set arch_test_option_p [mips_test_option_p options arch]
> set arch [mips_option options arch]
> set isa_rev [mips_arch_info $arch isa_rev]
> + set isa [mips_arch_info $arch isa]
>
> # Set an appropriate ABI, handling dependencies between the pre-abi
> # options and the abi options. This should mirror the abi and post-abi