Skip to content

Commit 16758a3

Browse files
committed
Merge branch 'PHP-7.1'
* PHP-7.1: Remove extraneous parentheses in conditions
2 parents 533737b + 5d7c774 commit 16758a3

File tree

2 files changed

+48
-34
lines changed

2 files changed

+48
-34
lines changed

Zend/zend_vm_execute.h

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -59679,23 +59679,23 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
5967959679
uint32_t spec = zend_spec_handlers[opcode];
5968059680
switch (opcode) {
5968159681
case ZEND_ADD:
59682-
if ((res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG)) {
59682+
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
5968359683
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
5968459684
break;
5968559685
}
5968659686
spec = 3631 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
5968759687
if (op->op1_type > op->op2_type) {
5968859688
zend_swap_operands(op);
5968959689
}
59690-
} else if ((op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG)) {
59690+
} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
5969159691
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
5969259692
break;
5969359693
}
5969459694
spec = 3656 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
5969559695
if (op->op1_type > op->op2_type) {
5969659696
zend_swap_operands(op);
5969759697
}
59698-
} else if ((op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE)) {
59698+
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
5969959699
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
5970059700
break;
5970159701
}
@@ -59706,41 +59706,41 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
5970659706
}
5970759707
break;
5970859708
case ZEND_SUB:
59709-
if ((res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG)) {
59709+
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
5971059710
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
5971159711
break;
5971259712
}
5971359713
spec = 3706 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
59714-
} else if ((op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG)) {
59714+
} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
5971559715
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
5971659716
break;
5971759717
}
5971859718
spec = 3731 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
59719-
} else if ((op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE)) {
59719+
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
5972059720
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
5972159721
break;
5972259722
}
5972359723
spec = 3756 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
5972459724
}
5972559725
break;
5972659726
case ZEND_MUL:
59727-
if ((res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG)) {
59727+
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
5972859728
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
5972959729
break;
5973059730
}
5973159731
spec = 3781 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
5973259732
if (op->op1_type > op->op2_type) {
5973359733
zend_swap_operands(op);
5973459734
}
59735-
} else if ((op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG)) {
59735+
} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
5973659736
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
5973759737
break;
5973859738
}
5973959739
spec = 3806 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
5974059740
if (op->op1_type > op->op2_type) {
5974159741
zend_swap_operands(op);
5974259742
}
59743-
} else if ((op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE)) {
59743+
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
5974459744
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
5974559745
break;
5974659746
}
@@ -59751,15 +59751,15 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
5975159751
}
5975259752
break;
5975359753
case ZEND_IS_EQUAL:
59754-
if ((op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG)) {
59754+
if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
5975559755
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
5975659756
break;
5975759757
}
5975859758
spec = 3856 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
5975959759
if (op->op1_type > op->op2_type) {
5976059760
zend_swap_operands(op);
5976159761
}
59762-
} else if ((op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE)) {
59762+
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
5976359763
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
5976459764
break;
5976559765
}
@@ -59770,15 +59770,15 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
5977059770
}
5977159771
break;
5977259772
case ZEND_IS_NOT_EQUAL:
59773-
if ((op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG)) {
59773+
if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
5977459774
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
5977559775
break;
5977659776
}
5977759777
spec = 4006 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
5977859778
if (op->op1_type > op->op2_type) {
5977959779
zend_swap_operands(op);
5978059780
}
59781-
} else if ((op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE)) {
59781+
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
5978259782
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
5978359783
break;
5978459784
}
@@ -59789,71 +59789,71 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
5978959789
}
5979059790
break;
5979159791
case ZEND_IS_SMALLER:
59792-
if ((op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG)) {
59792+
if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
5979359793
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
5979459794
break;
5979559795
}
5979659796
spec = 4156 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
59797-
} else if ((op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE)) {
59797+
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
5979859798
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
5979959799
break;
5980059800
}
5980159801
spec = 4231 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
5980259802
}
5980359803
break;
5980459804
case ZEND_IS_SMALLER_OR_EQUAL:
59805-
if ((op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG)) {
59805+
if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
5980659806
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
5980759807
break;
5980859808
}
5980959809
spec = 4306 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
59810-
} else if ((op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE)) {
59810+
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
5981159811
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
5981259812
break;
5981359813
}
5981459814
spec = 4381 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
5981559815
}
5981659816
break;
5981759817
case ZEND_QM_ASSIGN:
59818-
if ((op1_info == MAY_BE_DOUBLE)) {
59818+
if (op1_info == MAY_BE_DOUBLE) {
5981959819
spec = 4546 | SPEC_RULE_OP1;
59820-
} else if ((!(op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE))))) {
59820+
} else if (!(op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE)))) {
5982159821
spec = 4551 | SPEC_RULE_OP1;
5982259822
}
5982359823
break;
5982459824
case ZEND_PRE_INC:
59825-
if ((res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG)) {
59825+
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
5982659826
spec = 4456 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
59827-
} else if ((op1_info == MAY_BE_LONG)) {
59827+
} else if (op1_info == MAY_BE_LONG) {
5982859828
spec = 4466 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
59829-
} else if ((op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE))) {
59829+
} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) {
5983059830
spec = 4476 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
5983159831
}
5983259832
break;
5983359833
case ZEND_PRE_DEC:
59834-
if ((res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG)) {
59834+
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
5983559835
spec = 4486 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
59836-
} else if ((op1_info == MAY_BE_LONG)) {
59836+
} else if (op1_info == MAY_BE_LONG) {
5983759837
spec = 4496 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
59838-
} else if ((op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE))) {
59838+
} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) {
5983959839
spec = 4506 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
5984059840
}
5984159841
break;
5984259842
case ZEND_POST_INC:
59843-
if ((res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG)) {
59843+
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
5984459844
spec = 4516 | SPEC_RULE_OP1;
59845-
} else if ((op1_info == MAY_BE_LONG)) {
59845+
} else if (op1_info == MAY_BE_LONG) {
5984659846
spec = 4521 | SPEC_RULE_OP1;
59847-
} else if ((op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE))) {
59847+
} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) {
5984859848
spec = 4526 | SPEC_RULE_OP1;
5984959849
}
5985059850
break;
5985159851
case ZEND_POST_DEC:
59852-
if ((res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG)) {
59852+
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
5985359853
spec = 4531 | SPEC_RULE_OP1;
59854-
} else if ((op1_info == MAY_BE_LONG)) {
59854+
} else if (op1_info == MAY_BE_LONG) {
5985559855
spec = 4536 | SPEC_RULE_OP1;
59856-
} else if ((op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE))) {
59856+
} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) {
5985759857
spec = 4541 | SPEC_RULE_OP1;
5985859858
}
5985959859
break;
@@ -59863,7 +59863,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
5986359863
}
5986459864
break;
5986559865
case ZEND_FETCH_DIM_R:
59866-
if ((!(op2_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF)))) {
59866+
if (!(op2_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
5986759867
spec = 4556 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
5986859868
}
5986959869
break;

Zend/zend_vm_gen.php

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -665,6 +665,19 @@ function opcode_name($name, $spec, $op1, $op2) {
665665
return $name.($spec?"_SPEC":"").$prefix[$op1].$prefix[$op2];
666666
}
667667

668+
// Formats condition, protecting it by parentheses when needed.
669+
function format_condition($condition) {
670+
if ($condition === "") {
671+
throw new InvalidArgumentException("A non empty string condition was expected.");
672+
}
673+
674+
if ($condition[0] === "(" && substr($condition, -1) === ")") {
675+
return $condition;
676+
}
677+
678+
return "(".$condition.")";
679+
}
680+
668681
// Generates code for opcode handler or helper
669682
function gen_code($f, $spec, $kind, $export, $code, $op1, $op2, $name, $extra_spec=null) {
670683
global $op1_type, $op2_type, $op1_get_zval_ptr, $op2_get_zval_ptr,
@@ -2357,11 +2370,12 @@ function gen_vm($def, $skel) {
23572370
out($f, "\t\tcase $orig_op:\n");
23582371
$first = true;
23592372
foreach($dsc['type_spec'] as $code => $condition) {
2373+
$condition = format_condition($condition);
23602374
if ($first) {
2361-
out($f, "\t\t\tif ($condition) {\n");
2375+
out($f, "\t\t\tif $condition {\n");
23622376
$first = false;
23632377
} else {
2364-
out($f, "\t\t\t} else if ($condition) {\n");
2378+
out($f, "\t\t\t} else if $condition {\n");
23652379
}
23662380
$spec_dsc = $opcodes[$code];
23672381
if (isset($spec_dsc["spec"]["NO_CONST_CONST"])) {

0 commit comments

Comments
 (0)