comp.lang.ada
 help / color / mirror / Atom feed
From: Robert A Duff <bobduff@world.std.com>
Subject: Re: Compile time executed functions
Date: Fri, 13 Apr 2001 23:18:33 GMT
Date: 2001-04-13T23:18:33+00:00	[thread overview]
Message-ID: <wcc8zl4crsm.fsf@world.std.com> (raw)
In-Reply-To: 3ACC1985.7CB6D9E8@mida.se

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 3038 bytes --]

Mats Karlssohn <mats@mida.se> writes:

> Robert A Duff wrote:
> > 
> > Mats Karlssohn <mats@mida.se> writes:
> > 
> > > Maybe you could see my proposed pragma as a representation pragma
> > > for code then ?
> > 
> > OK, but only as a hint.  Rep pragmas or clauses for data can be tested,
> > because you can Unchecked_Convert the data, and see if it's represented
> > the way you asked.  But how do you test a rep pragma for code?  For
> > example, how can you write an Ada program that behaves differently
> > depending on whether pragma Inline was obeyed?  No fair looking at the
> > generated code.
> 
> How to check it... there should't be more than initialize data left
> at the place the function was called and since the function is not
> (at least in my case) called from anywhee else the body shoule _not_
> be included in the output. When writing the previous sentence I
> really felt thah my english isn't what it needs to be to discuss
> really complicated matters, so maybe I didn't understand your point ? 

You seem to be saying "look at the generated code" to see if the
compiler obeyed your pragma.  But that's not meaningful in a formal
language-definition sense.

> As for the test for inlined code... hmmm, I guess it'd be kind of
> hard.

Right, and the same is true for any other pragma that (pretends to)
require something about the generated code.

> > > This leads me to another thing that I've sometimes have found annoy�ng:
> > > Why isn't it required by the language that there should be a n option
> > > to force the compiler to tell you wich pragma;s it cant obey ?
> > > I just hate auditing machine code just to check that the compiler
> > > hasn't generated silly code. Although I must admit that this stuff has
> > > only occured a few times during the past 7 years.
> > 
> > But how would you know if *that* option were obeyed?  Suppose the
> > compiler says "yes, I inlined your function", how do you know if it's
> > lying?  You still have to inspect the generated code.
> 
> Well, until proven otherwise I trust the compiler vendor (a trust
> that have proven false quite often), so if such an option was
> availible I'd trust it (on my own projects, clients may have other
> ideas) until I suspect that it lies, then som investigation is
> needed.

It would be useful to have a compiler option that warns you whenever you
asked for inlining (or other code-generation-specific pragmas) and it
didn't obey.  I'm just saying it's not really appropriate as a
requirement in the RM, because as a requirement, it's meaningless -- it
can't be formally tested.  So ask your compiler vendor for such a
feature.

> > In practise, though, compilers do give this kind of information.
> > Eg, the documentation will normally tell you "we obey pragma Inline in
> > the following circumstances...".
> 
> Yes, aside from it beeing inconvenient to have to look for such
> things in the documentation, I have found that the documentation
> is often buried in some archive somwhere or just missing :(

:-(

- Bob



  reply	other threads:[~2001-04-13 23:18 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-03-27  7:10 Compile time executed functions Mats Karlssohn
2001-03-27 13:30 ` Ken Garlington
2001-03-28  7:08   ` Mats Karlssohn
2001-03-28 19:07     ` Phaedrus
2001-03-29  7:41       ` Mats Karlssohn
2001-03-29  5:02     ` Ken Garlington
2001-03-29  7:58       ` Mats Karlssohn
2001-03-29 14:28         ` Ken Garlington
2001-03-29 14:48           ` Ted Dennison
2001-04-04  7:52             ` Mats Karlssohn
2001-04-04 14:05               ` Ted Dennison
2001-04-05  6:30                 ` Mats Karlssohn
2001-03-29 19:48           ` Simon Wright
2001-03-31 19:30             ` Ken Garlington
2001-04-04  7:53             ` Mats Karlssohn
2001-03-30 10:41           ` Jean-Marc Bourguet
2001-03-30 16:13             ` Ken Garlington
2001-03-30 16:47               ` Jean-Marc Bourguet
2001-03-30 18:54                 ` Stephen Leake
2001-04-01  8:42                   ` Jean-Marc Bourguet
2001-03-31 19:30                 ` Ken Garlington
2001-04-01  8:59                   ` Jean-Marc Bourguet
2001-04-01 18:22                     ` Ken Garlington
2001-04-02  9:30                       ` Jean-Marc Bourguet
2001-04-02 12:42                         ` Robert A Duff
2001-04-02 14:16                           ` Jean-Marc Bourguet
2001-04-03  0:33                           ` Pat Rogers
2001-04-02 13:09                         ` Ken Garlington
2001-04-02 13:40                           ` Robert A Duff
2001-04-02 23:29                             ` Ken Garlington
2001-04-13 23:11                               ` Robert A Duff
2001-04-02 14:32                           ` Jean-Marc Bourguet
2001-04-04  7:59             ` Mats Karlssohn
2001-04-04  7:47           ` Mats Karlssohn
2001-04-06  0:33             ` Ken Garlington
2001-04-09 12:21               ` Mats Karlssohn
2001-04-13 15:51                 ` Tucker Taft
2001-03-27 14:39 ` Ted Dennison
2001-03-27 16:40   ` Mark Biggar
2001-03-27 18:14   ` Florian Weimer
2001-03-27 18:15   ` Florian Weimer
2001-03-27 18:57     ` Ted Dennison
2001-03-27 19:22       ` Florian Weimer
2001-03-27 20:23         ` Ted Dennison
2001-03-27 22:15           ` Florian Weimer
2001-03-27 23:30             ` Georg Bauhaus
2001-03-28  9:54               ` Florian Weimer
2001-03-28 15:20             ` Ted Dennison
2001-03-28 16:12               ` David C. Hoos, Sr.
2001-03-28 21:15               ` Robert A Duff
2001-03-28 21:56                 ` Brian Rogoff
2001-03-29  8:18                 ` Mats Karlssohn
2001-03-29  8:11               ` Mats Karlssohn
2001-03-29 14:37                 ` Ted Dennison
2001-03-29 16:35                   ` Mark Biggar
2001-03-29 19:27                     ` Florian Weimer
2001-03-29 19:28                     ` Florian Weimer
2001-03-30  3:41                       ` Ken Garlington
2001-03-30  4:32                         ` Brian Rogoff
2001-03-30 14:27                           ` Compile time executed functions [OT] Karel Thönissen
2001-03-30 17:30                             ` Scheveningen (Re: Compile time executed functions [OT]) Ray Blaak
2001-03-30 17:39                             ` More {OT] (Was " Brian Rogoff
2001-03-30 23:39                               ` Karel Thönissen
2001-03-30 17:47                         ` Compile time executed functions Brian Hanson
2001-03-30  0:06                     ` Robert A Duff
2001-03-30 15:02                       ` Ted Dennison
2001-03-30 20:57                         ` Robert A Duff
2001-04-02 14:26                           ` Ted Dennison
2001-03-30 17:33                       ` Ray Blaak
2001-03-29  8:25               ` Florian Weimer
2001-03-28  7:17   ` Mats Karlssohn
2001-03-29  1:35   ` Jon S Anthony
2001-03-27 14:39 ` Robert A Duff
2001-03-27 15:09   ` Ted Dennison
2001-03-27 16:33     ` Robert A Duff
2001-03-27 23:36     ` Ken Garlington
2001-03-28 20:47     ` Mark Lundquist
2001-03-28  7:29   ` Mats Karlssohn
2001-03-28 22:15     ` Robert A Duff
2001-03-29  8:43       ` Mats Karlssohn
2001-03-31  4:12         ` Robert A Duff
2001-04-05  7:06           ` Mats Karlssohn
2001-04-13 23:18             ` Robert A Duff [this message]
2001-03-29  5:02     ` Ken Garlington
2001-03-28  7:31 ` Mats Karlssohn
2001-03-30  8:57 ` Georg Bauhaus
replies disabled

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