GCC 10 using floating-point registers to pass some 64-bit arguments on ARM Cortex-M
Tue May 19 10:58:15 GMT 2020
Freddie Chopin <email@example.com> writes:
> 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