|
WinAVR-20081205 и тенденции, С каждым релизом WinAVR размер кода растет :( |
|
|
|
Feb 12 2009, 07:19
|

Профессионал
    
Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581

|
Я знаю, что на этом форуме присутствуют люди, которые не только глубоко знают GCC и, в частности, WinAVR, но и участвуют в той или иной мере в совершенствовании этих продуктов. Поэтому в первую очередь мой вопрос к ним. Я понимаю, что мои вопросы почти риторические, но беспокойство от них у меня сильное...
Скачал WinAVR-20081205 (до этого был 20080610), провел тест на проекте для AT90CAN128. Было 18204 байт результрующего кода (WinAVR 20080610), стало 18350 байт. Исходник не менял, естественно, как и все параметры сборки проекта. Ранее при переходе с 20080411 так же было замечено увеличение итогового кода для проекта. То есть я делаю вывод, что от релиза к релизу GCC генерирует все менее и менее компактный код для AVR (про другие платформы не скажу, ибо не пользуюсь). Неоднократно были замечены всякие странные фокусы при сохранении регистров в прологе функций, некоторые "чудеса" оптимизации и "странности" в обработчиках прерываний (заглядываю на AVR Freaks)...
Что это? Целенаправленное стремление снизить качество GCC для AVR, косвенные следствия каких-то неведомых мне улучшений, непредвиденные последствия исправления багов или что-то еще? Казалось бы, добавилась поддержка новых микроконтроллкров - и на тебе: поддержка старых ухудшилась... Чего ждать в будущем? Единственный качественный бесплатный компилятор - неужели он обречен?!
Может быть, есть какие-то рекомендации по борьбе с такими особенностями? скажем, какие-то ключи компилятора или еще что-то, что позволит получить хотя бы прежний код с новым компилятором?
P.S. Пожалуйста, не надо ответов типа "хотите бесплатно - жрите, что дают!"... Ведь смысл бесплатного продукта не в том, чтобы унизить и заставить жрать помои...
--------------------
Я бы взял частями... но мне надо сразу.
|
|
|
|
|
 |
Ответов
|
Feb 12 2009, 10:55
|

Профессионал
    
Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581

|
1. в настоящее время меня интересует качество оптимизации именно по размеру, т.е. -Os. до сего момента никогда -O3 не давало в итоге меньший размер кода, чем -Os. в частности, упомянутый проект выдал 30254 байт при -O3.
2. если бы main() не стояла особняком среди прочих функций Си-программы, я был бы готов с вами согласиться. но это особая функция, потому для нее вполне можно по умолчанию использовать особые режимы генерации кода. тем более для AVR, для которых наличие ОС, вызывающей main(), все же скорее исключение, чем правило.
3. к сожалению, я установил новый WinAVR поверх старого, и пока что не спешу делать откат - возможно, все решится меньшей кровью. потому могу сравнивать только то, о чем уже сказал: есть результат компиляции проекта с опцией -Os без других специальных мер старым WinAVR, и есть новый WinAVR, дающий с теми же опциями проекта худший результат. теперь идет поиск опций, позволяющих добиться прежних результатов с новым компилятором.
пока что наибольший эффект дает применение --relax для линкера и -fcall-prologues для компилятора. однако, я очень сомневаюсь, что эти же опции помогут, например, для atmega8 (--relax уж точно не поможет)... а хочется найти универсальное решение проблемы.
--------------------
Я бы взял частями... но мне надо сразу.
|
|
|
|
Сообщений в этой теме
ARV WinAVR-20081205 и тенденции Feb 12 2009, 07:19 _Pasha Когда я "находил 10 отличий", дело было ... Feb 12 2009, 07:54 ARV Цитата(_Pasha @ Feb 12 2009, 10:54) Когда... Feb 12 2009, 08:25  _Pasha Цитата(ARV @ Feb 12 2009, 12:25) и, кста... Feb 12 2009, 08:57 ARV в конкретно моем случае я перебрал все опции оптим... Feb 12 2009, 09:33 ReAl Вот что интересно - на небольшом проекте с scmRTOS... Feb 12 2009, 09:45 ARV Цитата(ReAl @ Feb 12 2009, 12:45) Похоже,... Feb 12 2009, 09:49  demiurg_spb Кстати, на младших контроллерах очень полезно вклю... Feb 12 2009, 09:52   ARV Цитата(demiurg_spb @ Feb 12 2009, 12:52) ... Feb 12 2009, 10:00    demiurg_spb Цитата(ARV @ Feb 12 2009, 13:00) а в чем ... Feb 12 2009, 10:07 MrYuran Цитата(ReAl @ Feb 12 2009, 12:45) Похоже,... Feb 12 2009, 09:52 MrYuran Цитата(ARV @ Feb 12 2009, 10:19) Было 182... Feb 12 2009, 09:47 ARV Цитата(MrYuran @ Feb 12 2009, 12:47) Итог... Feb 12 2009, 09:54 _Pasha Я добавил последний AVR-libc в 20071221. Держу на... Feb 12 2009, 09:56 ARV на моем проекте -mshort-calls вообще не сработала ... Feb 12 2009, 10:24 _Pasha Цитата(ARV @ Feb 12 2009, 13:24) на моем ... Feb 12 2009, 10:29 demiurg_spb У меня странная проблема на большом проекте 60КБ и... Feb 12 2009, 10:45 alx2 Цитата(ARV @ Feb 12 2009, 12:19) Было 182... Feb 12 2009, 10:32 Сергей Борщ Цитата(alx2 @ Feb 12 2009, 12:32) Поэтому... Feb 12 2009, 15:27  ReAl Цитата(Сергей Борщ @ Feb 12 2009, 17:27) ... Feb 12 2009, 21:34 aesok Цитата(ARV @ Feb 12 2009, 10:19) Скачал W... Feb 12 2009, 11:17 ARV Цитата(aesok @ Feb 12 2009, 14:17) Провер... Feb 12 2009, 11:27  demiurg_spb Цитата(ARV @ Feb 12 2009, 14:27) влияет: ... Feb 12 2009, 11:38   _Pasha Цитата(demiurg_spb @ Feb 12 2009, 14:38) ... Feb 12 2009, 11:45    aesok Цитата(_Pasha @ Feb 12 2009, 14:45) Т.е. ... Feb 12 2009, 11:48    demiurg_spb На этой странице не встречается "fno-split-wi... Feb 12 2009, 11:55  aesok Цитата(ARV @ Feb 12 2009, 14:27) влияет: ... Feb 12 2009, 11:45   ARV Цитата(aesok @ Feb 12 2009, 14:38) да.
В... Feb 12 2009, 11:53    aesok Цитата(ARV @ Feb 12 2009, 14:53) eeprom.h... Feb 12 2009, 11:56 ARV --param -inline-call-cost
=0.........17902
=1,2,3... Feb 12 2009, 12:17 aesok Цитата(ARV @ Feb 12 2009, 15:17) при этом... Feb 12 2009, 12:45 _Pasha -fsplit-wide-types - совершенно очевидно, что в ка... Feb 12 2009, 12:25 ARV Цитата(_Pasha @ Feb 12 2009, 15:25) 2ARV:... Feb 12 2009, 12:41 Rst7 Кстати, для тех, кто пользуется максимальной оптим... Feb 12 2009, 13:39 ARV а вот еще вопрос (не совсем в тему, но касающийся ... Feb 13 2009, 07:38 MrYuran Цитата(ARV @ Feb 13 2009, 10:38) каким об... Feb 13 2009, 07:42 aesok Цитата(ARV @ Feb 13 2009, 10:38) а вот ещ... Feb 13 2009, 08:17 ARV увы, такой сложный и, опять-же, индивидуально зата... Feb 13 2009, 08:27 aesok Цитата(ARV @ Feb 13 2009, 11:27) увы, так... Feb 13 2009, 08:31  ARV Цитата(aesok @ Feb 13 2009, 11:31) Пока т... Feb 13 2009, 08:38
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|