On 4/27/17 6:57 AM, Bernhard Reutner-Fischer wrote: > On Wed, Apr 26, 2017 at 10:39:12PM -0500, Peter Bergner wrote: >> +/* Returns true if the basic block BB has no successors and only contains >> + a call to __builtin_unreachable (). */ > > so > return EDGE_COUNT (bb->succs) == 0 > && (gsi = gsi_last_nondebug_bb (bb)) > && !gsi_end_p (gsi) > && gimple_call_builtin_p (gsi_stmt (gsi), BUILT_IN_UNREACHABLE); [snip] > which i should better phrase as > gsi = gsi_start_nondebug_after_labels_bb (bb); > while (!gsi_end_p (gsi) > { > gimple *stmt = gsi_stmt (gsi); > if (gimple_clobber_p (stmt)) > gsi_next (&gsi); > else > return gimple_call_builtin_p (stmt, BUILT_IN_UNREACHABLE); > } > return false;
I didn't try to rewrite the code too much, I basically just outlined the code as is. However, one change I did have to make, was to not use routines like gsi_after_labels(), etc., since those do not work during expansion to RTL, due to bb->flags == BB_RTL. Those off limits routines include gsi_start_nondebug_after_labels_bb(), since it calls gsi_after_labels(). Peter