shithub: MicroHs

Download patch

ref: 03ffe328c2e2317f8a99c1644bd2ec2811bb8ce5
parent: d3bb1145958630c959a7e654dab02ff99d0bff5f
author: Lennart Augustsson <lennart.augustsson@epicgames.com>
date: Wed Nov 29 09:03:18 EST 2023

More comments.

--- a/src/runtime/eval.c
+++ b/src/runtime/eval.c
@@ -711,7 +711,7 @@
     }
   }
 #endif
-  for (int j = 0; j < sizeof primops / sizeof primops[0]; j++) {
+  for (unsigned int j = 0; j < sizeof primops / sizeof primops[0]; j++) {
     flip_ops[primops[j].tag] = primops[j].flipped;
   }
 
@@ -821,6 +821,9 @@
     goto top;
   }
 #if 0
+  /* This is broken (I don't understand why),
+   * but it also doesn't seem to work as well as intended.  Maybe IND nodes?
+   */
   if (GETTAG(n) == T_AP && GETTAG(FUN(n)) == T_C) {
     NODEPTR q = ARG(n);
     enum node_tag tt, tf;
@@ -828,7 +831,7 @@
       q = INDIR(q);
     if ((tf = flip_ops[tt])) {
       /* Do the C op --> flip_op reduction */
-      //printf("%s -> %s\n", tag_names[tt], tag_names[tf]);
+      // printf("%s -> %s\n", tag_names[tt], tag_names[tf]);
       SETTAG(n, T_IND);
       INDIR(n) = HEAPREF(tf);
       red_flip++;
--