-
Notifications
You must be signed in to change notification settings - Fork 76
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
Limit address sets to include at most one string pointer #808
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this behavior should be configurable via some option. Apart from that, it looks good!
… only to limit the number of string pointers to one or not
…able, otherwise not
Should this option be active by default or not? Probably makes sense to enable it for the defaults configurations for large and mid-sized programs. |
Having an option is good indeed since we still have some use cases for distinguishing string pointers. Given the choice now, it looks to me like a choice between unit domain and flat domain (of strings) for |
The flat domain of strings would, as-is, result in the behavior that limits address sets to contain at most one string pointer: The join of two different non-bottom elements yields In case we want to implement the tracking of string pointers via other domains, one would require a flat-domain that raises a |
True, it'd be a flat lattice without lifted bottom and top. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think as it currently is is a good state. Replacing the string components with a further lattice only makes the code harder to read IMO.
In this PR, this asserts is unknown, as it should be, as I changed the |
Yes, sorry, I did not read your comment above closely enough! |
With this option activated (by default), and the following command line, goblint terminates in 11:45h:
With the option deactivated, Goblint still has not terminated after running 17:51h. |
This PR changes the abstraction of a string pointer from
StrPtr of string
toStrPtr of string option
. Now, aStrPtr None
abstracts any possible string pointer.As there is the possibility that there may the same string in the binary multiple times, the function
is_definite
was changed so thatis_definite (StrPtr _)
now returns false.Closes #807