MergeBlocksReductionOpportunity assumes it can never be invalidated/disabled by another MergeBlocksReductionOpportunity being applied, but this is not true. A loop header and a return block cannot be merged, and the return block might not start out as a return block; it can become a return block due to another merge.