# PyPy Configuration[translation.backendopt.merge_if_blocks]

PyPy Configuration[translation.backendopt.merge_if_blocks]
general documentation config index command-line overview

# translation.backendopt.merge_if_blocks

Contents

- Basic Option Information
- Description

back to parent

# Basic Option Information

- name: merge_if_blocks
- description: Merge if ... elif chains
- command-line: --if-block-merge
- command-line for negation: --no-if-block-merge
- option type: boolean option
- default: True

# Description

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:

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

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