This commit is contained in:
aarne
2005-09-20 08:38:12 +00:00
parent b585c6c69b
commit e1a4b26a53

View File

@@ -12,21 +12,28 @@ Changes in functionality since May 17, 2005, release of GF Version 2.2
</center>
<p>
20/9 (AR) Added optimization by <b>common subexpression elimination</b>.
It works on GFC modules and creates $oper$ definitions for
subterms that occur more than once in $lin$ definitions. These
$oper$ definitions are automatically reinlined in functionalities
that don't support $oper$s in GFC. This conversion is done by
module and the $oper$s are not inherited. Moreover, the subterms
can contain free variables which means that the $oper$s are not
It works on GFC modules and creates <tt>oper</tt> definitions for
subterms that occur more than once in <tt>lin</tt> definitions. These
<tt>oper</tt> definitions are automatically reinlined in functionalities
that don't support <tt>oper</tt>s in GFC. This conversion is done by
module and the <tt>oper</tt>s are not inherited. Moreover, the subterms
can contain free variables which means that the <tt>oper</tt>s are not
always well typed. However, since all variables in GFC are type-specific
(and local variables are $lin$-specific), this does not destroy
(and local variables are <tt>lin</tt>-specific), this does not destroy
subject reduction or cause illegal captures.
<br>
The optimization is triggered by the flag <tt>optimize=OPT_subs</tt>,
where <tt>OPT</tt> is any of the other optimizations (see <tt>h -optimize</tt>).
The most aggressive value of the flag is <tt>all_subs</tt>. In experiments,
the size of a GFC module can shrink by 80% compared to plain <tt>all</tt>.
the size of a GFC module can shrink by 85% compared to plain <tt>all</tt>.
<p>
18/9 (AR) Removed superfluous spaces from GFC printing. This shrinks
the GFC size by 5-10%.
<p>