Уважаемые, подскажите - как сказать IAR-у чтобы он не inline-ил функцию?
А то что-то на вскидку не нашёл в доке на компилятор....
Можно конечно поставить __root, но сиё не очень правильно, ибо будет включать код функции даже когда она не используется, а этого не хотелось-бы.
Чтобы не было лишних вопросов, поясню "зачем":
Имеется некая функция в которой в начале кратковременно нужно использовать большой объём стека (под временный большой массив).
Далее этот массив не используется никак. И после этого из этой функции вызывается много других с глубоким уровнем вложенности (большим расходом стека на вызовы).
А если описать этот массив как простой локальный, то выделенный под него объём стека далее висит мёртвым грузом.
IAR это дело почему-то не оптимизирует, хотя мог-бы сделать ADD SP, #... Хотя включена максимальная оптимизация.
Выхожу из этого выделяя область функции, где идёт использование временного массива, в отдельную функцию. Но если не применять __root, то, при
максимальной оптимизации, компилятор инлайнит её и включает её фрейм стека во фрейм стека вызывающей функции и получаем исходное положение
с потерянным неиспользуемым объёмом стека.
Или может кто знает лучшее решение такой проблемы чем inline-функция?