On 3/10/23 09:28, Herman ten Brugge wrote:
The attached program is a reduced version of yarpgen v1 code.

The code works with gcc.
The code has a floating point exception with tcc.

Maybe another nocode_wanted problem?

I tried the attached patch and now yarpgen runs without problems for 30 minutes.

I am not familiair with the code. I just noticed that nocode_wanted was different on
entry and exit.

    Herman
diff --git a/tccgen.c b/tccgen.c
index 7368030..b039b2d 100644
--- a/tccgen.c
+++ b/tccgen.c
@@ -6263,7 +6263,7 @@ static int condition_3way(void)
 
 static void expr_landor(int op)
 {
-    int t = 0, cc = 1, f = 0, i = op == TOK_LAND, c;
+    int t = 0, cc = 1, f = 0, i = op == TOK_LAND, c, prev_ncw = nocode_wanted;
     for(;;) {
         c = f ? i : condition_3way();
         if (c < 0)
@@ -6286,6 +6286,7 @@ static void expr_landor(int op)
         nocode_wanted -= f;
     } else {
         gvtst_set(i, t);
+        nocode_wanted = prev_ncw;
     }
 }
 
_______________________________________________
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to