Extended Description
I'm attaching a reduced test case, plus the output of opt -structurizecfg.
Change r321751 ("StructurizeCFG: Fix broken backedge detection") breaks this test case, in the following way:
The original code has edges from both %if and %else into the %exit block. In the resulting code, the edge from %if to %exit disappears: if the exit condition is met (%cond.if = false), the control will follow %if -> %Flow1 -> %Flow2 -> %loop.outer instead of %if -> %Flow1 -> %Flow2 -> %exit.
This bug regresses various OpenGL test suites, for example dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations.conditional_continue_vertex.