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

Reply via email to