31
31
#include "zend_inference.h"
32
32
#include "zend_dump.h"
33
33
34
+ #ifndef ZEND_DEBUG_DFA
35
+ # define ZEND_DEBUG_DFA 0
36
+ #endif
37
+
38
+ #if ZEND_DEBUG_DFA
39
+ # include "ssa_integrity.c"
40
+ #endif
41
+
34
42
int zend_dfa_analyze_op_array (zend_op_array * op_array , zend_optimizer_ctx * ctx , zend_ssa * ssa , uint32_t * flags )
35
43
{
36
44
uint32_t build_flags ;
@@ -460,6 +468,9 @@ void zend_dfa_optimize_op_array(zend_op_array *op_array, zend_optimizer_ctx *ctx
460
468
if (sccp_optimize_op_array (ctx , op_array , ssa , call_map )) {
461
469
remove_nops = 1 ;
462
470
}
471
+ #if ZEND_DEBUG_DFA
472
+ ssa_verify_integrity (op_array , ssa , "after sccp" );
473
+ #endif
463
474
if (ZEND_FUNC_INFO (op_array )) {
464
475
if (zend_dfa_optimize_calls (op_array , ssa )) {
465
476
remove_nops = 1 ;
@@ -468,6 +479,9 @@ void zend_dfa_optimize_op_array(zend_op_array *op_array, zend_optimizer_ctx *ctx
468
479
if (ctx -> debug_level & ZEND_DUMP_AFTER_PASS_8 ) {
469
480
zend_dump_op_array (op_array , ZEND_DUMP_SSA , "after sccp pass" , ssa );
470
481
}
482
+ #if ZEND_DEBUG_DFA
483
+ ssa_verify_integrity (op_array , ssa , "after calls" );
484
+ #endif
471
485
}
472
486
473
487
if (ZEND_OPTIMIZER_PASS_14 & ctx -> optimization_level ) {
@@ -477,6 +491,9 @@ void zend_dfa_optimize_op_array(zend_op_array *op_array, zend_optimizer_ctx *ctx
477
491
if (ctx -> debug_level & ZEND_DUMP_AFTER_PASS_14 ) {
478
492
zend_dump_op_array (op_array , ZEND_DUMP_SSA , "after dce pass" , ssa );
479
493
}
494
+ #if ZEND_DEBUG_DFA
495
+ ssa_verify_integrity (op_array , ssa , "after dce" );
496
+ #endif
480
497
}
481
498
482
499
for (v = op_array -> last_var ; v < ssa -> vars_count ; v ++ ) {
@@ -728,8 +745,15 @@ void zend_dfa_optimize_op_array(zend_op_array *op_array, zend_optimizer_ctx *ctx
728
745
}
729
746
}
730
747
748
+ #if ZEND_DEBUG_DFA
749
+ ssa_verify_integrity (op_array , ssa , "after dfa" );
750
+ #endif
751
+
731
752
if (remove_nops ) {
732
753
zend_ssa_remove_nops (op_array , ssa );
754
+ #if ZEND_DEBUG_DFA
755
+ ssa_verify_integrity (op_array , ssa , "after nop" );
756
+ #endif
733
757
}
734
758
}
735
759
0 commit comments