-
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
__LINE__ in macro can cause several functions to be changed #630
Comments
EDIT: We could also supply a custom header that forces corresponding |
The standard might not like that though:
|
Redefining We were thinking about some less brutal options, such as silently patching constant int arguments to functions that do not have a body, and for which we do not use the |
I don't really understand how this is related because In zstd's case, it might be easiest to just disable |
Yes, but for functions for which we do not have a body (and which are not |
Kind of off-topic, but the code in facebook/zstd@a8adfa7 looks suspiciously weird: if (fileSize == UTIL_FILESIZE_UNKNOWN)
EXM_THROW(32, "This file format is not supported : Dictionary file %s\n", fileName);
{
// ...
} That block isn't even attached to the |
So if I'm getting this right, what you have in mind is very specific to zstd's case, where I'd rather just preprocess to disable those incrementally-fragile macros of a particular project (which has zero unsoundness risk!) than bake lots of assumptions into Goblint:
|
I mean when one describes it like that, I think it sounds worse then it is 😉 |
When benchmarking zstd I discovered that for some commits the runtime of the incremental analysis with reluctant destabilization was noticeable worse than for the basic incremental run. For these commits also several functions were detected as being changed even though only a very little number of relevant lines of code had changed. The reason for this seems to be that
__LINE__
malloc
, a different heap variable is createdmalloc
will need to be fully destabilizedA commit where this problem can for example be observed is facebook/zstd@a8adfa7. It has 2 relevant changed lines of code, 17 changed functions, took ~260s to analyze incrementally and ~390s with reluctant destabilization (the non-incremental analysis of the parent commit took ~1220s).
The text was updated successfully, but these errors were encountered: