The default escaping variables analysis is very conservative and makes all variables escaping by annotating their declaration with =Stack(x)=. In order for your compiler to produce good code is necessary to put as many variables as possible into registers. Extend module =Tiger-VarEscape.r= in directory =tas2ir/= in the TigerTrans package to detect only really escaping variables. Sketch of the algorithm * In principle every variable is non-escaping, i.e., its name =x= in its declaration should be transformed into =Reg(x)=. * If a variable is used inside a function that is different than the function it is declared in, the variable is escaping and its name =x= in its _declaration_ should be transformed into =Stack(x)=. The analysis can be very nicely expressed in a single traversal over the program tree using dynamic rules. -- Main.EelcoVisser - 16 Nov 2001