On 9/1/2025 12:15 PM, Aleksandar Rakic wrote:
From: Matthew Fortune <[email protected]> The compressed MIPS ISAs (microMIPS and MIPS16) require the LSB of an address to indicate which ISA to execute. The non-conformant patterns used in these tests cannot set the ISA mode bit and may attempt to directly call the variable which triggers an error from the assembler about calling a different ISA mode. Add documentation for the newly introduced mips_compressed effective target in doc/sourcebuild.texi. This selector is used to skip tests that attempt to call variables directly, which is not supported by compressed MIPS ISAs such as microMIPS and MIPS16. gcc/doc/ * sourcebuild.texi (mips_compressed): Document new effective target. gcc/testsuite/ * gcc.c-torture/compile/20020129-1.c: Skip for MIPS16/microMIPS. * gcc.c-torture/compile/pr37433-1.c: Likewise. * gcc.c-torture/compile/pr37433.c: Likewise. * lib/target-supports.exp (check_effective_target_mips_compressed): New function.
How is this materially different than any indirect function call where the caller and callee don't have matching modes? Presumably those are handled via some kind of stub or trampoline mechanism. I don't offhand see why this couldn't be handled in the same manner (and why it isn't already). So I think a bit more digging is necessary here.
jeff
