comp.lang.ada
 help / color / mirror / Atom feed
From: sampson@cod.nosc.mil  (Charles H. Sampson)
Subject: Re: and then
Date: 12 Apr 93 18:38:06 GMT	[thread overview]
Message-ID: <1993Apr12.183806.1003@nosc.mil> (raw)

In article <1q3vtq$2lt@travis.csd.harris.com> danr@ada1.ssd.csd.harris.com (Dan
 Rittersdorf) writes:
>In article <1993Apr7.162133.3564@nosc.mil> sampson@nosc.mil (me) writes:
>>
>>     Unfortunately, that style can conflict with efficiency considerations. 
>>Ada compiler writers appear to have abdicated their responsibility and make
>>no attempt to determine when boolean operations can be optimized as short-
>>circuit.  (Somebody contradict me, please.)  They apparently feel that if
>>the programmer wants short-circuit he can ask for it.  In addition, there
>>are cases when it is unreasonable to expect such an optimization; when the
>>second operand contains a function reference, for example.
>
>      Some vendors, especially those that have concentrated on excellent
>   optimization, like (blatant plug alert) Harris, do make this 
>   optimization when it can be determined that the operands of
>   the boolean operator have no side effects.  Someone else also stated
>   that the LRM requires the evaluation of the operands, but I think
>   several people have done a good job of arguing that one to the
>   ground, so I won't.
>
>      I find it odd, though, that you feel a vendor has some *responsibility*
>   to provide this optimization.  Each possible optimization has a cost and 
>   a benefit -- to the vendor and the user, and each vendor decides what 
>   optimizations they can afford to provide, given the benefit (profit)
>   that can be obtained.  That's business.  If a vendor decides that benefits
>   of providing short circuit boolean optimizations don't outweigh their
>   investment, they may well decide not to provide it.  They have no 
>   responsibility to provide it -- just the option.  If you want it, 
>   let your vendor know.  They can't know what the customer wants if the
>   customer doesn't tell them.  If they're unresponsive, remember that 
>   they still have to weigh the benefit to their entire user community
>   against the cost to the same.  Sometimes one user's request can't be
>   granted if the impact to the entire user community would be deemed
>   too great (for example, if the requested optimization were to require
>   adding a new, time consuming pass to the compiler which would increase
>   everybody's compile times).

     These are all good points and I find it difficult to argue with them. 
I will explain a bit what I meant by "abdicating responsibility".

     In the pre-Ada world, not so long ago, evaluating boolean expressions
in short-circuit form was so common that I doubt that many compiler writers
considered it to be an optimization.  I certainly didn't for the compiler I
worked on.  It was just considered code generation, in roughly the same bag
of tricks as a decent register assignment algorithm.  In the FORTRAN world,
short-circuit was common but not universal, which had interesting impact on
FORTRAN's vaunted transportability.

     Then along came Ada, which specified precisely the semantics of bool-
ean expressions.  As I have looked at code from a number of Ada compilers
and not seen any short-circuit, I leaped to the conclusion that the imple-
menter were saying something like, "Heck, it's easy to do short-circuit,
but first we have to verify that we're not changing the semantics.  Forget
it.  If the programmer wants short-circuit he can ask for it."  I consider
it a "responsibility" of Ada compiler writers to generate code roughly as
good as the code for similar constructs in other languages, provided the
LRM doesn't prevent it, therefore roughly as good as a FORTRAN compiler. 
Certainly that "responsibility" is not a moral imperative; it's tempered by
all of the considerations stated by Mr. Rittersdorf.

     I'm happy to report that a number of implementors have responded to my
request to be contradicted.  Apparently many have now decided to do the
extra work required to implement this "optimization".

                                   Charlie

             reply	other threads:[~1993-04-12 18:38 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1993-04-12 18:38 Charles H. Sampson [this message]
  -- strict thread matches above, loose matches on Subject: below --
1993-04-12 13:29 and then cis.ohio-state.edu!zaphod.mps.ohio-state.edu!howland.reston.ans.net!noc.n
1993-04-11  3:55 Michael Feldman
1993-04-10 19:52 Alex Blakemore
1993-04-10 15:43 Dik T. Winter
1993-04-10 15:36 Dik T. Winter
1993-04-10  9:39 munnari.oz.au!yoyo.aarnet.edu.au!news.adelaide.edu.au!usenet
1993-04-10  1:03 Charles H. Sampson
1993-04-09 18:08 Dave Bashford
1993-04-09 14:06 Dan Rittersdorf
1993-04-08 22:35 Andrew Dunstan,,2285592,
1993-04-08 22:28 Alex Blakemore
1993-04-08 19:03 Art Duncan
1993-04-08 16:18 Charles H. Sampson
1993-04-08 15:34 Christopher J. Henrich
1993-04-08 12:21 enterpoop.mit.edu!usc!cs.utexas.edu!mars.tsd.arlut.utexas.edu!gardner
1993-04-07 22:58 Mark Lundquist
1993-04-07 21:07 Ray Harwood -- Data Basix: (602)721-1988
1993-04-07 16:21 Charles H. Sampson
1993-04-07 12:42 Robert Firth
replies disabled

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