[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