Skip to content

Commit 5d7c774

Browse files
derecksonsgolemon
authored andcommitted
Remove extraneous parentheses in conditions
The zend_vm_gen.php generator now checks if the condition is already enclosed by parentheses, and them only if needed. This fixes nine clang/llvm parentheses-equality warnings.
1 parent fcd4c34 commit 5d7c774

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
@@ -62644,23 +62644,23 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
6264462644
uint32_t spec = zend_spec_handlers[opcode];
6264562645
switch (opcode) {
6264662646
case ZEND_ADD:
62647-
if ((res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG)) {
62647+
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
6264862648
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
6264962649
break;
6265062650
}
6265162651
spec = 3631 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
6265262652
if (op->op1_type > op->op2_type) {
6265362653
zend_swap_operands(op);
6265462654
}
62655-
} else if ((op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG)) {
62655+
} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
6265662656
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
6265762657
break;
6265862658
}
6265962659
spec = 3656 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
6266062660
if (op->op1_type > op->op2_type) {
6266162661
zend_swap_operands(op);
6266262662
}
62663-
} else if ((op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE)) {
62663+
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
6266462664
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
6266562665
break;
6266662666
}
@@ -62671,41 +62671,41 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
6267162671
}
6267262672
break;
6267362673
case ZEND_SUB:
62674-
if ((res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG)) {
62674+
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
6267562675
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
6267662676
break;
6267762677
}
6267862678
spec = 3706 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
62679-
} else if ((op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG)) {
62679+
} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
6268062680
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
6268162681
break;
6268262682
}
6268362683
spec = 3731 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
62684-
} else if ((op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE)) {
62684+
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
6268562685
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
6268662686
break;
6268762687
}
6268862688
spec = 3756 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
6268962689
}
6269062690
break;
6269162691
case ZEND_MUL:
62692-
if ((res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG)) {
62692+
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
6269362693
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
6269462694
break;
6269562695
}
6269662696
spec = 3781 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
6269762697
if (op->op1_type > op->op2_type) {
6269862698
zend_swap_operands(op);
6269962699
}
62700-
} else if ((op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG)) {
62700+
} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
6270162701
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
6270262702
break;
6270362703
}
6270462704
spec = 3806 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
6270562705
if (op->op1_type > op->op2_type) {
6270662706
zend_swap_operands(op);
6270762707
}
62708-
} else if ((op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE)) {
62708+
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
6270962709
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
6271062710
break;
6271162711
}
@@ -62716,15 +62716,15 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
6271662716
}
6271762717
break;
6271862718
case ZEND_IS_EQUAL:
62719-
if ((op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG)) {
62719+
if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
6272062720
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
6272162721
break;
6272262722
}
6272362723
spec = 3856 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
6272462724
if (op->op1_type > op->op2_type) {
6272562725
zend_swap_operands(op);
6272662726
}
62727-
} else if ((op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE)) {
62727+
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
6272862728
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
6272962729
break;
6273062730
}
@@ -62735,15 +62735,15 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
6273562735
}
6273662736
break;
6273762737
case ZEND_IS_NOT_EQUAL:
62738-
if ((op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG)) {
62738+
if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
6273962739
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
6274062740
break;
6274162741
}
6274262742
spec = 4006 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
6274362743
if (op->op1_type > op->op2_type) {
6274462744
zend_swap_operands(op);
6274562745
}
62746-
} else if ((op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE)) {
62746+
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
6274762747
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
6274862748
break;
6274962749
}
@@ -62754,71 +62754,71 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
6275462754
}
6275562755
break;
6275662756
case ZEND_IS_SMALLER:
62757-
if ((op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG)) {
62757+
if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
6275862758
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
6275962759
break;
6276062760
}
6276162761
spec = 4156 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
62762-
} else if ((op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE)) {
62762+
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
6276362763
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
6276462764
break;
6276562765
}
6276662766
spec = 4231 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
6276762767
}
6276862768
break;
6276962769
case ZEND_IS_SMALLER_OR_EQUAL:
62770-
if ((op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG)) {
62770+
if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
6277162771
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
6277262772
break;
6277362773
}
6277462774
spec = 4306 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
62775-
} else if ((op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE)) {
62775+
} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
6277662776
if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
6277762777
break;
6277862778
}
6277962779
spec = 4381 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
6278062780
}
6278162781
break;
6278262782
case ZEND_QM_ASSIGN:
62783-
if ((op1_info == MAY_BE_DOUBLE)) {
62783+
if (op1_info == MAY_BE_DOUBLE) {
6278462784
spec = 4546 | SPEC_RULE_OP1;
62785-
} 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))))) {
62785+
} 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)))) {
6278662786
spec = 4551 | SPEC_RULE_OP1;
6278762787
}
6278862788
break;
6278962789
case ZEND_PRE_INC:
62790-
if ((res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG)) {
62790+
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
6279162791
spec = 4456 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
62792-
} else if ((op1_info == MAY_BE_LONG)) {
62792+
} else if (op1_info == MAY_BE_LONG) {
6279362793
spec = 4466 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
62794-
} else if ((op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE))) {
62794+
} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) {
6279562795
spec = 4476 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
6279662796
}
6279762797
break;
6279862798
case ZEND_PRE_DEC:
62799-
if ((res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG)) {
62799+
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
6280062800
spec = 4486 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
62801-
} else if ((op1_info == MAY_BE_LONG)) {
62801+
} else if (op1_info == MAY_BE_LONG) {
6280262802
spec = 4496 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
62803-
} else if ((op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE))) {
62803+
} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) {
6280462804
spec = 4506 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
6280562805
}
6280662806
break;
6280762807
case ZEND_POST_INC:
62808-
if ((res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG)) {
62808+
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
6280962809
spec = 4516 | SPEC_RULE_OP1;
62810-
} else if ((op1_info == MAY_BE_LONG)) {
62810+
} else if (op1_info == MAY_BE_LONG) {
6281162811
spec = 4521 | SPEC_RULE_OP1;
62812-
} else if ((op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE))) {
62812+
} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) {
6281362813
spec = 4526 | SPEC_RULE_OP1;
6281462814
}
6281562815
break;
6281662816
case ZEND_POST_DEC:
62817-
if ((res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG)) {
62817+
if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
6281862818
spec = 4531 | SPEC_RULE_OP1;
62819-
} else if ((op1_info == MAY_BE_LONG)) {
62819+
} else if (op1_info == MAY_BE_LONG) {
6282062820
spec = 4536 | SPEC_RULE_OP1;
62821-
} else if ((op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE))) {
62821+
} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) {
6282262822
spec = 4541 | SPEC_RULE_OP1;
6282362823
}
6282462824
break;
@@ -62828,7 +62828,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
6282862828
}
6282962829
break;
6283062830
case ZEND_FETCH_DIM_R:
62831-
if ((!(op2_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF)))) {
62831+
if (!(op2_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
6283262832
spec = 4556 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
6283362833
}
6283462834
break;

Zend/zend_vm_gen.php

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

662+
// Formats condition, protecting it by parentheses when needed.
663+
function format_condition($condition) {
664+
if ($condition === "") {
665+
throw new InvalidArgumentException("A non empty string condition was expected.");
666+
}
667+
668+
if ($condition[0] === "(" && substr($condition, -1) === ")") {
669+
return $condition;
670+
}
671+
672+
return "(".$condition.")";
673+
}
674+
662675
// Generates code for opcode handler or helper
663676
function gen_code($f, $spec, $kind, $export, $code, $op1, $op2, $name, $extra_spec=null) {
664677
global $op1_type, $op2_type, $op1_get_zval_ptr, $op2_get_zval_ptr,
@@ -2347,11 +2360,12 @@ function gen_vm($def, $skel) {
23472360
out($f, "\t\tcase $orig_op:\n");
23482361
$first = true;
23492362
foreach($dsc['type_spec'] as $code => $condition) {
2363+
$condition = format_condition($condition);
23502364
if ($first) {
2351-
out($f, "\t\t\tif ($condition) {\n");
2365+
out($f, "\t\t\tif $condition {\n");
23522366
$first = false;
23532367
} else {
2354-
out($f, "\t\t\t} else if ($condition) {\n");
2368+
out($f, "\t\t\t} else if $condition {\n");
23552369
}
23562370
$spec_dsc = $opcodes[$code];
23572371
if (isset($spec_dsc["spec"]["NO_CONST_CONST"])) {

0 commit comments

Comments
 (0)