|View Issue Details|
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0000524||Frama-C||Kernel||public||2010-06-29 11:22||2014-02-12 16:55|
|Product Version||Frama-C Boron-20100401|
|Target Version||Fixed in Version||Frama-C Carbon-20101201-beta1|
|Summary||0000524: Missing declared inline functions in Globals|
|Description||If several inline functions have the same signature (parameter type and return type), only one (the first of them) is found in Globals.|
|Additional Information||The attached file contains :|
- A plug-in which recovers all declared functions from Globals and recovers information for each function from source file (from the untyped_AST visitor) is attached (DEV folder)
- A test source file (VAL folder) with several inline functions.
After building and installing the plug-in (make - make install), try the following command :
frama-c -test_inline testInline.c
|Tags||No tags attached.|
This is a feature, but I'm not sure it is really a good one.
first and second are isomorphic in some sense (the local declared variable a is not used and is therefore ignored).
static inline function are emitted only once in the final source code: this prevents useless duplication when such functions are declared in multiply-included headers.
Frama-C insists on minimizing the number of such functions.
You may questions :
* why a local variable declaration is'nt a source of non-isomorphism?
* why different static inline names are collapsed if functions are isomorphic
What would you expect in your specific settings?
|We can have some of that kind of functions from an include header. Despite their isomorphism, their definition should be accessible by our plug-in (find_def_by_name) in place of raising a "Not_found" exception.|
|Do you need the function with its original name to be kept in the AST or only to be able to fetch its isomorphic brother with find_def_by_name?|
We already have the function name in the Untyped AST from which (its visitor) we try to get the function definition with "find_def_by_name".
In this use case, we get a "Not_found" exception as it is in the Untyped AST but not in Globals.
This will be fixed by svn > 9230 whenever I get access to the network.
Isomorphy will no longer be modulo alpha conversion.
|2010-06-29 11:22||vmoyalam||New Issue|
|2010-06-29 11:22||vmoyalam||File Added: testInline.tar.gz|
|2010-06-30 00:50||monate||Note Added: 0000955|
|2010-06-30 00:50||monate||Assigned To||=> monate|
|2010-06-30 00:50||monate||Status||new => acknowledged|
|2010-06-30 00:51||monate||Status||acknowledged => feedback|
|2010-06-30 09:42||vmoyalam||Note Added: 0000956|
|2010-06-30 11:12||monate||Note Added: 0000957|
|2010-06-30 11:43||vmoyalam||Note Added: 0000958|
|2010-06-30 14:34||monate||Note Added: 0000959|
|2010-06-30 14:34||monate||Status||feedback => resolved|
|2010-06-30 14:34||monate||Fixed in Version||=> Frama-C svn, precise the release id|
|2010-06-30 14:34||monate||Resolution||open => fixed|
|2010-12-10 15:40||signoles||Fixed in Version||Frama-C GIT, precise the release id => Frama-C Carbon-20101201-beta1|
|2010-12-17 19:38||signoles||Status||resolved => closed|
|2013-12-19 01:13||svn||Source_changeset_attached||=> framac master 32e38788|
|2014-02-12 16:55||monate||Source_changeset_attached||=> framac stable/neon 32e38788|