From: William H. N. <wil...@ai...> - 2000-11-27 15:05:42
|
On Mon, Nov 27, 2000 at 10:57:54AM +0100, ma...@at... wrote: > Hi, > > trying to get the signal stuff working, I came up with a patch that > corrects > for some type declarations in the runtime-system, removes some unused > variables, > so that fewer warnings are generated, when compiling. > Additionally, I modified the makefile, compiling with -O3 and removing a > non-optimization-option, > and for now it worked. Thank you! I did notice one apparent problem with the patch. You added initial values to lots of variables in order to work around the way GCC doesn't understand control flow and issues bogus warnings about uninitialized variables, which is good. In gencgc.c, you had > - int *page_start, i; > + int *page_start, i = 0; presumably for the same reason. However, in this case the uninitialized use of 'i' below page_start = (int *)page_address(i); seems to be a real bug, not just GCC simple-mindedness. When you initialize 'i' to an arbitrary value, you don't fix the bug, you just hide it so that GCC doesn't generate a warning any more. CMU CL 18c has the bug fixed, page_start = (int *)page_address(page); and I changed the code to look like that. Other than that, the patch looks good: it'll be delightful not to be flooded with GCC warnings every time I rebuild the system, and better optimization might well help performance (especially for those of us who write code which spends much of its time in GC:-). I've applied the patch and the system is building now. -- William Harold Newman <wil...@ai...> software consultant PGP key fingerprint 85 CE 1C BA 79 8D 51 8C B9 25 FB EE E0 C3 E5 7C |