Andrew Bennett <andrew.benn...@imgtec.com> 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