Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!husc6!cmcl2!brl-adm!brl-smoke!gwyn From: gwyn@brl-smoke.ARPA (Doug Gwyn ) Newsgroups: comp.bugs.sys5 Subject: yet another M32 SGS optim bug fix Message-ID: <6523@brl-smoke.ARPA> Date: Tue, 6-Oct-87 03:20:55 EDT Article-I.D.: brl-smok.6523 Posted: Tue Oct 6 03:20:55 1987 Date-Received: Fri, 9-Oct-87 06:12:28 EDT Organization: Ballistic Research Lab (BRL), APG, MD. Lines: 25 Keywords: DMD M32 SGS optim bug Well, I finally tracked down the last bug I reported for the M32 SGS as found in the 5620 DMD Application Software Development package release 2.0 and most likely in other M32 (3B family) SGS releases. It turns out that the "optimizer" was getting confused when it encountered jmp *.L177(%r0) such as is generated by "comp" for some C switch statements. I investigated several possible patches for this, and decided that the following is probably sufficient. One more of these and I'm likely to fix "cc" so that when its optimizer pass dies, it just uses the unoptimized assembly code. Add code to $DMD/sgs/usr/src/cmd/sgs/optim/m32/func.c as indicated ("DAG" block): /* @(#) func.c: 1.5 7/31/84 */ ... rainsld() ... ppn = getp( pn ); if( *ppn == '*' ) { /* DAG -- added for "jmp *" */ pn->opm = NULL; /* "dst not a simple label" */ continue; } nd r