реклама на сайте
подробности

 
 
> Проблема с inline в EWAVR, Оптимизация Function inlining режет код
Makki
сообщение Sep 24 2013, 17:45
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 8-10-07
Пользователь №: 31 163



Такая ситуация: имеем несколько вложенных друг в друга функций: main( level1 (level2 ())), полная оптимизация по скорости.
При компиляции код функций уровня вложенности больше 2 просто исчезает (в дизассемблере смотрел), хоть просто возвращай переменную, хоть что угодно.
Выполняется main( level1 ()) без вызова level2 ()
Убил часа 4 на поиск причины. Пока не добрался до function inlining.
Отключил function inlining, все остальное так и оставил - помогло.

Кто-нибудь знает, что это такое было???

И таки да, у меня Kickstart на 4 кб.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Sep 24 2013, 21:27
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Возможно, компилятор видит, что результат этой функции ни на что не влияет, и значит выполнять лишний код не имеет смысла. Насчет вложенных друг в друга функций не понял.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 9th August 2025 - 03:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.08349 секунд с 7
ELECTRONIX ©2004-2016