Отговори на тема  [ 5 мнения ] 
GCC MIPS как да изключа една оптимизация... 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Дек 12, 2005 3:30 pm
Мнения: 13
Местоположение: SOFIA
Мнение GCC MIPS как да изключа една оптимизация...
ползвам компилатор GCC za MIPS на codesourcery от последните версии.
При -O1 се включва някаква оптиомизация която рпави следното:
ако някоя константа има малка стойност обръщението към нея се замества с инструкция с непосредствен операнд, при това самата константа си остава записана в паметта там кадато и е мястото.
Знае ли някой как се казва тази оптимизация и как мога да я изключа?


Сря Юни 06, 2012 4:59 pm
Профил ICQ WWW
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Нед Ное 16, 2008 1:16 pm
Мнения: 179
Местоположение: София
Мнение Re: GCC MIPS как да изключа една оптимизация...
Пробвай -fno-forward-propagate -fno-tree-forwprop -fno-tree-copy-prop
изобщо, де що опция, която прави propagation можеш да пробваш да я махнеш.

това е само изстрел в тъмното де - тая оптимизация е супер базова, щом я има още на -O1. Интересно ми е какво точно правиш, че се налагат такива ограничения?

_________________
2 + 2 = 5, при много големи стойности на 2.


Сря Юни 06, 2012 10:31 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: GCC MIPS как да изключа една оптимизация...
-O0 ?


Сря Юни 06, 2012 11:21 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Дек 12, 2005 3:30 pm
Мнения: 13
Местоположение: SOFIA
Мнение Re: GCC MIPS как да изключа една оптимизация...
нищо нестава! :(
какви ли не комбинации не съм пробвал!
накарах компилатора да листне кои оптимизации са включени при О1 и го сложих ръчно всичките!
кода стана по-голям отколкото при О0!?
явно степента на оптиомизация с -Ox не е просто съвкупност от отделни оптиимизации (което си го и пише в документацията).

Има и друг странен ефект който можеби има нещо общо със същата оптомизация. Имам една локална инициализирана структира с доста голям размер (няколко К). Стария компилатор както си му е реда и има копие в кодовата памет и при влизане във функцията я копира с memcpy(). Новия компилатор обаче решава да инициализира всеки елемент по отделнои с код! т.е. слага в регистър стойността и го записва на даден адрес. Даже го прави "оптимално"! т.е. ако има една и съща стойност я записва един пут в регъстъра и после я слага на колкото места трябва. Естественно резултата е няколко десетки пъти нарастване на кода!!!!
Абе, странно нещо е GCC!

Иначе О0 естественно няма проблем.

Аз разбирасе имам решения за моя приоблем. Или ползвам по-стар компилатор, или права констанитте volatile и после добавям сумати каствания че ме засипва с warning-i.

Крайната цел е че при компилация на даден адрес са записани някакви константи които после в бинарния файл подманям с други!


Чет Юни 07, 2012 11:24 am
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юли 31, 2007 2:55 pm
Мнения: 1792
Местоположение: София
Мнение Re: GCC MIPS как да изключа една оптимизация...
CALL-151

Хубав избор.


Пет Юни 08, 2012 12:41 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 5 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 6 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни