bitwise short-circuiting

der Mouse mouse at mcgill-vision.UUCP
Thu Mar 10 17:01:23 AEST 1988


In article <9130 at ism780c.UUCP>, news at ism780c.UUCP (News system) writes:
< Chris Torek writing about optimizing expressions like:
<	a = 0 & f();	(void) f(), a = 0	if (1 | g()) s1; else s2;
< [says that f() and g() can't be eliminated unless the compiler can
< determine they are side-effect-free]

< Chris, how do you justify the above assertion?  I just got my copy of
< the the proposed standard (11 Jan 88 version).  On page 51 the
< semantics of the bitwise & operator is defined. I quote:

<	[Usual arithmetic conversions happen]
<	[Result is bitwise AND of operands]

< I could not find any thing in the standard that requires evaluation
< of side effects of the operands if the result can be determined
< without evaluating the operands.

Oh no.  Someone tell us this isn't really so....please....?  This would
definitely violate the Principle of Least Surprise, particularly when
there's a constant operand that's a configuration macro or something of
that sort....  Take this to the extreme and you can throw away all
function calls whose results aren't used (and which take no pointer
arguments)!

					der Mouse

			uucp: mouse at mcgill-vision.uucp
			arpa: mouse at larry.mcrcim.mcgill.edu



More information about the Comp.lang.c mailing list