-
Notifications
You must be signed in to change notification settings - Fork 20
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
Extern inline functions are handled incorrectly when merge_inlines
is false
#142
Comments
#85, #86 and #123 are all related to this but somehow still didn't fix everything. The problem might be related to the inconsistency I pointed out here: #85 (comment). Slightly different logic is used to determine whether their |
Is this also a problem with valid programs? The one given above (after fixing that there is two
Otherwise I am not sure what the meaning of "correct" even is here... |
The unminimized issue is from silver searcher and some extern inline functions from the From __fortify_function int
__NTH (vasprintf (char **__restrict __ptr, const char *__restrict __fmt,
__gnuc_va_list __ap))
{
return __vasprintf_chk (__ptr, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
} which preprocesses to extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
__attribute__ ((__nothrow__ , __leaf__)) vasprintf (char **__restrict __ptr, const char *__restrict __fmt, __gnuc_va_list __ap)
{
return __vasprintf_chk (__ptr, 2 - 1, __fmt, __ap);
} |
When
merge_inlines
isfalse
, extern inline functions that are used several times produce one CFG with as many duplicate paths as there are usages. Here is an example to reproduce:Details
Goblint conf:
Without the
extern
, inline functions are handled fine: renaming the function with an added suffix and producing one separate CFG for each.The text was updated successfully, but these errors were encountered: