From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=BAYES_00,INVALID_MSGID, LOTS_OF_MONEY,RATWARE_MS_HASH,RATWARE_OUTLOOK_NONAME autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,baa6871d466e5af9 X-Google-Attributes: gid103376,public From: "Nick Roberts" Subject: Re: AQ&S Guidance on pragma Elaborate_Body Date: 1997/04/26 Message-ID: <01bc5260$373835e0$28f982c1@xhv46.dial.pipex.com>#1/1 X-Deja-AN: 237540086 References: <528878564wnr@diphi.demon.co.uk> <336089AF.6046@elca-matrix.ch> Organization: UUNet PIPEX server (post doesn't reflect views of UUNet PIPEX) Newsgroups: comp.lang.ada Date: 1997-04-26T00:00:00+00:00 List-Id: Perhaps it could be summarised like this: The 'call graph' (or 'call tree') of calls which occur during the elaboration of the library units of a program cannot always be statically determined. There may be (and indeed, experience suggests, there will be) situations where the potential call graph indicates a circularity (i.e. that there is no order of elaboration which the compiler can determine will ensure that an unelaborated subprogram is never called), but where there is, in fact, an elaboration order in which normal execution of the program will not cause an unelaborated subprogram to be called. This is something which only the programmer can know: it cannot be determined by the compiler. So, the programmer has got to tell the compiler the order in which to elaborate the library units (and also, perhaps, has to soothe the compiler's troubled brow, and reassure it that a call to an unelaborated subprogram will not occur ;-). Thus, elaboration pragmas are required. As for 'state of the art': ask a soldier (/airman/sailor) whether he wants weapon A, which is state-of-the-art, or weapon B, which is simple and reliable. Which do you think he will choose? Or, to put it another way, if you could buy Ada compiler product A, which is state-of-the-art (and costs $30,000), or compiler product B, which requires elaboration pragmas (and costs $3,000, and is more reliable anyway), which would you buy? Nick.