I'm trying to make IL verifying more streamlined - it's often that passes have some random (or no) verification in their TODO which makes pinning down issues to specific passes hard.
Thus I propose to unify the various TODO_verify_* flags into a single one, TODO_verify_il, and based on what IL properties are currently active perform checking. That still leaves the possibility to have no checking (with no TODO_verify_il). Do people think that the fine-grained verification control is actually useful or do you agree with me that it leads to sloppiness? Verification would be as outlined in the patch below - I didn't yet adjust users of the then obsoleted TODO flags (another possibility were to unconditionally verify - in the old days all verification was controlled by --enable-checking options). Thoughts? Thanks, Richard. Index: gcc/passes.c =================================================================== *** gcc/passes.c (revision 196201) --- gcc/passes.c (working copy) *************** execute_function_todo (void *data) *** 1957,1976 **** return; #if defined ENABLE_CHECKING ! if (flags & TODO_verify_ssa ! || (current_loops && loops_state_satisfies_p (LOOP_CLOSED_SSA))) { ! verify_gimple_in_cfg (cfun); ! verify_ssa (true); } - else if (flags & TODO_verify_stmts) - verify_gimple_in_cfg (cfun); - if (flags & TODO_verify_flow) - verify_flow_info (); - if (current_loops && loops_state_satisfies_p (LOOP_CLOSED_SSA)) - verify_loop_closed_ssa (false); - if (flags & TODO_verify_rtl_sharing) - verify_rtl_sharing (); #endif cfun->last_verified = flags & TODO_verify_all; --- 1955,1982 ---- return; #if defined ENABLE_CHECKING ! if (flags & TODO_verify_il) { ! if (cfun->curr_properties & PROP_cfg) ! verify_flow_info (); ! if (cfun->curr_properties & PROP_loops) ! verify_loop_structure (); ! if (cfun->curr_properties & PROP_gimple_any) ! { ! if (cfun->curr_properties & PROP_cfg) ! verify_gimple_in_cfg (cfun); ! else ! verify_gimple_in_seq (gimple_body (cfun->decl)); ! } ! if (cfun->curr_properties & PROP_ssa) ! { ! verify_ssa (); ! if (current_loops && loops_state_satisfies_p (LOOP_CLOSED_SSA)) ! verify_loop_closed_ssa (false); ! } ! if (cfun->curr_properties & PROP_rtl) ! verify_rtl_sharing (); } #endif cfun->last_verified = flags & TODO_verify_all;