Commit:    74f158fb9dd198b1064e8f2064e264ec55d5bec7
Author:    Dmitry Stogov <dmi...@zend.com>         Mon, 1 Apr 2013 11:33:04 
+0400
Parents:   586dc07a8a3ea0a1769dc83189a3d2d9a6b77b4a
Branches:  PHP-5.5 master

Link:       
http://git.php.net/?p=php-src.git;a=commitdiff;h=74f158fb9dd198b1064e8f2064e264ec55d5bec7

Log:
Fixed issue #79 (Optimization Problem/Bug)

Bugs:
https://bugs.php.net/79

Changed paths:
  M  ext/opcache/Optimizer/block_pass.c
  A  ext/opcache/tests/issue0079.phpt


Diff:
diff --git a/ext/opcache/Optimizer/block_pass.c 
b/ext/opcache/Optimizer/block_pass.c
index 7fd986c..61a2b59 100644
--- a/ext/opcache/Optimizer/block_pass.c
+++ b/ext/opcache/Optimizer/block_pass.c
@@ -1312,6 +1312,12 @@ static void zend_jmp_optimization(zend_code_block 
*block, zend_op_array *op_arra
                                        if (ZEND_OP1_TYPE(last_op) == IS_CONST) 
{
                                                
zval_copy_ctor(&ZEND_OP1_LITERAL(last_op));
                                        }
+#else
+                                       if (ZEND_OP1_TYPE(last_op) == IS_CONST) 
{
+                                               zval zv = 
ZEND_OP1_LITERAL(last_op);
+                                               zval_copy_ctor(&zv);
+                                               last_op->op1.constant = 
zend_optimizer_add_literal(op_array, &zv TSRMLS_CC);
+                                       }
 #endif
                                        del_source(block, block->op1_to);
                                        if (block->op1_to->op2_to) {
@@ -1342,6 +1348,12 @@ static void zend_jmp_optimization(zend_code_block 
*block, zend_op_array *op_arra
                                        if (ZEND_OP1_TYPE(last_op) == IS_CONST) 
{
                                                
zval_copy_ctor(&ZEND_OP1_LITERAL(last_op));
                                        }
+#else
+                                       if (ZEND_OP1_TYPE(last_op) == IS_CONST) 
{
+                                               zval zv = 
ZEND_OP1_LITERAL(last_op);
+                                               zval_copy_ctor(&zv);
+                                               last_op->op1.constant = 
zend_optimizer_add_literal(op_array, &zv TSRMLS_CC);
+                                       }
 #endif
                                        del_source(block, block->op1_to);
                                        block->op1_to = NULL;
diff --git a/ext/opcache/tests/issue0079.phpt b/ext/opcache/tests/issue0079.phpt
new file mode 100644
index 0000000..4458fce
--- /dev/null
+++ b/ext/opcache/tests/issue0079.phpt
@@ -0,0 +1,34 @@
+--TEST--
+ISSUE #79 (Optimization Problem/Bug)
+--INI--
+opcache.enable=1
+opcache.enable_cli=1
+opcache.optimization_level=-1
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+class Test {
+    public function run() {
+        $r = $this->my_parse_m();
+        var_dump ($r);
+        return $r;
+    }
+
+    public function my_parse_m() {
+        $test = true;
+        if ($test === true) {
+            $a = 'b';
+        } else {
+            return false;
+        }
+//      flush();
+        return true;
+    }
+}
+
+$t = new Test();
+var_dump ($t->run());
+--EXPECT--
+bool(true)
+bool(true)


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to