I'm going to reject this. I think the code in the test is OK and the problem is in the compiler rejecting it for certain architecture settings. I've commented on the PR. Note that clang does seem to allow this register allocation for the same settings.
-- https://forge.sourceware.org/gcc/gcc/pulls/217#issuecomment-7379
