What if compiler writers will not fix the problem?
Write own register allocator: http://cr.yp.to/qhasm.html
Bonus: allow use of a "portable assembly language" to generate assembly, being respectful of the fact that users might not all be using computers with the same CPU architecture.
This could be like assembler with C-like operators and structure.
In addtion to facilitating portability it might also make writing in assembler a little easier.
Reminds me of Bell Labs' LIL: http://www.ultimate.com/phil/lil/tut.html
Is x86-64 completely different?