freedreno/ir3: (jp) fixes
First patch converts predecessors to a struct set
to make them easier to update in the second patch, which updates ir3_legalize to properly maintain sucessors and predecessors.
The third patch is what finally fixes things, to set the (jp)
flag based on successors and predecessors, instead of based on branch/jump targets (which can miss fall-thrus). In principle any block w/ more than one predecessors is by definition a convergence point. But also (in case of loops) a block with a single predecessor which has multiple successors can also be a convergence point where live threads can re-join parked threads that exited the loop on a previous iteration.
Fixes:
dEQP-GLES3.functional.shaders.switch.switch_in_do_while_loop_dynamic_vertex
dEQP-GLES3.functional.shaders.switch.switch_in_do_while_loop_dynamic_fragment