Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add new IcfgBuilder #690

Open
wants to merge 55 commits into
base: dev
Choose a base branch
from
Open

Add new IcfgBuilder #690

wants to merge 55 commits into from

Conversation

Heizmann
Copy link
Member

Commits for switching from RCFGBuilder to IcfgBuilder are missing in this branch. But Frank convinced me to already start a pull request.

Copy link
Contributor

@schuessf schuessf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your work! I did not have a detailed look yet, but here are already some more general comments.

trunk/examples/toolchains/AutomizerBpl_IcfgBuilder.xml Outdated Show resolved Hide resolved
VAL [#NULL!base=0, #NULL!offset=0]
[L31] assert false;
VAL [#NULL!base=0, #NULL!offset=0]
[L49] CALL call ULTIMATE.init();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What has changed in the backtranslation that is relevant for this test?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you fix this?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was just wondering why you changed already this path and not the others.

@schuessf schuessf changed the title Wip/nk/icfgbuilder Add new IcfgBuilder Oct 31, 2024
Heizmann and others added 20 commits November 4, 2024 15:59
… startet when we build the new block"

This reverts commit ba104cf.
Bugfix for cases where atomic blocks end with an IfStatement.
* Rename identifiers
* Add documentation
* Make method void (returned object is an argument of method)
* Rename identifiers
* Add documentation
* Make method void (returned object is an argument of method)
* extract method for building IcfgLocations
* remove method that became obsolete
* Bugfix: Do not merge loop entry and location after invariant.
* Rename identifiers
Do not copy annotations directly from original statements to edges but only to
auxiliary statements. (Because annotations are copied from all
statements to edges anyway.)
Unify code for prepending statements
Use assumption that mapping returns singleton except for calls.
The setting "Only consider context switches at boundaries of atomic blocks"
(aka the nodatarace-LBE) is only meant to affect concurrent programs. It
performs a kind of large-block encoding (LBE) that is usually not desirable
for sequential programs.
@schuessf
Copy link
Contributor

schuessf commented Nov 4, 2024

I just synced the CfgBuilder classes from RCFGBuilder and the new IcfgBuilder. To inspect the differences, you can take a look a the diff.

@schuessf
Copy link
Contributor

schuessf commented Nov 4, 2024

@Heizmann I just noted that the old RCFGBuilder had some code to remove unnecessary assume true statements:

// Rationale: <code>assume true</ code> statements can be omitted, unless they
// carry attributes or indicate an overapproximation.
if (mRemoveAssumeTrueStmt && isPlainAssumeTrueStatement(st) && !isOverapproximation(st)) {
	mRemovedAssumeTrueStatements++;
	continue;
}

This is currently not present in the IcfgBuilder. Can and should this be added?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants