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 ...