This patch fixes a failed to annotate CFG error in
SIAnnotateControlFlow. The error indicates that the CFG is not
structurized.
The problem occurs when there are divergent unreachable blocks
and uniform return blocks in the same region. In this case,
AMDGPUUnifyDivergentExitNodes does not create a unified block so
the region contains multiple exits.
StructurizeCFG does not work properly when there are multiple
exits, so the necessary CFG transformations do not occur along
divergent control flow paths.
Subsequently, SIAnnotateControlFlow processes the paths to
divergent unreachable blocks, but may only partially process
blocks along a uniform control flow path to the return block.
This patch fixes the bug by creating a single exit block when
there is uniform return block and divergent unreachable blocks
in the same region. When the region contains a single exit,
then StructurizeCFG and SIAnnotateControlFlow transform the
CFG correctly.
If you're splitting the two return cases, should rename this