[comp.os.minix] c68 II patch 4

HBO043%DJUKFA11.BITNET@cunyvm.cuny.edu (Christoph van Wuellen) (10/19/90)

Here is patch #4 for c68 II.
patch_04a contains the whole support library since there was so much confusion
patch_04b contains the changes to the compiler, as documented below.

The compiler now dhrystones better than 1000 D/s on an 8MHz 68000.

For some of you who reported bootstrap problems, a GNU-compiled binary
of c68 II.4 (that means, with these patches included), is provided.

The posting contains:
patch_04a.Z     - the support library
patch_04b.Z     - the compiler patches
c68.gcc.Z       - GNU compiled compiler binary


changes
=======

expr.c:
=======

in expr1 ? expr2 : expr3, allow expression lists (comma operators) in expr2.

gencode.c:
==========

several improvements concernint the optimization,

in expr1 ? expr2 : expr3, the register for the result value must be allocated
IN ADVANCE

a typo in bitfield references was fixed

the /= operator is allowed for (unsigned) char now


getsym.c:
=========

character constants like '\377' are NEGATIVE INTEGERS now, since characters
are signed in this implementation, thus,

char c;

c = '\377';

if (c == '\377') ....  this is executed now.


floating point constants that begin with a dot may contain an exponent now,
thus

.1234e-5 is allowed now.

optimize.c
==========

several improvements concerning optimization,

mod_mask() changed from int to long,

const_expr ? expr1 : expr2 is optimized

en_not, en_uminus, and en_compl cancel, if they occur twice,

not(not(expr)) ==> expr

some nodetypes (<=, >= etc) were forgotten in opt0()


peepgen.c:
==========

(this work was done by a contributor from the net)

added peep_movem: movem-instruction that save only one register are not
efficient, use move instead

peep_bxx:

change

...
bne _1
bra _2
_1:
...

to

...
beq _2
...