From 33bab281e27cf866e77fb3bba6e37f5a5edfef03 Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Sun, 23 Aug 2026 22:08:16 +0200 Subject: Revert "optimize main state machine transitions with tail calls" For yet unknown reasons this does not improve performance on GCC 16 even though it also supports `__attribute__((musttail))`. As long as I do not understand why, I don't want to risk any unnecessary problems. I have reason to believe that the tail-call optimized version still has subtle bugs. See also the "tail-calls" branch. This reverts commit 2e097cec409182c3cb39b74489387480bf8a278f. --- src/qreg-commands.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'src/qreg-commands.c') diff --git a/src/qreg-commands.c b/src/qreg-commands.c index d7b0a10..a6390a1 100644 --- a/src/qreg-commands.c +++ b/src/qreg-commands.c @@ -62,7 +62,7 @@ teco_state_expectqreg_input(teco_machine_main_t *ctx, gunichar chr, GError **err case TECO_MACHINE_QREGSPEC_ERROR: return NULL; case TECO_MACHINE_QREGSPEC_MORE: - TECO_RETURN(ctx, current, error); + return current; case TECO_MACHINE_QREGSPEC_DONE: break; } @@ -72,8 +72,7 @@ teco_state_expectqreg_input(teco_machine_main_t *ctx, gunichar chr, GError **err * states. This means, it must usually be reset manually in got_register_cb() via: * teco_state_expectqreg_reset(ctx); */ - teco_state_t *next = current->expectqreg.got_register_cb(ctx, qreg, table, error); - TECO_RETURN(ctx, next, error); + return current->expectqreg.got_register_cb(ctx, qreg, table, error); } static teco_state_t * -- cgit v1.2.3