GCC 10 using floating-point registers to pass some 64-bit arguments on ARM Cortex-M

Richard Sandiford richard.sandiford@arm.com
Tue May 19 10:58:15 GMT 2020

Freddie Chopin <freddie_chopin@op.pl> writes:
> Hello!
> I have some functions which accept a `std::chrono::duration` or
> `std::chrono::time_point` arguments, both based on an 64-bit integers
> `long long`. I'm compiling my code for ARM Cortex-M4 microcontroler,
> which has "fpv4-sp-d16" FPU. On all GCCs up to (and including) GCC 9
> such arguments were passed in core registers or via stack. In GCC 10
> sometimes they are passed via d7 VFP register, sometimes via stack,
> possibly sometimes via core registers (did not check that yet [; ).

Do you have a cut-down reproducer that shows when this is happening?


More information about the Gcc-help mailing list