https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77308
Wilco <wdijkstr at arm dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |wdijkstr at arm dot com --- Comment #10 from Wilco <wdijkstr at arm dot com> --- The register allocator doesn't correctly track liferanges for SETs with a subreg and this can cause terrible spilling indeed. Also why aren't DI mode values split into native SI registers on 32-bit targets? Using DI mode registers means the register allocator has a much harder problem to solve as it can only use even/odd register pairs (and must allocate both registers even if one is dead).