OSDN Git Service

tcg: Adjust TCGContext.temps_in_use check
authorRichard Henderson <richard.henderson@linaro.org>
Sat, 28 Jan 2023 23:05:14 +0000 (13:05 -1000)
committerRichard Henderson <richard.henderson@linaro.org>
Wed, 1 Mar 2023 17:33:27 +0000 (07:33 -1000)
Change the temps_in_use check to use assert not fprintf.
Move the assert for double-free before the check for count,
since that is the more immediate problem.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
tcg/tcg.c

index 9822c65..855e4cc 100644 (file)
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -1374,16 +1374,14 @@ void tcg_temp_free_internal(TCGTemp *ts)
         g_assert_not_reached();
     }
 
+    tcg_debug_assert(ts->temp_allocated != 0);
+    ts->temp_allocated = 0;
+
 #if defined(CONFIG_DEBUG_TCG)
+    assert(s->temps_in_use > 0);
     s->temps_in_use--;
-    if (s->temps_in_use < 0) {
-        fprintf(stderr, "More temporaries freed than allocated!\n");
-    }
 #endif
 
-    tcg_debug_assert(ts->temp_allocated != 0);
-    ts->temp_allocated = 0;
-
     idx = temp_idx(ts);
     k = ts->base_type + (ts->kind == TEMP_NORMAL ? 0 : TCG_TYPE_COUNT);
     set_bit(idx, s->free_temps[k].l);