@@ -479,7 +479,7 @@ int zend_dfa_optimize_calls(zend_op_array *op_array, zend_ssa *ssa)
479479 return removed_ops ;
480480}
481481
482- static zend_always_inline void take_successor_0 (zend_ssa * ssa , int block_num , zend_basic_block * block )
482+ static zend_always_inline void take_successor_0 (zend_ssa * ssa , uint32_t block_num , zend_basic_block * block )
483483{
484484 if (block -> successors_count == 2 ) {
485485 if (block -> successors [1 ] != block -> successors [0 ]) {
@@ -489,7 +489,7 @@ static zend_always_inline void take_successor_0(zend_ssa *ssa, int block_num, ze
489489 }
490490}
491491
492- static zend_always_inline void take_successor_1 (zend_ssa * ssa , int block_num , zend_basic_block * block )
492+ static zend_always_inline void take_successor_1 (zend_ssa * ssa , uint32_t block_num , zend_basic_block * block )
493493{
494494 if (block -> successors_count == 2 ) {
495495 if (block -> successors [1 ] != block -> successors [0 ]) {
@@ -500,11 +500,9 @@ static zend_always_inline void take_successor_1(zend_ssa *ssa, int block_num, ze
500500 }
501501}
502502
503- static zend_always_inline void take_successor_ex (zend_ssa * ssa , int block_num , zend_basic_block * block , int target_block )
503+ static zend_always_inline void take_successor_ex (zend_ssa * ssa , uint32_t block_num , zend_basic_block * block , int target_block )
504504{
505- int i ;
506-
507- for (i = 0 ; i < block -> successors_count ; i ++ ) {
505+ for (uint32_t i = 0 ; i < block -> successors_count ; i ++ ) {
508506 if (block -> successors [i ] != target_block ) {
509507 zend_ssa_remove_predecessor (ssa , block_num , block -> successors [i ]);
510508 }
@@ -531,10 +529,9 @@ static void replace_predecessor(zend_ssa *ssa, int block_id, int old_pred, int n
531529 int * predecessors = & ssa -> cfg .predecessors [block -> predecessor_offset ];
532530 zend_ssa_phi * phi ;
533531
534- int i ;
535532 int old_pred_idx = -1 ;
536533 int new_pred_idx = -1 ;
537- for (i = 0 ; i < block -> predecessors_count ; i ++ ) {
534+ for (uint32_t i = 0 ; i < block -> predecessors_count ; i ++ ) {
538535 if (predecessors [i ] == old_pred ) {
539536 old_pred_idx = i ;
540537 }
@@ -582,10 +579,9 @@ static void zend_ssa_replace_control_link(zend_op_array *op_array, zend_ssa *ssa
582579 zend_basic_block * src = & ssa -> cfg .blocks [from ];
583580 zend_basic_block * old = & ssa -> cfg .blocks [to ];
584581 zend_basic_block * dst = & ssa -> cfg .blocks [new_to ];
585- int i ;
586582 zend_op * opline ;
587583
588- for (i = 0 ; i < src -> successors_count ; i ++ ) {
584+ for (uint32_t i = 0 ; i < src -> successors_count ; i ++ ) {
589585 if (src -> successors [i ] == to ) {
590586 src -> successors [i ] = new_to ;
591587 }
@@ -650,10 +646,10 @@ static void zend_ssa_replace_control_link(zend_op_array *op_array, zend_ssa *ssa
650646 replace_predecessor (ssa , new_to , to , from );
651647}
652648
653- static void zend_ssa_unlink_block (zend_op_array * op_array , zend_ssa * ssa , zend_basic_block * block , int block_num )
649+ static void zend_ssa_unlink_block (zend_op_array * op_array , zend_ssa * ssa , zend_basic_block * block , uint32_t block_num )
654650{
655651 if (block -> predecessors_count == 1 && ssa -> blocks [block_num ].phis == NULL ) {
656- int * predecessors , i ;
652+ int * predecessors ;
657653 zend_basic_block * fe_fetch_block = NULL ;
658654
659655 ZEND_ASSERT (block -> successors_count == 1 );
@@ -669,7 +665,7 @@ static void zend_ssa_unlink_block(zend_op_array *op_array, zend_ssa *ssa, zend_b
669665 }
670666 }
671667 }
672- for (i = 0 ; i < block -> predecessors_count ; i ++ ) {
668+ for (uint32_t i = 0 ; i < block -> predecessors_count ; i ++ ) {
673669 zend_ssa_replace_control_link (op_array , ssa , predecessors [i ], block_num , block -> successors [0 ]);
674670 }
675671 zend_ssa_remove_block (op_array , ssa , block_num );
@@ -686,7 +682,7 @@ static void zend_ssa_unlink_block(zend_op_array *op_array, zend_ssa *ssa, zend_b
686682static int zend_dfa_optimize_jmps (zend_op_array * op_array , zend_ssa * ssa )
687683{
688684 int removed_ops = 0 ;
689- int block_num = 0 ;
685+ uint32_t block_num = 0 ;
690686
691687 for (block_num = 1 ; block_num < ssa -> cfg .blocks_count ; block_num ++ ) {
692688 zend_basic_block * block = & ssa -> cfg .blocks [block_num ];
@@ -706,7 +702,7 @@ static int zend_dfa_optimize_jmps(zend_op_array *op_array, zend_ssa *ssa)
706702 block_num ++ ;
707703 }
708704 while (block_num < ssa -> cfg .blocks_count ) {
709- int next_block_num = block_num + 1 ;
705+ uint32_t next_block_num = block_num + 1 ;
710706 zend_basic_block * block = & ssa -> cfg .blocks [block_num ];
711707 uint32_t op_num ;
712708 zend_op * opline ;
@@ -941,11 +937,13 @@ static int zend_dfa_optimize_jmps(zend_op_array *op_array, zend_ssa *ssa)
941937 if (block_num > 0 ) {
942938 zend_ssa_unlink_block (op_array , ssa , block , block_num );
943939 /* backtrack to previous basic block */
940+ int backtracking_block_num = block_num ;
944941 do {
945- block_num -- ;
946- } while (block_num >= 0
947- && !(ssa -> cfg .blocks [block_num ].flags & ZEND_BB_REACHABLE ));
948- if (block_num >= 0 ) {
942+ backtracking_block_num -- ;
943+ } while (backtracking_block_num >= 0
944+ && !(ssa -> cfg .blocks [backtracking_block_num ].flags & ZEND_BB_REACHABLE ));
945+ if (backtracking_block_num >= 0 ) {
946+ block_num = backtracking_block_num ;
949947 continue ;
950948 }
951949 }
0 commit comments