HBO043%DJUKFA11.BITNET@cunyvm.cuny.edu (Christoph van Wuellen) (06/13/90)
This patch comes so quickly after patch_4 due to a bug report I got over the net. But most of the stuff is that I changed the DIAG-messages to fatal error messages. Yes, I failed to implement error recovery, so inconsistencies yield to compiler termination now. The bug affected commands/nroff/macros.c and commands/nroff/strings.c. It is a bug in the register allocator: Register could be dumped in the wrong order when they were saved across function calls (strlen in this case). What surprised me most is that I checked all C-sources in fs mm kernel commands lib/* commands/bawk commands/nroff commands/mined commands/sh commands/make and I only found these two files metioned affected. I fixed this problem quickly yesterday, but today I decided to re-write the register allocator (register.c), which will be supplied completely (not a cdiff) in the patch. I built in several consitency checks, so errors here or in the code generator (take care of the right order of freeop, validate etc!) will be flagged (in the past, such errors simply led to wrong code). You don't have to recompile everything, as I checked most of the MINIX sources if the output of the old and the new compiler is different (see the list above). A subsequent posting contains the patch itself..... Thanks to the person which dropped me a note, since I don't use nroff, I would not have found the error in years....... With YOUR help, we can make C68 reliable.... C.v.W.