Optimalizace (was: Re: porty II)

Dan Lukes dan at obluda.cz
Mon Jan 13 13:40:51 CET 2003


Pav Lucistnik wrote:
>>>- mate moznost zapnout si vyssi optimalizace (-O2 v make.conf)
>>Co presne udela tento parametr?
> 
> Optimalizace v gcc. Standardne se pouziva -O. Da se optimalizovat i vic
> (-O2 a -O3), ale to uz v nekterych pripadech produkuje rozbite binarky
> (aspon se to tvrdi, ja zatim nemel problem).

	Zato ja to videl. Kdyz jednoho dne zjistite, ze program nejde prelozit 
pro syntakticke chyby a zjistite, ze je to proto, ze je vadny conf.h 
generovany v ramci autokonfigurace pred prekladem - a zjistite, ze to je 
proto, ze to je kvuli tomu, ze v AWK
printf("%f %f", 10.0, 11.0)
vytiskne "A 11"
ale
printf("%f %f", 11.0, 10.0)
vytiskne "p 10"
...

No, nebudu to napinat - nakonec byla chyba ve floatove casti libc 
knihovny, ktera byla napsana spatne z hlediska mozne optimalizace - a 
diky tomu se chyba projevovala v kde-cem (a jelikoz ja mezitim 
nekolikrat prelozil "world" byly v celem systemu zavlecene chyby z 
poskozenych lec nahodou syntakticky spravnych zdrojaku).

	Hledal jsem to tyden v disasseblovanem programu (debugovat pomoci gdb 
nestaci, protoze to problem zamaskuje) ...

	Jo a libc v currentu je pri prelozeni s -O3 take nepouzitelna - chybeji 
v ni nektere potrebne symboly.

	Opravdu - radeji s optimalizacemi opatrne, nebo alespon - mate-li 
jakykoliv problem s "podivnym" chovanim programu - zacnete tim, ze 
program sam a vsechny souvisejici knihovny prelozite bez optimalizace 
(to, ze je bez optimalizace prelozen kernel povazuji za zcela samozrejme).

	Podotykam, ze v obou zminenych pripadech nejde o chybu gcc, ale 
zdrojaku - chyby pri optimalizaci dela gcc take, ale to uz je zase jiny 
pribeh ...


	S obtimalizaci jsou opravdu realne problemy, navic se obvykle velice 
obtizne lokalizuji a identifikuji ...

						Dan


-- 
Dan Lukes      tel: +420 2 21914205, fax: +420 2 21914206
root  of FIONet,  KolejNET,  webmaster  of www.freebsd.cz
AKA: dan at obluda.cz, dan at freebsd.cz, dan at kolej.mff.cuni.cz




More information about the Users-l mailing list