Skip to content

Commit e27eca9

Browse files
committed
for some reason gcc -O2 compiled the previous code in unexpected way
1 parent a612315 commit e27eca9

File tree

2 files changed

+10
-25
lines changed

2 files changed

+10
-25
lines changed

Zend/zend_vm_def.h

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4212,7 +4212,7 @@ ZEND_VM_HANDLER(77, ZEND_FE_RESET, CONST|TMP|VAR|CV, ANY)
42124212
{
42134213
USE_OPLINE
42144214
zend_free_op free_op1;
4215-
zval *array_ptr, *array_ref;
4215+
zval *array_ptr, *array_ref, iterator;
42164216
HashTable *fe_ht;
42174217
zend_object_iterator *iter = NULL;
42184218
zend_class_entry *ce = NULL;
@@ -4308,11 +4308,8 @@ ZEND_VM_HANDLER(77, ZEND_FE_RESET, CONST|TMP|VAR|CV, ANY)
43084308
FREE_OP1_IF_VAR();
43094309
}
43104310
if (iter && EXPECTED(EG(exception) == NULL)) {
4311-
zval iterator;
4312-
4311+
ZVAL_OBJ(&iterator, &iter->std);
43134312
array_ptr = array_ref = &iterator;
4314-
ZVAL_OBJ(array_ptr, &iter->std);
4315-
43164313
} else {
43174314
if (OP1_TYPE == IS_VAR && opline->extended_value & ZEND_FE_RESET_VARIABLE) {
43184315
FREE_OP1_VAR_PTR();

Zend/zend_vm_execute.h

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2947,7 +2947,7 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_A
29472947
{
29482948
USE_OPLINE
29492949

2950-
zval *array_ptr, *array_ref;
2950+
zval *array_ptr, *array_ref, iterator;
29512951
HashTable *fe_ht;
29522952
zend_object_iterator *iter = NULL;
29532953
zend_class_entry *ce = NULL;
@@ -3043,11 +3043,8 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_A
30433043

30443044
}
30453045
if (iter && EXPECTED(EG(exception) == NULL)) {
3046-
zval iterator;
3047-
3046+
ZVAL_OBJ(&iterator, &iter->std);
30483047
array_ptr = array_ref = &iterator;
3049-
ZVAL_OBJ(array_ptr, &iter->std);
3050-
30513048
} else {
30523049
if (IS_CONST == IS_VAR && opline->extended_value & ZEND_FE_RESET_VARIABLE) {
30533050

@@ -7931,7 +7928,7 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARG
79317928
{
79327929
USE_OPLINE
79337930
zend_free_op free_op1;
7934-
zval *array_ptr, *array_ref;
7931+
zval *array_ptr, *array_ref, iterator;
79357932
HashTable *fe_ht;
79367933
zend_object_iterator *iter = NULL;
79377934
zend_class_entry *ce = NULL;
@@ -8027,11 +8024,8 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARG
80278024

80288025
}
80298026
if (iter && EXPECTED(EG(exception) == NULL)) {
8030-
zval iterator;
8031-
8027+
ZVAL_OBJ(&iterator, &iter->std);
80328028
array_ptr = array_ref = &iterator;
8033-
ZVAL_OBJ(array_ptr, &iter->std);
8034-
80358029
} else {
80368030
if (IS_TMP_VAR == IS_VAR && opline->extended_value & ZEND_FE_RESET_VARIABLE) {
80378031

@@ -12960,7 +12954,7 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG
1296012954
{
1296112955
USE_OPLINE
1296212956
zend_free_op free_op1;
12963-
zval *array_ptr, *array_ref;
12957+
zval *array_ptr, *array_ref, iterator;
1296412958
HashTable *fe_ht;
1296512959
zend_object_iterator *iter = NULL;
1296612960
zend_class_entry *ce = NULL;
@@ -13056,11 +13050,8 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG
1305613050
zval_ptr_dtor_nogc(free_op1.var);
1305713051
}
1305813052
if (iter && EXPECTED(EG(exception) == NULL)) {
13059-
zval iterator;
13060-
13053+
ZVAL_OBJ(&iterator, &iter->std);
1306113054
array_ptr = array_ref = &iterator;
13062-
ZVAL_OBJ(array_ptr, &iter->std);
13063-
1306413055
} else {
1306513056
if (IS_VAR == IS_VAR && opline->extended_value & ZEND_FE_RESET_VARIABLE) {
1306613057
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
3048230473
{
3048330474
USE_OPLINE
3048430475

30485-
zval *array_ptr, *array_ref;
30476+
zval *array_ptr, *array_ref, iterator;
3048630477
HashTable *fe_ht;
3048730478
zend_object_iterator *iter = NULL;
3048830479
zend_class_entry *ce = NULL;
@@ -30578,11 +30569,8 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS
3057830569

3057930570
}
3058030571
if (iter && EXPECTED(EG(exception) == NULL)) {
30581-
zval iterator;
30582-
30572+
ZVAL_OBJ(&iterator, &iter->std);
3058330573
array_ptr = array_ref = &iterator;
30584-
ZVAL_OBJ(array_ptr, &iter->std);
30585-
3058630574
} else {
3058730575
if (IS_CV == IS_VAR && opline->extended_value & ZEND_FE_RESET_VARIABLE) {
3058830576

0 commit comments

Comments
 (0)