Thanks for the comments. I think you are right about _asm_ inline instructions should be smaller than a function call. It turns out that none of these changes resulted in a ROM size decrease with my tools. My guess is the GCC inlined them anyway.
You can try -finline-limit=5 or similar, or for finer control --param max-inline-insns-auto=3 etc.
The standard GCC tuning seems not to always be very good for C code at -Os, please file a bug report if you have some hard numbers on a non-trivial piece of code (like this :-) ).
Segher