| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| GCC MIPS как да изключа една оптимизация... http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=10198 |
Страница 1 от 1 |
| Автор: | CALL-151 [ Сря Юни 06, 2012 4:59 pm ] |
| Заглавие: | GCC MIPS как да изключа една оптимизация... |
ползвам компилатор GCC za MIPS на codesourcery от последните версии. При -O1 се включва някаква оптиомизация която рпави следното: ако някоя константа има малка стойност обръщението към нея се замества с инструкция с непосредствен операнд, при това самата константа си остава записана в паметта там кадато и е мястото. Знае ли някой как се казва тази оптимизация и как мога да я изключа? |
|
| Автор: | anrieff [ Сря Юни 06, 2012 10:31 pm ] |
| Заглавие: | Re: GCC MIPS как да изключа една оптимизация... |
Пробвай -fno-forward-propagate -fno-tree-forwprop -fno-tree-copy-prop изобщо, де що опция, която прави propagation можеш да пробваш да я махнеш. това е само изстрел в тъмното де - тая оптимизация е супер базова, щом я има още на -O1. Интересно ми е какво точно правиш, че се налагат такива ограничения? |
|
| Автор: | miro_atc [ Сря Юни 06, 2012 11:21 pm ] |
| Заглавие: | Re: GCC MIPS как да изключа една оптимизация... |
-O0 ? |
|
| Автор: | CALL-151 [ Чет Юни 07, 2012 11:24 am ] |
| Заглавие: | Re: GCC MIPS как да изключа една оптимизация... |
нищо нестава! какви ли не комбинации не съм пробвал! накарах компилатора да листне кои оптимизации са включени при О1 и го сложих ръчно всичките! кода стана по-голям отколкото при О0!? явно степента на оптиомизация с -Ox не е просто съвкупност от отделни оптиимизации (което си го и пише в документацията). Има и друг странен ефект който можеби има нещо общо със същата оптомизация. Имам една локална инициализирана структира с доста голям размер (няколко К). Стария компилатор както си му е реда и има копие в кодовата памет и при влизане във функцията я копира с memcpy(). Новия компилатор обаче решава да инициализира всеки елемент по отделнои с код! т.е. слага в регистър стойността и го записва на даден адрес. Даже го прави "оптимално"! т.е. ако има една и съща стойност я записва един пут в регъстъра и после я слага на колкото места трябва. Естественно резултата е няколко десетки пъти нарастване на кода!!!! Абе, странно нещо е GCC! Иначе О0 естественно няма проблем. Аз разбирасе имам решения за моя приоблем. Или ползвам по-стар компилатор, или права констанитте volatile и после добавям сумати каствания че ме засипва с warning-i. Крайната цел е че при компилация на даден адрес са записани някакви константи които после в бинарния файл подманям с други! |
|
| Автор: | woody [ Пет Юни 08, 2012 12:41 am ] |
| Заглавие: | Re: GCC MIPS как да изключа една оптимизация... |
CALL-151 Хубав избор. |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|