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.