aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog4
-rw-r--r--src/interp/g-opt.boot3
2 files changed, 6 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 38917e91..02df4c38 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,7 @@
+2011-12-02 Gabriel Dos Reis <gdr@cs.tamu.edu>
+
+ * interp/g-opt.boot (modified?): Examine the rhs too.
+
2011-12-01 Gabriel Dos Reis <gdr@cs.tamu.edu>
* interp/g-opt.boot (changeVariableDefinitionToStore): Handle SEQ
diff --git a/src/interp/g-opt.boot b/src/interp/g-opt.boot
index 066e2097..24665e11 100644
--- a/src/interp/g-opt.boot
+++ b/src/interp/g-opt.boot
@@ -521,7 +521,8 @@ findVMFreeVars form ==
++ in `form'.
modified?(var,form) ==
atomic? form => false
- form is [op,var',:.] and op in '(%LET LETT SETQ %store) =>
+ form is [op,var',expr,:.] and op in '(%LET LETT SETQ %store) =>
+ modified?(var,expr) => true
symbol? var' => var' = var -- whole var is assigned
var' is [.,=var] -- only part of it is modified
or/[modified?(var,f) for f in form]