NetBSD/usr.bin/yacc/NOTES
perry 9f1056ccbf Major modernization.
1) register variables have been killed, except for the ones in the
   generated skeleton (which should probably also be killed soon).
2) __P(())ified prototypes for all functions.
3) new style __RCSID's, and #include <sys/cdefs.h>'s.
4) all warnings generated with WARNS=1 (i.e. all warnings you get from
   gcc with -Wall -Wstrict-prototypes -Wmissing-prototypes) have been
   fixed, although not always in the best possible way.

in particular on #4, in a couple of places I got "control reaches end
of non-void function" errors, and sadly __dead doesn't seem to really
work, so I inserted a couple of exit() calls in strategic
places. These should be nuked if someone can get __dead to Do The
Right Thing.

There were also a couple of places where "while (foo = bar)" things
cropped up and I didn't do the best conceivable thing, but I usually
did.

These fixes should probably go back to the byacc maintainers.
1997-07-25 16:46:27 +00:00

19 lines
945 B
Plaintext

$NetBSD: NOTES,v 1.2 1997/07/25 16:46:29 perry Exp $
Berkeley Yacc reflects its origins. The reason so many routines
use exactly six register variables is that Berkeley Yacc was
developed on a VAX using PCC. PCC placed at most six variables
in registers. I went to considerable effort to find which six
variables most belonged in registers. Changes in machines and
compilers make that effort worthless, perhaps even harmful.
[Given the previous paragraph, and the fact that GCC does not respect
register declarations, and the fact that much of the rest of the
4.4lite2 release had "register" declarations extirpated, I've removed
most of the register declarations from the code. I left them in the
generated skeleton code "for the hell of it" but they probably should
go from there, too. -- pm, July 1997]
The code contains many instances where address calculations are
performed in particular ways to optimize the code for the VAX.