http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57586
--- Comment #9 from Alan Modra <amodra at gmail dot com> --- Once upon a time I understood this code quite well, but it's been a while since I looked at it in detail, and I'd forgotten that inout gets split to separate input and output operands if a register is allowed. So the code isn't wrong, but there was no need to do anything special for inout. I'll commit a cleanup as obvious.