The previous "optimization" that tries to reuse existing block for
selection header block can be problematic for deserialization
because it effectively pulls in previous ops in the selection op's
enclosing block into the selection op's header. When deserializing,
those ops will be placed in the selection op's region. If any of
the previous ops has usage after the section, it will break. That
is, the following IR cannot round trip:
mlir ^bb: %def = ... spv.mlir.selection { ... } %use = spv.SomeOp %def
This commit removes the "optimization" to always create new blocks
for the selection header.
Depends On D115560
nit: !op.use_empty() ?