[comp.os.minix] Disk performance, and a compiler bug

edb_tom@tor.nhh.no (Tom Ivar Helbekkmo) (08/20/89)

First:  I've applied Bruce Evans' changes to fs/buf.h and fs/cache.c,
delaying write for all but superblock and map blocks, and flushing all
dirty blocks on a device when one needs flushing.  Sure works -- when
I copy large files around, I now get about 30 - 35 percent increased
throughput!  Also, I can tell by the sound of the hard disk that it's
being treated much better -- it used to thrash the heads around quite a
bit, which it now does to a much smaller extent.  Thanks, Bruce!

Second:  I've come across a bug in the compiler (the 1.2 version for the
PC).  If I compile this little C program:

#include <stdio.h>

int    main (argc, argv)
int    arc;
char **argv;
{
    long  a = 0L;
    char *p = "Some string";

    a += 0xFF & *p++;
    printf("a is now %ld\n", a);

    exit(0);
}

the compile fails with the "Error: Bombed out of codegen" message.  When
a is an int it works OK.  Casting, as in

	a += (long) (0xFF & *p++);

does not fix it, neither does parenthesizing.  Changing the line to

	a = a + 0xFF & *p++;

works OK.  Since I don't have source code for the compiler, I can't look
into the matter that way -- so I'll leave it up to someone who can... 

-tih

---------------------------------------------------------------------------
Internet: <edb_tom@tor.nhh.no>    | Tom Ivar Helbekkmo, NHH, Bergen, Norway
EAN:      <helbekkmo@nhh.uninett> | Phone: +47-5-959205(W), +47-5-960561(P)
BITNET:   <thelbekk@norunit>      | MS-DOS and OS/2?  Just say NO!      :-)