https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99773
Bug ID: 99773 Summary: ARM v8.1-m MVE interaction with -mfloat-abi not clear Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: clyon at gcc dot gnu.org Target Milestone: --- I noticed an unexpected linker error when compiling with -march=armv8.1-m.main+mve -mfloat-abi=hard -mcpu=cortex-m55 -mthumb error: /tmp/ccQvvmcJ.o uses VFP register arguments, ./XXX.exe does not Using mve.fp instead of mve fixes that. However, I'm used to -mfloat-abi=hard defining the eabi attribute: Tag_ABI_VFP_args: VFP registers Compiling =================================== typedef int __attribute((vector_size(16))) v4si; float g(float x, float y) { x += y; return x; } v4si f(v4si x, v4si y) { return x + y; } =================================== with -O2 -march=armv8.1-m.main+mve -mfloat-abi=hard generates for f: vadd.i32 q0, q0, q1 bx lr which uses the MVE registers for the parameters, but the object files does not have the Tag_ABI_VFP_args: VFP registers attribute I would expect. It does have Tag_MVE_arch: MVE Integer only is that enough? Is the current behavior expected or is there a bug?