short circuit evaluation
    chris at mimsy.umd.edu 
    chris at mimsy.umd.edu
       
    Thu Feb 12 08:12:08 AEST 1987
    
    
  
Dan Hoey <hoey at nrl-aic.arpa> writes:
>    From: Henry Spencer <utzoo!henry>
>
>    I did ask Dennis about [a PDP-11 C compiler short circuiting
>    multiplies by constant zeroes, thus discarding side effects]
>    at one point, since strict reading of K&R suggested it was a
>    bug.  His reply, as I recall it, was roughly "I think it is
>    defensible in principle, but it caused so many complaints that
>    newer versions of the compiler don't do it".
>
>Are your cases of justifiable pornography sufficiently specific that
>they should appear in the standard?  I believe the standard must be
>precise here, and the ``so many complaints'' lead me to believe that
>the answer must be in favor of guaranteed execution of side-effects.
I would prefer to see some guarantee that side effects will occur.
Guarantees as to precisely *when* are problematical, and since such
have never been made, should not be part of the standard.  So let
us say that
	if (*p++ & *q++)
and
	a = *p++ * *q++;
and even
	a = 0 * *p++ * *q++;
must always increment both p and q, but not in any particular order,
so long as the memory references use the values p and q have before
they are incremented.
Should we also say that the memory references in the third expression
must occur?  If not, the compiler can optimise this into
	p++, q++, a = 0;
but if so, must the compiler also do the multiply?  (It might
overflow, which could be important.)
--
In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 7690)
UUCP:	seismo!mimsy!chris	ARPA/CSNet:	chris at mimsy.umd.edu
    
    
More information about the Comp.lang.c
mailing list