[remove untagging optimizations that don't help much any more and were problemantic, fix constant global initializer of static data, add a couple cases to NodeAnalyze
John Meacham <john@repetae.net>**20070510050643] hunk ./C/FromGrin2.hs 221
+convertBody (Return v :>>= (NodeV t []) :-> e') = do
+    v' <- convertVal v
+    t' <- convertVal (Var t TyTag)
+    return $ t' =* getWhat v'
hunk ./C/FromGrin2.hs 237
+            declareStruct t
hunk ./C/FromGrin2.hs 277
+            declareStruct t
hunk ./C/FromGrin2.hs 398
-     text "#define " <> tshow (varName v) <+>  text "(EVALTAG(&_" <> tshow (varName v) <> text "))\n";
+     text "#define " <> tshow (varName v) <+>  text "(EVALTAGC(&_" <> tshow (varName v) <> text "))\n";
hunk ./Grin/NodeAnalyze.hs 235
+        f Alloc { expValue = v } | getType v == TyPtr TyNode = do
+            convertVal v
+            dunno (TyPtr $ TyPtr TyNode)
+--            dres [v']
hunk ./Grin/NodeAnalyze.hs 247
+        f (Update v1 v)  = do
+            v' <- convertVal v
+            v' <- convertVal v1
+            dres []
hunk ./Grin/Simplify.hs 245
-    f lf (Return (NodeV t [])) | postEval = return [UnboxTag]
-    f lf (Return (NodeC t [])) | postEval = return [UnboxTag]
+--    f lf (Return (NodeV t [])) | postEval = return [UnboxTag]
+--    f lf (Return (NodeC t [])) | postEval = return [UnboxTag]
hunk ./Grin/Simplify.hs 411
-  -}
hunk ./Grin/Simplify.hs 418
+  -}
hunk ./Grin/Simplify.hs 441
+{-
hunk ./Grin/Simplify.hs 447
+        -}
hunk ./data/jhc_rts2.c 2
-#define ISLAZY(x)   (((uintptr_t)(x)) & 0x1)
-#define DETAG(x)    ((uintptr_t)(x) & ~0x1)
-#define GETTAG(x)   ((uintptr_t)(x) & 0x3)
+#define ISLAZY(x)    (((uintptr_t)(x)) & 0x1)
+#define DETAG(x)     ((uintptr_t)(x) & ~0x1)
+#define GETTAG(x)    ((uintptr_t)(x) & 0x3)
hunk ./data/jhc_rts2.c 6
-#define GETHEAD(x)  (NODEP(x)->head)
-#define GETWHAT(x)  (DNODEP(x)->what)
-#define NODEP(x)    ((node_t *)(x))
-#define DNODEP(x)   ((dnode_t *)(x))
-#define EVALTAG(fn) (assert(((uintptr_t)(fn) & 0x3) == 0),(sptr_t)((uintptr_t)(fn) | P_LAZY))
-#define VALUE(n)    ((wptr_t)(((uintptr_t)(n) << 2) | P_VALUE))
-#define ISVALUE(n)  (assert(!ISLAZY(n)), ((uintptr_t)(n) & 0x2))
+#define GETHEAD(x)   (NODEP(x)->head)
+#define GETWHAT(x)   (DNODEP(x)->what)
+#define NODEP(x)     ((node_t *)(x))
+#define DNODEP(x)    ((dnode_t *)(x))
+#define EVALTAG(fn)  (assert(((uintptr_t)(fn) & 0x3) == 0),(sptr_t)((uintptr_t)(fn) | P_LAZY))
+#define EVALTAGC(fn) ((sptr_t)((void *)(fn) + P_LAZY))
+#define VALUE(n)     ((wptr_t)(((uintptr_t)(n) << 2) | P_VALUE))
+#define ISVALUE(n)   (assert(!ISLAZY(n)), ((uintptr_t)(n) & 0x2))