Skip to content

More precise deps when calldeps computation

ID0001633: This issue was created automatically from Mantis Issue 1633. Further discussion may take place here.


Id Project Category View Due Date Updated
ID0001633 Frama-C Plug-in > from public 2014-01-27 2017-03-06
Reporter Anne Assigned To yakobowski Resolution suspended
Priority normal Severity feature Reproducibility have not tried
Platform - OS - OS Version -
Product Version Frama-C Fluorine-20130601 Target Version - Fixed in Version -

Description :

When both -calldeps (for precise computation) and -deps (for the synthesis) options are used, it would be great to use to calldeps results to produce the deps. For instance, in the example below, f is called only once, and its calldeps are precise, but the deps merge all the deps from the 'inc' function. One would expect deps and calldeps to be the same when there is only one call to a function.

Additional Information :

Results:

from] ====== DEPENDENCIES COMPUTED ====== These dependencies hold at termination for the executions that terminate: [from] Function inc: X FROM X; Y; p (and SELF) Y FROM X; Y; p (and SELF) [from] Function f: X FROM X; Y (and SELF) Y FROM X; Y (and SELF) [from] Function main: X FROM X; Y (and SELF) Y FROM X; Y (and SELF) [from] ====== END OF DEPENDENCIES ====== [from] ====== DISPLAYING CALLWISE DEPENDENCIES ====== [from] call to inc at calldeps.c:3 (by f): Y FROM Y; p [from] call to inc at calldeps.c:4 (by main): X FROM X; p [from] call to f at calldeps.c:4 (by main): Y FROM Y [from] entry point: X FROM X Y FROM Y [from] ====== END OF CALLWISE DEPENDENCIES ======

Steps To Reproduce :

Example:

int X, Y; void inc (int * p) { (*p)++; } void f (void) { inc (&Y); } void main (void) { inc (&X); f (); }

$ frama-c -deps -calldeps calldeps.c

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information