[OSy] zahada: Volani funkce promenneho poctu parametru pred navratem z jine funkci

David Matousek david at matousec.com
Tue Oct 30 09:29:10 CET 2007


Zdravim a moc dekuju.

-fno-optimize-sibling-calls funguje krasne. Kdyz se nebudete zlobit,
tak prozkoumani tohoto bugu odlozim na nejaky volny cas a prozatim
se spokojim s vypnutim teto optimalizace.

DM




Martin Decky wrote:
> Hezky vecer,
> 
> nedovedu Vam presne rici, co je spatne, protoze bych musel mit
> k dispozici cele Vase reseni (prosim, neposilejte mi to :)), jen nekolik
> postrehu:
> 
> Pokud se pouzivaji funkce s promennym poctem parametru, je potreba
> argumenty z registru mit take na zasobniku (protoze se k nim pote
> pristupuje pres va_list). To je zrejme smysl tech instrukci
> 
> sw a2, 0x28(sp)
> sw a3, 0x2c(sp)
> 
> Proc se pro ulozeni argumentu na zasobniku nevyhradi dostatecne misto,
> mi ovsem z toho, co posilate, jasne neni. Pravdepodobne to bude nejaky
> konflikt pouziti funkce s promennym poctem parametru a tail recursion
> optimalizace. V pripade -O0 se to neprojevi proto, ze se vsechny
> argumenty predavaji na zasobniku a tail recursion je vypnuta. Pripadne
> muze byt problem v tom, ze ruzne casti kodu predpokladaji ruzne ABI
> (neznam dalsi parametry prekladace, ktere pouzivate).
> 
> Zkuste porovnat, co prekladac pri -O2 vytvori, pokud tail recursion
> zakazete (-fno-optimize-sibling-calls), resp. obracene povolite pro -O0.
> Taky by bylo zajimave videt, proc v tom pripade, kdy se nejedna o tail
> recursion, se na zasobniku nic neprepise (jak uvadite).
> 
> Zkuste si vyrobit co nejmensi test case, na kterem to budete moci snadno
> sledovat. Pochopitelne nelze z principu vyloucit ani chybu v prekladaci
> (muzete to vyzkouset v labu na starsi verzi), ale jako u vsech dalsich
> chyb musi byt naprosto jasne, ze proste jen nedelate nekde neco, co
> nemate ..
> 
> 
> M.D.
> 
> _______________________________________________
> OSy mailing list
> OSy at dsrg.mff.cuni.cz
> https://dsrg.mff.cuni.cz/mailman/listinfo/osy




More information about the NSWI004 mailing list