about summary refs log tree commit diff stats
path: root/043space.cc
diff options
context:
space:
mode:
Diffstat (limited to '043space.cc')
-rw-r--r--043space.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/043space.cc b/043space.cc
index 5b3c6084..33c4bb09 100644
--- a/043space.cc
+++ b/043space.cc
@@ -258,6 +258,15 @@ void try_reclaim_locals() {
           /*refcount*/1 + /*array length*/1 + /*number-of-locals*/Name[r][""]);
 }
 
+//: Reclaiming local variables above requires remembering what name an
+//: instruction had before any rewrites or transforms.
+:(before "End instruction Fields")
+string old_name;
+:(before "End instruction Clear")
+old_name.clear();
+:(before "End next_instruction(curr)")
+curr->old_name = curr->name;  // before rewrite rules modify it
+
 :(code)
 // is this reagent one of the values returned by the current (return) instruction?
 // is the corresponding ingredient saved in the caller?