Skip to content

Releases: fortesg/fortrancallgraph

Fix OpenMP

18 Sep 23:18
Compare
Choose a tag to compare
  • Rewrite of OpenMP recognition in assembler code, also see #17
  • Fixed help message for -a all option

Fix release

04 Nov 23:00
Compare
Choose a tag to compare
  • Support INTERFACEs within Subroutine definitions
  • Bug fixes
  • More tests

A little bit of Fortran77

29 Apr 12:48
Compare
Choose a tag to compare
  • Support for some Fortran77 syntax
  • Prevent tracking of a global variable that is shadowed by a local variable
  • Bug fixes
  • More tests

Semicolons

26 Mar 09:12
Compare
Choose a tag to compare
  • Support for the semicolon syntax. Attention! I have not changed the fact that the LHS of an assignment will be tracked starting from the line following the assignment. That means, in the following statements the use of a%c1 will be missed by the analysis. Needs to be fixed in the future (#13).
p => a ; b = p%c1
  • Added more default filename patterns: Module files will now be found automatically when they follow one of the following patterns (assembler files accordingly with .s ending):
moduleName + '.f90'                                              
moduleName + '.F90'                                              
moduleName + '_mod.f90'                                                   
moduleName + '_mod.F90'                                  
moduleName.replace('_mod', '') + '.f90'                                                   
moduleName.replace('_mod', '') + '.F90'
  • Bug fixes

  • More tests

  • Refactorings

Full Types

20 Mar 15:05
Compare
Choose a tag to compare

Always Full Types

Introduced new config variable ALWAYS_FULL_TYPES. There, one can choose some types for which always all components shall be considered as "used".

Example

Assume you have a the following type:

TYPE :: my_type
  INTEGER :: i1, i2
END my_type

TYPE :: other_type
  REAL :: r
END my_type

and in your FCG configuration:

ALWAYS_FULL_TYPES = {'my_type', 'other_type'}

For every argument of type my_type the components %i1 and %i2 are considered to be used in the analyzed subroutine without any further tracking, and accordingly for %r of other_type. When there is global variable or a component of another argument or global variable with type my_type (or other_type) and this global variable or component appears somewhere in the subroutine, the (sub-)components %i1 and %i2 (or %r) are considered to be used without any further tracking.


Plus

  • Bug fixes
  • More tests
  • Refactorings

Abstract Types

06 Mar 13:47
Compare
Choose a tag to compare

Handling of Abstract Types

Introduced new config variable ABSTRACT_TYPE_IMPLEMENTATIONS. There, one can choose for some abstract types the one and only implementing subtypes.

Example

ABSTRACT_TYPE_IMPLEMENTATIONS = {'my_abstract_type':('my_subtype_module','my_subtype'),
                                 'other_abstract_type':('other_subtype_module','other_subtype'), 
                                 ...}

FCG will than handle every variable with type CLASS(my_abstract_type) as if it were actually TYPE(my_subtype) and every variable with type CLASS(other_abstract_type) as if it were actually TYPE(other_subtype) and so on....

Only helps when my_subtype or other_subtype are actually the chosen one, for example depending on some configuration. When during run time objects of several subtypes of my_abstract_type or other_abstract_type come along, it is not very helpful. (In future, maybe multiple subtypes will be supported, including automatic retrieval of all existing subtypes.)


Plus

  • Bug fixes
  • More tests

Python 3

05 Feb 10:16
Compare
Choose a tag to compare
  • Runs with Python 3 now (Fixes #3) :-)

  • New exit codes for errors

  • Subroutines are now sorted by first occurrence when printing call tree

Minor changes

24 Jan 21:56
Compare
Choose a tag to compare
  • Bug fixes
  • Code clean up
  • New test suite

Function Results

22 Jan 21:50
344a1e9
Compare
Choose a tag to compare
  • Type components of function results are now analyzed
  • Added option -a result
  • Enhanced parsing of variable declaration
  • Refactorings
  • Added tests
  • Code clean up
  • Fixes #5
  • Updated documentation

OpenMP

10 Dec 09:39
Compare
Choose a tag to compare
  • Assembler code containing OpenMP regions is now supported.
  • Fixed error introduced in latest release regarding the tracking of global variables as function results.
  • Removed some deprecated functions.

Fixes #7.