comp.lang.ada
 help / color / mirror / Atom feed
From: stt@houdini.camb.inmet.com (Tucker Taft)
Subject: Re: Help: pragma inline
Date: 1997/05/27
Date: 1997-05-27T00:00:00+00:00	[thread overview]
Message-ID: <EAuFAx.1Eu.0.-s@inmet.camb.inmet.com> (raw)
In-Reply-To: jcreem-2105970733360001@ljd155.sanders.lockheed.com


Jeff Creem (jcreem@mailgw.sanders.lockheed.com) wrote:
: In article <3381bff2.quantum@quantum.pc.my>, "Adrian B.Y. Hoe"

: <byHoe@QUANTUM.PC.MY> 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




  reply	other threads:[~1997-05-27  0:00 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1997-05-20  0:00 Help: pragma inline Adrian B.Y. Hoe
1997-05-20  0:00 ` Robert Dewar
1997-05-21  0:00 ` Kevin Krieser
1997-05-21  0:00 ` Jeff Creem
1997-05-27  0:00   ` Tucker Taft [this message]
1997-05-29  0:00     ` Stephen Leake
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox