opennet.ru
Дело оказалось в том, что GCC принимает решение об использовании inline-развёртывания функций в зависимости от результатов косвенной оценки размера результирующего кода (даже если функция определена с ключевым словом "inline"). Компилятор не учитывает фактический размер результирующего кода, а пытается прогнозировать его. Для ассемблерных вставок прогнозирование делается на основе числа переводов строк ("\n") и разделителей (";") в исходном тексте.
Помнится, давеча смеялись над JS, оптимизатор которого делал нечто подобное, и минификация ускоряла/замедляла выполнение кода.

Неделю не упарываю кофцо. Уже перестал целый день спать без кофе, пропали перепады настроения, люди вокруг бесят на много меньше, меньше устаю. Годная тема, рекомендую.