Source

pypy / pypy / doc / config / translation.backendopt.merge_if_blocks.txt

Full commit
This optimization converts parts of flow graphs that result from
chains of ifs and elifs like this into merged blocks.

By default flow graphing this kind of code::

    if x == 0:
        f()
    elif x == 1:
        g()
    elif x == 4:
        h()
    else:
        j()

will result in a chain of blocks with two exits, somewhat like this:

.. image:: unmergedblocks.png

(reflecting how Python would interpret this code).  Running this
optimization will transform the block structure to contain a single
"choice block" with four exits:

.. image:: mergedblocks.png

This can then be turned into a switch by the C backend, allowing the C
compiler to produce more efficient code.