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=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,7f8b2fd444c211b5 X-Google-Attributes: gid103376,public From: stt@houdini.camb.inmet.com (Tucker Taft) Subject: Re: Help: pragma inline Date: 1997/05/27 Message-ID: #1/1 X-Deja-AN: 244246667 Sender: news@inmet.camb.inmet.com (USENET news) X-Nntp-Posting-Host: houdini.camb.inmet.com References: Organization: Intermetrics, Inc. Newsgroups: comp.lang.ada Date: 1997-05-27T00:00:00+00:00 List-Id: Jeff Creem (jcreem@mailgw.sanders.lockheed.com) wrote: : In article <3381bff2.quantum@quantum.pc.my>, "Adrian B.Y. Hoe" : wrote: : >I encounter a warning when compiling the following code (fragment) : >using ObjectAda 7.0.232 : > : > : > ... : > : > function Has_Trail (T : Trail) return Boolean : > begin : > return T.Start_In; : > end Trail_Is_In; : > : > pragma Inline(Has_Trail); -- Line 193 : > : > ... : > : > : >OA gives a warning message on line 193: Pragma Inline may not occur : >after the subprogram body, ignoring pragma inline on this subp. : > : >Could anyone explain more about inline and whether the warning could : >affect the intention of pragma Inline? : > : >Your help is most valuable. : > : > : >Thank you in advance. : For some reason, all of the compilers based on the AdaMajic : front end (ObjectAda and Green Hills Ada 95..Possibly more) want a function : or procedure spec used in conjunction with the pragma inline. One reason is that the language rules do not allow a program unit pragma, such as pragma inline, following the subprogram body. See RM95 10.1.5(6). For "some reason," GNAT does not enforce this rule ;-). Note that the AdaMagic-based compilers do not as yet support the ability to place the pragma Inline immediately inside a subprogram body, as allowed by 10.1.5(5), so there is still some work to do. But allowing it after the subprogram body is not likely to happen. For what it is worth, the reason a pragma Inline must be given before the subprogram body is that the compiler only saves the statements of the body if a pragma inline applies. Otherwise it discards the statements as soon as code for the subprogram is generated. : ... : function Has_Trail (T : Trail) return Boolean; : pragma Inline(Has_Trail); : function Has_Trail (T : Trail) return Boolean : begin : return T.Start_In; : end Trail_Is_In; : : It is silly and a little annoying but it appears to work. (which is : the most important thing) It is also the RM way... -- -Tucker Taft stt@inmet.com http://www.inmet.com/~stt/ Intermetrics, Inc. Burlington, MA USA