1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
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.
|