Hi, > as said the refactoring that would be appreciated is to split out the > update_value_range calls > from the worker functions so you can call the respective functions > from the DOM implementations. > That they are globbed in vrp_visit_stmt currently is due to the API of > the SSA propagator. Here is a patch that just splits out the update_value_range calls visit_stmts. Bootstrapped and regression tested on x86_64-linux with no new regressions. I also verified few random fdump-tree-vrp1-details from stage2 to make sure they are same. Is this OK for trunk? Thanks, Kugan gcc/ChangeLog: 2016-08-16 Kugan Vivekanandarajah * tree-vrp.c (vrp_visit_assignment_or_call): Changed to Return VR. (vrp_visit_cond_stmt): Just sets TAKEN_EDGE_P. (vrp_visit_switch_stmt): Likewise. (vrp_visit_stmt_worker): Factored out from vrp_visit_stmt. (vrp_visit_phi_node_worker): Factored out from vrp_visit_phi_stmt. (vrp_visit_stmt): Use vrp_visit_stmt_worker. (vrp_visit_phi_node): Use vrp_visit_phi_node_worker.