This is an automated email from the git hooks/post-receive script.

wingo pushed a commit to branch main
in repository guile.

The following commit(s) were added to refs/heads/main by this push:
     new 79e836b8c Fix branch fusing
79e836b8c is described below

commit 79e836b8cc601a1259c934000a953a8d739ddd6f
Author: Andy Wingo <wi...@pobox.com>
AuthorDate: Mon Oct 2 14:13:07 2023 +0200

    Fix branch fusing
    
    * libguile/jit.c (analyze): Skip over drop and pop, if present, during
    the analysis phase in addition to the compile phase.
---
 libguile/jit.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/libguile/jit.c b/libguile/jit.c
index b0aa9df4c..d582893d7 100644
--- a/libguile/jit.c
+++ b/libguile/jit.c
@@ -5957,6 +5957,19 @@ analyze (scm_jit_state *j)
         case scm_op_imm_u64_less:
         case scm_op_s64_imm_less:
         case scm_op_imm_s64_less:
+          {
+            uint8_t next = j->next_ip[0] & 0xff;
+            if (next == scm_op_drop)
+              {
+                j->next_ip += op_lengths[next];
+                next = j->next_ip[0] & 0xff;
+              }
+            if (next == scm_op_pop)
+              {
+                j->next_ip += op_lengths[next];
+                next = j->next_ip[0] & 0xff;
+              }
+          }
           attrs |= OP_ATTR_BLOCK;
           fuse_conditional_branch (j, &target);
           j->op_attrs[target - j->start] |= attrs;

Reply via email to