5.2.7 Constant Expression Evaluation
Expressions produced by compilers involving only constant arguments can be evaluated once. It is particular relevant in functions that are repeatably called. One time queries would not benefit from this extra step.
Consider the following snippet, which contains recursive use of constant arguments
a:= 1+1; io.print(a); b:= 2; io.print(b); c:= 3*b; io.print(c); d:= calc.flt(c);io.print(d); e:= mmath.sin(d);io.print(e); optimizer.aliasRemoval(); optimizer.evaluate();
The code produced by the optimizer would be
io.print(2); io.print(2); io.print(6); io.print(6); io.print(-0.279415488);
Likewise we attempt to catch barrier blocks based on constants.