You can optionally specify the inlining level: 1 for moderate inlining across modules, which is a good compromise between compilation times and performances at run time, or 2 for full inlining across modules, which may bring about longer compilation times. If no inlining level is specified, the compiler will pick it based on the optimization level: 1 for `-O1', `-O2' or `-Os' and 2 for `-O3'.
If you specify this switch the compiler will access these bodies, creating an extra source dependency for the resulting object file, and where possible, the call will be inlined. For further details on when inlining is possible see Inlining of Subprograms.
When using a gcc-based back end (in practice this means using any version of GNAT other than the JGNAT, .NET or GNAAMP versions), then the use of `-gnatN' is deprecated, and the use of `-gnatn' is preferred. Historically front end inlining was more extensive than the gcc back end inlining, but that is no longer the case.