Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.1 (Tek) 9/26/83; site azure.UUCP
Path: utzoo!watmath!clyde!floyd!vax135!cornell!uw-beaver!tektronix!azure!grahamr
From: grahamr@azure.UUCP (Graham Ross)
Newsgroups: net.lang.c
Subject: Re: C "optimization" (6 of 8)
Message-ID: <2551@azure.UUCP>
Date: Wed, 22-Feb-84 13:06:53 EST
Article-I.D.: azure.2551
Posted: Wed Feb 22 13:06:53 1984
Date-Received: Fri, 24-Feb-84 00:09:29 EST
References: <211@mi-cec.UUCP>
Organization: Tektronix, Beaverton OR
Lines: 15

Of course it's fatuous.  The C compiler I use is one-pass.  (Try /lib/ccom
as an interactive filter on the VAX.)  The work required to decide whether
or not to emit .text and .data directives is a great deal.  The general fix
implies some sort of two-pass operation or backstashing.

Similarly, putting L13 in the symbol table for a register mask is done
simply because the register mask word must be emitted at the function's
entry point and the compiler doesn't know how many registers it destroys
until the function's end.  The L13 gets moved to a place before the .word
directive by the optimizer.  (Neatener if you want -- \fIoptimum\fR is Latin
for "best" and Klein's examples show many Bliss failings too.)

I'd like to comment that I don't often pass adjacent (in memory) data
objects to subroutines -- that is, the pushl v. movq argument strikes me
as specious.