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
next prev parent 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