9.12 Summary of Procedures for Elaboration Control

A programmer should first compile the program with the default options, using none of the binder or compiler switches. If the binder succeeds in finding an elaboration order, then apart from possible cases involving dispatching calls and access-to-subprogram types, the program is free of elaboration errors.

If it is important for the program to be portable to compilers other than GNAT, then the programmer should use compiler switch -gnatel and consider the messages about missing or implicitly created Elaborate and Elaborate_All pragmas.

If the binder reports an elaboration circularity, the programmer has several options: