[Bug target/97327] -mcpu=cortex-m55 warns without -mfloat-abi=hard or -march=armv8.1-m.main

avieira at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Oct 13 09:51:44 GMT 2020


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97327

--- Comment #5 from avieira at gcc dot gnu.org ---
Your other one:
-mcpu=cortex-m55+nomve -march=armv8.1-m.main+mve -mfloat-abi=softfp
This has cpu without mve and arch with mve.

Another fun caveat to look at is in:
-mcpu=cortex-m55 -mfloat-abi=soft
float-abi=soft disables vector instructions, so it makes sense to remove mve.fp
and fp.dp/fp. However, we must make sure that +mve is still passed to the
assembler because +mve enables new scalar shift instructions.

If we want to be in-sync with legacy though I don't think we even need to look
at all these complicated cases as. Since it seems in the past we ignore fp
extensions, take for instance:
arm-none-eabi-gcc -mcpu=cortex-m7 -march=armv7e-m -mfloat-abi=hard
arm-none-eabi-gcc -mcpu=cortex-m7 -march=armv7e-m+fp -mfloat-abi=hard 
arm-none-eabi-gcc -mcpu=cortex-m7+nofp -march=armv7e-m  -mfloat-abi=soft
arm-none-eabi-gcc -mcpu=cortex-m7+nofp -march=armv7e-m+fp

None of these give the warning, so maybe the solution is to ignore MVE as well
as the FP extension when checking for this? There is a bit in the warning code 
that says:
          /* And if the target ISA lacks floating point, ignore any
             extensions that depend on that.  */
          if (!bitmap_bit_p (target->isa, isa_bit_vfpv2))
            bitmap_and_compl (isa_delta, isa_delta, isa_all_fpbits);

Maybe we need to 'ignore any extension that depends on mve'? But I don't quite
understand how this works with the case where we do have isa_bit_vfpv2...

For Srinath's sake it would be good to agree on what the behaviour should be
and then work towards that. I personally don't have a strong feeling about this
other then: passing '-mcpu=cortex-m55' shouldn't give warnings ... since well
that's insane :P


More information about the Gcc-bugs mailing list