]> granicus.if.org Git - php/commitdiff
for some reason gcc -O2 compiled the previous code in unexpected way
authorDmitry Stogov <dmitry@zend.com>
Fri, 11 Apr 2014 14:16:03 +0000 (18:16 +0400)
committerDmitry Stogov <dmitry@zend.com>
Fri, 11 Apr 2014 14:16:03 +0000 (18:16 +0400)
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index c90a4b4fe62ac083599c21cfb34bfda94616f988..dbb89e6e63a030619376bcba83d27c4655f4c14d 100644 (file)
@@ -4212,7 +4212,7 @@ ZEND_VM_HANDLER(77, ZEND_FE_RESET, CONST|TMP|VAR|CV, ANY)
 {
        USE_OPLINE
        zend_free_op free_op1;
-       zval *array_ptr, *array_ref;
+       zval *array_ptr, *array_ref, iterator;
        HashTable *fe_ht;
        zend_object_iterator *iter = NULL;
        zend_class_entry *ce = NULL;
@@ -4308,11 +4308,8 @@ ZEND_VM_HANDLER(77, ZEND_FE_RESET, CONST|TMP|VAR|CV, ANY)
                        FREE_OP1_IF_VAR();
                }
                if (iter && EXPECTED(EG(exception) == NULL)) {
-                       zval iterator;
-
+                       ZVAL_OBJ(&iterator, &iter->std);
                        array_ptr = array_ref = &iterator;
-                       ZVAL_OBJ(array_ptr, &iter->std);
-
                } else {
                        if (OP1_TYPE == IS_VAR && opline->extended_value & ZEND_FE_RESET_VARIABLE) {
                                FREE_OP1_VAR_PTR();
index dd23856cb56327a1ffdbaff6759050fbe756ce52..643ebd644fda086edc277c166dcf12c5b3c708ed 100644 (file)
@@ -2947,7 +2947,7 @@ static int ZEND_FASTCALL  ZEND_FE_RESET_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_A
 {
        USE_OPLINE
 
-       zval *array_ptr, *array_ref;
+       zval *array_ptr, *array_ref, iterator;
        HashTable *fe_ht;
        zend_object_iterator *iter = NULL;
        zend_class_entry *ce = NULL;
@@ -3043,11 +3043,8 @@ static int ZEND_FASTCALL  ZEND_FE_RESET_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_A
 
                }
                if (iter && EXPECTED(EG(exception) == NULL)) {
-                       zval iterator;
-
+                       ZVAL_OBJ(&iterator, &iter->std);
                        array_ptr = array_ref = &iterator;
-                       ZVAL_OBJ(array_ptr, &iter->std);
-
                } else {
                        if (IS_CONST == IS_VAR && opline->extended_value & ZEND_FE_RESET_VARIABLE) {
 
@@ -7931,7 +7928,7 @@ static int ZEND_FASTCALL  ZEND_FE_RESET_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARG
 {
        USE_OPLINE
        zend_free_op free_op1;
-       zval *array_ptr, *array_ref;
+       zval *array_ptr, *array_ref, iterator;
        HashTable *fe_ht;
        zend_object_iterator *iter = NULL;
        zend_class_entry *ce = NULL;
@@ -8027,11 +8024,8 @@ static int ZEND_FASTCALL  ZEND_FE_RESET_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARG
 
                }
                if (iter && EXPECTED(EG(exception) == NULL)) {
-                       zval iterator;
-
+                       ZVAL_OBJ(&iterator, &iter->std);
                        array_ptr = array_ref = &iterator;
-                       ZVAL_OBJ(array_ptr, &iter->std);
-
                } else {
                        if (IS_TMP_VAR == IS_VAR && opline->extended_value & ZEND_FE_RESET_VARIABLE) {
 
@@ -12960,7 +12954,7 @@ static int ZEND_FASTCALL  ZEND_FE_RESET_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG
 {
        USE_OPLINE
        zend_free_op free_op1;
-       zval *array_ptr, *array_ref;
+       zval *array_ptr, *array_ref, iterator;
        HashTable *fe_ht;
        zend_object_iterator *iter = NULL;
        zend_class_entry *ce = NULL;
@@ -13056,11 +13050,8 @@ static int ZEND_FASTCALL  ZEND_FE_RESET_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG
                        zval_ptr_dtor_nogc(free_op1.var);
                }
                if (iter && EXPECTED(EG(exception) == NULL)) {
-                       zval iterator;
-
+                       ZVAL_OBJ(&iterator, &iter->std);
                        array_ptr = array_ref = &iterator;
-                       ZVAL_OBJ(array_ptr, &iter->std);
-
                } else {
                        if (IS_VAR == IS_VAR && opline->extended_value & ZEND_FE_RESET_VARIABLE) {
                                if (free_op1.var) {zval_ptr_dtor_nogc(free_op1.var);};
@@ -30482,7 +30473,7 @@ static int ZEND_FASTCALL  ZEND_FE_RESET_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS
 {
        USE_OPLINE
 
-       zval *array_ptr, *array_ref;
+       zval *array_ptr, *array_ref, iterator;
        HashTable *fe_ht;
        zend_object_iterator *iter = NULL;
        zend_class_entry *ce = NULL;
@@ -30578,11 +30569,8 @@ static int ZEND_FASTCALL  ZEND_FE_RESET_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS
 
                }
                if (iter && EXPECTED(EG(exception) == NULL)) {
-                       zval iterator;
-
+                       ZVAL_OBJ(&iterator, &iter->std);
                        array_ptr = array_ref = &iterator;
-                       ZVAL_OBJ(array_ptr, &iter->std);
-
                } else {
                        if (IS_CV == IS_VAR && opline->extended_value & ZEND_FE_RESET_VARIABLE) {