[OSy] Kompilovanie testov

Ondrej Palkovsky ondrap at penguin.cz
Fri Nov 5 10:41:26 CET 2004


Taky mi prijde optimalizace -O2 pomerne drasticka. Vcera jsem hledal bug,
a s nejvyssi pravdepodobnosti se mi nasledujici kod:
timer_start(&tmr);
current->state = TS_SLEEP;
while (!expired) {
	schedule();
	current->state = TS_SLEEP;
}
current->state = TS_RUN;

prelozil na:
timer_start(&tmr);
while (!expired) {
	current->state = TS_SLEEP;
	schedule();
}
current->state = TS_RUN;

Jeste jsem si to v asm neoveroval, ale mam 90% podezreni, ze to tak je.
Reseni je deklarovat current->state jako 'volatile', pripadne zmenit
poradi volani funkci. Samozrejme pri pouziti -O3 optimalizace vse
fungovalo OK (a pri vlozeni par instrukci kamkoliv take, naprosto
nedebugovatelna chyba). A test condvar1 pri -O3 dobehne 2x rychleji nez
pri -O2, coz uz nechapu vubec :-/

Ondrej Palkovsky

On Fri, 5 Nov 2004, Jozef Misutka wrote:

> pre skupiny, ktore by mohli mat podobny problem som zisitil, ze problem bol
> v Makefile, kde testy pouzivaju optimalizaciu -02, ktoru  ja  nepouzivam.
> Printf mame portnuty z linuxu + trosku zmeneny.  Velmi som asseblerovsky
> vypis neskumal, ale som si vsimol, ze ten znak sa tam niekde naloaduje, ale
> pravdepodobne sa "nestihne" vypisat..



More information about the NSWI004 mailing list