gnatelim - eliminate dead code from Ada programs
gnatelim [OPTION]... name
When you are working with a program which shares some set of Ada
packages with other programs, it may happen, that your program uses
only a part of subprogram defined in these packages, whereas the code
created for unused subprograms increases the size of the executable
gnatelim is a utility tracking unused subprograms in an Ada program.
Its output consists of a list of Eliminate pragmas marking all the
subprograms that are declared, but never called in a given program.
Eliminate is a GNAT-specific pragma. By ecompiling your program with
these pragmas, you may decrease the size of its executable, because the
compiler will not create the code for unused subprograms.
gnatelim is an ASIS application developed on top of the ASIS
implementation for GNAT. It needs a set of tree files representing a
program to analyze and the bind file for its main subprogram to be
created in the current directory. For the current version, it is a the
user’s responsibility to maintain the consistency of the set of tree
files processed by gnatelim, if the user also changes the sources of
the Ada program to be processed.
To produce a list of Eliminate pragmas, gnatelim has to do an extensive
analysis and it may take some time. For example, to process itself,
gnatelim takes 4 minutes of CPU time on a Pentium 200.
-v verbose mode: gnatelim version information is printed (in the
form of Ada comments) in stdout; the names of the files being
processed are printed to standard-error.
-vf Same as -v, but in addition various debugging information and
information reflecting some details of the analysis done by
gnatelim are printed to standard-error.
-a Process RTL components: by default, gnatelim does not analyze
the units which are the components of the GNAT Run-Time Library
(RTL), and it does not generate Eliminate pragmas for
subprograms declared in the RTL. If ’-a’ option is set, RTL
components are also analyzed (except some units, which contains
subprograms implicitly called by the compiler).
-m Check missed units: if this option is set, gnatelim checks that
all the units which (according to the bind file) has to be
analyzed by gnatelim are really represented by the set of tree
files processed by gnatelim (depending on whether or not ’-a’
option is set). By default (that is, if ’-m’ option is not set),
gnatelim analyzes a set of units represented by a given set of
tree files "as is" (excluding library packages which require
bodies, but for which bodies are not available).
ASIS-for-GNAT was originally developed by the ASIS-for-GNAT team at
the Software Engineering Laboratory of the Swiss Federal
Institute of Technology (LGL-EPFL) in Lausanne, Switzerland, in
cooperation with the Scientific Research Computer Center of Moscow
State University (SRCC MSU), Russia, with funding partially provided
by grants from the Swiss National Science Foundation and the Swiss
Academy of Engineering Sciences. ASIS-for-GNAT is now maintained by
Ada Core Technologies Inc (http://www.gnat.com).
This manual page was written by Ludovic Brenta <ludovic@ludovic-
brenta.org> for the Debian project.
Copyright (c) 1995-1997, Free Software Foundation, Inc.
asistant(1), gnat(1), gnatcheck(1), gnatmetric(1), gnatpp(1),
The full documentation for gnatelim in /usr/share/doc/asis-
info asis_ug ASIS-for-GNAT User’s Guide
info asis_rm ASIS-for-GNAT Reference Manual