"Steve Ellcey " <sell...@mips.com> writes: > While working on my favorite mips option (-msynci) I noticed an odd thing. > If I compile with '-mips32 -mips16 -msynci' I got a warning about synci not > being supported but if I compiled with '-mips32r2 -mips16 -msynci' I did not > get a warning, even though -mips16 mode does not support synci. Furthermore > if I compiled a program that called __builtin___clear_cache with '-mips32r2 > -mips16 -msynci', the compiler would abort.
The abort sounds like the bug here. It's deliberate that things like -msynci, -mbranch-likely, etc., are OK with -mips16. On the one hand, you could compile with -mips16 but have an __attribute__((nomips16)) function that could benefit from using SYNCI. On the other, you could compile without -mips16 but have an __attribute__((mips16)) function that needs to avoid SYNCI. -mips16 really just sets the default ISA mode for functions that don't specify one. That's why override_options hides mips16ness so early on, like you say. Richard