]> granicus.if.org Git - php/commitdiff
Eliminated unreachable jumps
authorDmitry Stogov <dmitry@zend.com>
Wed, 10 Apr 2019 08:18:59 +0000 (11:18 +0300)
committerDmitry Stogov <dmitry@zend.com>
Wed, 10 Apr 2019 08:18:59 +0000 (11:18 +0300)
ext/opcache/jit/zend_jit.c
ext/opcache/jit/zend_jit_x86.dasc

index 847b6130e9abf57ef327d21a4c10ed2fa122e764..b0940c9ca9e95c60a746c4d7e835a9a72abe29b6 100644 (file)
@@ -2036,9 +2036,7 @@ static int zend_jit(zend_op_array *op_array, zend_ssa *ssa, const zend_op *rt_op
 #ifndef CONTEXT_THREADED_JIT
                if (ssa->cfg.blocks[b].flags & ZEND_BB_ENTRY) {
                        if (ssa->cfg.blocks[b].flags & ZEND_BB_TARGET) {
-                               if (!is_terminated) {
-                                       zend_jit_jmp(&dasm_state, b);
-                               }
+                               /* pass */
                        } else if (zend_jit_level < ZEND_JIT_LEVEL_INLINE &&
                                   ssa->cfg.blocks[b].len == 1 &&
                                   (ssa->cfg.blocks[b].flags & ZEND_BB_EXIT) &&
@@ -2046,6 +2044,11 @@ static int zend_jit(zend_op_array *op_array, zend_ssa *ssa, const zend_op *rt_op
                                /* don't generate code for BB with single opcode */
                                continue;
                        }
+                       if (ssa->cfg.blocks[b].flags & ZEND_BB_FOLLOW) {
+                               if (!is_terminated) {
+                                       zend_jit_jmp(&dasm_state, b);
+                               }
+                       }
                        zend_jit_label(&dasm_state, ssa->cfg.blocks_count + b);
                        zend_jit_prologue(&dasm_state);
                } else
index a988ea2ca276d3af012438626b0a91c9877371a7..01f88c031c8bec39201d30dd916d318c068379f2 100644 (file)
@@ -7788,10 +7788,7 @@ static int zend_jit_do_fcall(dasm_State **Dst, const zend_op *opline, zend_op_ar
                        return 0;
                }
                if (opline->opcode != ZEND_DO_ICALL) {
-                       uint32_t target_label = ssa->cfg.map[opline - op_array->opcodes] + 1;
-
                        |       LOAD_IP_ADDR (opline + 1)
-                       |       jmp =>target_label
                }
        }