diff options
-rw-r--r-- | src/ChangeLog | 4 | ||||
-rw-r--r-- | src/interp/g-opt.boot | 3 |
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] |