Resend to gcc@gcc.gnu.org to avoid spam filter > From: Michael Matz > > Sent: 07 October 2018 16:53 > ... > > I think the examples I saw from Boris were all indirect inlines: > > > > static inline void foo() { asm("large-looking-but-small-asm"); } > > static void bar1() { ... foo() ... } > > static void bar2() { ... foo() ... } > > void goo (void) { bar1(); } // bar1 should have been inlined > > > > So, while the immediate asm user was marked as always inline that in turn > > caused users of it to become non-inlined. I'm assuming the kernel guys > > did proper measurements that they _really_ get some non-trivial speed > > benefit by inlining bar1/bar2, but for some reasons (I didn't inquire) > > didn't want to mark them all as inline as well. > > Could you add a 'size' attribute to the 'always inlined' foo() above > rather than trying to add one to the asm() statement itself. > Then add a warning in the documentation that small size attributes > might make the assembly fail due to limited branch offsets (etc). > > Size '1' probably ought to be reserved for things that definitely > fit in a delay slot. > > David
- Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)