Skip to content

Add setting to remove unnecessary labels - #790

Open
schuessf wants to merge 2 commits into
devfrom
wip/fs/remove-label-setting
Open

Add setting to remove unnecessary labels#790
schuessf wants to merge 2 commits into
devfrom
wip/fs/remove-label-setting

Conversation

@schuessf

Copy link
Copy Markdown
Member

26cbad3 introduced an optimization in IcfgBuilder to remove unnecessary labels (i.e., labels without a goto, or where the only goto is immediately preceding the label) from the CFG. However, this optimization was too aggressive: #713 introduced the concept of locations of interest (LOIs), and non-auxiliary labels are meant to be treated as LOIs and should therefore always be preserved in the CFG. This was fixed in e158e9d by restricting the optimization to auxiliary labels only, so non-auxiliary labels are now always kept as LOIs. However, in cases where we are not interested in invariants at labels (e.g. SV-COMP), we'd still like the more aggressive optimization to reduce CFG size.

This PR adds a setting controlling whether the label-removal optimization applies to all labels (not just auxiliary ones), for cases where preserving LOIs at labels isn't required. By default, the setting is enabled, i.e., it behaves the same as before e158e9d. For stricter handling of labels (e.g., if you expect invariants at every label in Referee), you can disable the setting.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant