From e04aa35847baaf64517ad82b9fac7885f702ccd8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Fri, 12 Nov 1999 19:51:04 +0100
Subject: [PATCH] Now uses ADD_NOED_REF2().

Rev: bin/mktreeopt.pike:1.22
---
 bin/mktreeopt.pike | 31 ++++++++++++++++++++-----------
 1 file changed, 20 insertions(+), 11 deletions(-)

diff --git a/bin/mktreeopt.pike b/bin/mktreeopt.pike
index dc1d8f5840..2c120d8524 100644
--- a/bin/mktreeopt.pike
+++ b/bin/mktreeopt.pike
@@ -1,5 +1,5 @@
 /*
- * $Id: mktreeopt.pike,v 1.21 1999/11/12 14:32:53 grubba Exp $
+ * $Id: mktreeopt.pike,v 1.22 1999/11/12 18:51:04 grubba Exp $
  *
  * Generates tree-transformation code from a specification.
  *
@@ -125,7 +125,7 @@ constant header =
 "/* Tree transformation code.\n"
 " *\n"
 " * This file was generated from %O by\n"
-" * $Id: mktreeopt.pike,v 1.21 1999/11/12 14:32:53 grubba Exp $\n"
+" * $Id: mktreeopt.pike,v 1.22 1999/11/12 18:51:04 grubba Exp $\n"
 " *\n"
 " * Do NOT edit!\n"
 " */\n"
@@ -523,13 +523,18 @@ string fix_action(string s)
 
     new_node = b * "";
 
-    string clean_up = "\n";
+    string pre_cleanup = "\n";
+    string post_cleanup = "\n";
 
     if (sizeof(used_nodes)) {
-      clean_up = "\nADD_NODE_REF(" +
-	(indices(used_nodes) * ");\nADD_NODE_REF(") + ");\n";
+      pre_cleanup = "\n  ADD_NODE_REF2(" +
+	(indices(used_nodes) * ",\n  ADD_NODE_REF2(") + ",\n  ";
+      post_cleanup = "\n  " + (")" * sizeof(used_nodes)) + ";\n";
     }
-    a[i] = "tmp1" + new_node + clean_up + "goto use_tmp1;" + rest;
+    a[i] = pre_cleanup +
+      "  tmp1" + new_node +
+      post_cleanup +
+      "  goto use_tmp1;" + rest;
   }
   s = a * "";
 
@@ -696,19 +701,23 @@ void parse_data()
 	action = "goto use_cdr;";
 	break;
       default:
-	string fix_refs = "";
+	string pre_fix_refs = "";
+	string post_fix_refs = "";
 	if (sizeof(t)) {
-	  fix_refs = "  ADD_NODE_REF(" +
-	    t * ");\n  ADD_NODE_REF(" +
-	    ");\n";
+	  pre_fix_refs = "  ADD_NODE_REF2(" +
+	    t * ",\n  ADD_NODE_REF2(" +
+	    ",\n  ";
+	  post_fix_refs = "  " + (")" * sizeof(t)) + ";\n";
 	}
 	action = sprintf("{\n"
+			 "%s"
 			 "  tmp1 = %s;\n"
 			 "%s"
 			 "  goto use_tmp1;\n"
 			 "}",
+			 pre_fix_refs,
 			 expr,
-			 fix_refs);
+			 post_fix_refs);
 	break;
       }
     } else {
-- 
GitLab