aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog5
-rw-r--r--src/interp/g-opt.boot2
2 files changed, 6 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 18878936..90e2b934 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2011-02-26 Gabriel Dos Reis <gdr@cs.tamu.edu>
+
+ * interp/g-opt.boot (canInlineVarDefinition): Observe order of
+ evaluation.
+
2011-02-25 Gabriel Dos Reis <gdr@cs.tamu.edu>
* interp/g-opt.boot (optNot): Push %not inside conditionals.
diff --git a/src/interp/g-opt.boot b/src/interp/g-opt.boot
index b119ce5f..e6e8b934 100644
--- a/src/interp/g-opt.boot
+++ b/src/interp/g-opt.boot
@@ -540,7 +540,7 @@ canInlineVarDefinition(var,expr,body) ==
-- side-effected latter, it is alos a no no.
or/[varIsAssigned(x,body) for x in dependentVars expr] => false
-- Conversatively preserve order of inialization
- body is ['%bind,:.] => false
+ cons? body and body.op in '(%bind LET %loop %collect) => false
-- Linearly used internal temporaries should be replaced, and
-- so should side-effet free initializers for linear variables.
usageCount := numOfOccurencesOf(var,body)