Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: inline
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Злодей
Доброго дня!

Добавил в функцию строчку - сложить два байта и программа выросла на 20Байт! Так же со всеми функциями. Какая опция могла заставить компилятор инлайнить все и вся?
Сергей Борщ
Цитата(Злодей @ Apr 28 2009, 10:21) *
Добавил в функцию строчку - сложить два байта и программа выросла на 20Байт! Так же со всеми функциями. Какая опция могла заставить компилятор инлайнить все и вся?
Опция "инлайнить все и вся". У вашего компилятора такая есть?
Злодей
И правда нет такой laughing.gif. Зато есть __attribute__( (noinline) ). Проверил, этот атрибут снимает проблему с ф-ции, но нельзя же так извращаться wub.gif

Работаю с GCC для AVR.
MrYuran
Цитата(Злодей @ Apr 28 2009, 12:04) *
И правда нет такой laughing.gif. Зато есть __attribute__( (noinline) ).

Есть соответственная опция компилятора, которая запрещает инлайнить.
Только зачем?
Неужто из-за 20 байт?
Я наоборот, борюсь, чтобы как можно больше инлайнилось, особенно в прерываниях
ReAl
Цитата(Злодей @ Apr 28 2009, 11:04) *
И правда нет такой
Зато есть -O3, при котором компилятор порог для встраивания смещает и норовит встроить всё.
Для AVR почти всегда лучше всего -Os
Сергей Борщ
Цитата(Злодей @ Apr 28 2009, 11:04) *
Работаю с GCC для AVR.
Ага, один секрет у партизана выведали smile.gif Осталось узнать версию и параметры, с которым вызывается компилятор. Там есть куча опций для управления оптимизаций, в том числе и встраиванием. На -O3 он старается сделать максимально линейный код, ибо это положительно сказывается на быстродействии для процессоров с конвейерами и кешем. Для AVR оптимальная оптимизация -Os, плюс можно поиграться с опциями -fno-inline-small-functions, -fno-inline-functions, --param inline-call-cost=<тут число от 0 до 9>, -fno-split-wide-types, -fno-tree-scev-cprop
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.