Xi Ruoyao via Gcc-patches <gcc-patches@gcc.gnu.org> writes: > On Thu, 2021-06-24 at 10:48 -0600, Jeff Law wrote: >> >> >> On 6/22/2021 1:05 AM, Xi Ruoyao via Gcc-patches wrote: >> > mips.exp does not support -fno-inline, causing the tests return >> > "ERROR: >> > Unrecognised option: -fno-inline for dg-options ... ". >> > >> > Use noinline attribute like other mips target tests, to workaround >> > it. >> > >> > gcc/testsuite/ >> > >> > * gcc.target/mips/cfgcleanup-jalr2.c: Remove -fno-inline and >> > add >> > __attribute__((noinline)). >> > * gcc.target/mips/cfgcleanup-jalr3.c: Likewise. >> I'd like to know a bit more here. mips.exp shouldn't care about the >> options passed to the compiler and to the best of my knowledge >> -fno-inline is still a valid GCC option. So while I don't think the >> patch itself is wrong, I question if it's necessary and whether or not >> your just papering over some other issue. > > There is some logic processing options in mips.exp. Some options are > overrided for multilib. It seems the mips.exp was originally designed > as: > > * MIPS options should go in dg-options > * Other options should go in dg-additional-options > > In d2148424165 marxin merged some dg-additional-options into dg-options, > exploited the problem. > > And, the "origin" convention seems already broken: there is something > like -funroll-loops which is not a MIPS option, but accepted by mips.exp > in dg-options.
Originally the idea was that all options would go into dg-options, not just MIPS ones. If a test wanted to pass an option that mips.exp doesn't currently understand then mips.exp should be extended to classify the new option appropriately. Some options require intervention from mips.exp to be usable across all configurations while others can be passed through as-is. The idea was that mips.exp would be the single place that knew which options were which, rather than having to hard-code that distinction in every test. So I think the fix for this would be to extend: # Add -ffoo/-fno-foo options to mips_option_groups. foreach option { common delayed-branch expensive-optimizations fast-math fat-lto-objects finite-math-only fixed-hi fixed-lo lax-vector-conversions omit-frame-pointer optimize-sibling-calls peephole2 schedule-insns2 split-wide-types tree-vectorize unroll-all-loops unroll-loops ipa-ra } { lappend mips_option_groups $option "-f(no-|)$option" } to include "inline" as well. A rule like “all -f options can be passed through as-is” isn't safe because (at least) -fpic requires special handling. Thanks, Richard