Вы можете начать с экспериментирования с: звоном -mllvm -inline порога = п
Чем больше параметр п, тем более агрессивным встраивание будет. По умолчанию 225, поэтому установите его в нечто большее. Ожидайте большой размер кода и длительное время компиляции с очень агрессивной вставкой. Когда вы нажмете на точку уменьшения прибыли, вы можете попробовать профилировать код и посмотреть для часто вызываемых, но неинсталлированных функций и попытаться маркировать их атрибут ((always_inline)) для еще большей инкрустации.
Если у вас есть функции с пометкой «встроенный», вы также можете поэкспериментировать с -inlinehint-threshold больше, чем -inline-threshold, и посмотреть, изменяет ли этот код .
Также вы компилируете с оптимизацией времени соединения? Без них встраивание ограничено отдельными единицами компиляции.
** взяты из groups.google.com forum
не использовать 'static inline'? я предполагаю, что таким образом вы получите сообщение об ошибке в clang (поскольку его поведение по умолчанию - c99) –
Это может привести к сбою связи, если ему не удалось встроить (и функция не была объявлена как статическая). Но это намерение, как я писал в вопросе: «Я не возражаю, что компиляция завершится неудачно, если она не сможет встроить функцию». – DavidS
хорошо, я вижу твою идею; вы точно ответили на свой вопрос. Однако вам нужно немного странно :-) –