|
|
1.1 root 1: Steve's cc386 compiler change log
2: Begun 11/22/91
3:
4: Fri Nov 22 11:51:35 1991 PST
5: n1/i386/tables/assign.t
6: Fixed bug which produced no match in /usr/src/cmd/rmdir.c
7: on line "if ((int)(ptr = ptr) < 0) ...".
8:
9: Fri Nov 22 12:07:23 1991 PST
10: n1/i386/tables/aaddsub.t
11: Deleted bogus SHORT op= REG LONG entry, which produced
12: collect errors on /usr/src/cmd/[mkfs.c|typo.c].
13:
14: Fri Nov 22 23:34:12 1991 PST
15: n1/i386/table1.c
16: n1/i386/tables/assign.t
17: n1/i386/tables/leaves.t
18: n1/i386/tables/relop.t
19: Cleaned up shrink table and improved coding for word and byte
20: operations.
21:
22: Mon Nov 25 17:33:11 1991 PST
23: common/i386/geno.c
24: h/cc1.h
25: h/i386/cc0mch.h
26: h/i386/cc1mch.h
27: h/i386/cc2mch.h
28: h/i386/cppmch.h
29: h/i386/mch.h
30: n0/i386/bind.c
31: n1/i386/altemp.c
32: n1/i386/amd.c
33: n1/i386/tables/Read_me
34: n1/i386/tables/aaddsub.t
35: n1/i386/tables/adiv.t
36: n1/i386/tables/aft.t
37: n1/i386/tables/alogic.t
38: n1/i386/tables/amul.t
39: n1/i386/tables/arem.t
40: n1/i386/tables/mul.t
41: n2/i386/afield.c
42: n2/i386/asm.c
43: n2/i386/emit1.c
44: n2/i386/outcoff.c
45: n2/i386/peep.c
46: n2/i386/unasm.c
47: n3/i386/igen.c
48: Numerous changes, mostly of a cleanup nature,
49: nothing dramatically substantive.
50:
51: Tue Nov 26 17:36:56 1991 PST
52: common/i386/geno.c
53: Changed genafield() OFFS case to fetch ival_t and bump
54: pointer accordingly, to allow writing correct code with
55: 286-based cross compiler.
56: h/cc0.h
57: n0/expr.c
58: Changed ivalexpr() from int to ival_t.
59: n0/i386/bind.c
60: Corrected fieldalign() alignment for members of array type.
61: h/i386/cc2mch.h
62: n1/i386/gen1.c
63: n1/i386/outmch.c
64: n2/i386/emit1.c
65: Changed genone(), gentwo() calls to pass ival_t args correctly.
66: Changed framesize from int to ival_t.
67: n2/i386/peep.c
68: Added code to simplify "cmp %eax, $0" to "or %eax, %eax",
69: similarly for byte and word compares.
70: n1/i386/tables/ashift.t
71: n1/i386/tables/shift.t
72: Added comments.
73: n1/i386/tables/assign.t
74: Added PREL cases to improve byte = byte and word = word
75: in relation contexts; this produces better code for
76: while (*cp1++ = *cp2++);
77: n3/i386/igen.c
78: Minor change to output format for align ops.
79:
80: Wed Nov 27 15:16:14 1991 PST
81: n1/i386/tables/leaves.t
82: Added ADR entries to the shrink table to handle shrinks
83: of auto items.
84: n1/i386/tables/shift.t
85: Changed shift node types from LONG to DWORD, because
86: e.g. "cp = (char *)(n * 2);" produced a no match before;
87: the multiply optimized to a left shift node with type PTR.
88:
89: Fri Nov 29 11:23:11 1991 PST
90: n0/cc0key.c
91: n0/sharp.c
92: n0/i386/bind.c
93: Implemented "#pragma alien [n]".
94:
95: Mon Dec 2 15:48:34 1991 PST
96: n0/sharp.c
97: Fixed implementation of #pragma alien.
98: h/i386/mch.h
99: n2/i386/peep.c
100: n2/i386/asm.c
101: Moved macro definitions from peep.c to mch.h to clarify
102: code, simplified asm.c accordingly.
103: h/i386/cc2mch.h
104: n0/i386/bind.c
105: n1/i386/gen1.c
106: n2/i386/emit1.c
107: n2/i386/getcod.c
108: Allow EBX as register variable. Change prolog and epilog
109: to save/restore EBX/ESI/EDI only if required, after the
110: stack auto adjust rather than before.
111:
112: Tue Dec 3 10:19:01 1991 PST
113: h/i386/cc1mch.h
114: h/i386/cc2mch.h
115: h/i386/cc3mch.h
116: h/i386/mch.h
117: Changed coding of address mode bits to support SIB.
118: Moved common type definitions into mch.h.
119: n1/i386/gen1.c
120: Simplified coding of register -> index register correspondence.
121: n0/i386/bind.c
122: n1/i386/amd.c
123: n1/i386/gen2.c
124: n2/i386/afield.c
125: n2/i386/asm.c
126: n2/i386/emit1.c
127: n2/i386/peep.c
128: n3/i386/icode.c
129: Changes for new SIB tree flag encoding and new macros.
130:
131: Wed Dec 4 19:37:08 1991 PST
132: n1/i386/tables/prefac.f
133: Deleted unused pattern abbreviations.
134:
135: n1/i386/tables/addsub.t
136: n1/i386/tables/shift.t
137: Fixed minor (but deadly) code table bugs.
138:
139: Wed Dec 4 21:32:55 1991 PST
140: n2/i386/optab.c
141: Changed addw, and, andw, or, orw, xor, xorw type from OF_DOP
142: to OF_DOPS. This tells the assembler to use short form
143: with sign-extended immediate byte operand, saving 3 bytes each.
144:
145: Thu Dec 5 12:40:50 1991 PST
146: h/cc1.h
147: h/i386/cc1mch.h
148: n0/i386/bind.c
149: n1/i386/altemp.c
150: n1/i386/gen1.c
151: n2/i386/emit1.c
152: n3/i386/igen.c
153: Changes to allow >64K autos. Changed int -> ival_t in
154: various places in bind.c and gen1.c, recognized ival_t AUTOS
155: items in igen.c, and changed the prolog/epilog in emit1.c
156: to avoid ENTER if framesize >64K.
157:
158: Thu Dec 5 14:58:57 1991 PST
159: n1/i386/tables/leaves.t
160: Added widen entry for char->word, caught by a no match
161: when compiling cef's unop.c.
162:
163: Sun Dec 8 11:47:00 1991 PST
164: h/i386/cc1mch.h
165: n1/i386/tables/aaddsub.t
166: n1/i386/tables/adiv.t
167: n1/i386/tables/aft.t
168: n1/i386/tables/alogic.t
169: n1/i386/tables/amul.t
170: n1/i386/tables/ashift.t
171: n1/i386/tables/assign.t
172: n1/i386/tables/bef.t
173: n1/i386/tables/leaves.t
174: n1/i386/tables/relop.t
175: n1/i386/reg1.c
176: Changed PSHORT to PBYTE. In tables, deleted PSHORT on word
177: patterns (LO works on any register, including EDI and ESI),
178: left PBYTE on byte patterns (LO LO requires EAX EBX ECX EDX).
179: n1/i386/mtree2.c
180: Fixed modoptab[].
181:
182: Mon Dec 16 12:26:39 1991 PST
183: The following changes were made at MWC 12/9-13/91:
184: h/cc0.h
185: n0/cc0key.c
186: n0/sharp.c
187: Added "#ident" keyword, as requested by hal.
188: n0/gdecl.c
189: n0/i386/bind.c
190: Changed parser to round up structure sizes
191: as required for BCS compatability.
192: Corrected bug in finding alignment of array structure members.
193: h/i386/cppmch.h
194: Changed MACHINE from "I386" to "_I386".
195: h/i386/mch.h
196: Corrected definition of NRREGS, deleted NBPSTRG.
197: h/i8086/mch.h
198: Deleted NBSTRG, added saligntype() macro instead.
199: n1/i386/gen2.c
200: Added sleazy hack to allow initializers like
201: "int i = (int)&foo;", used by Ciaran in the system.
202: n1/i386/tables/adiv.t
203: n1/i386/tables/aft.t
204: n1/i386/tables/amul.t
205: n1/i386/tables/and.t
206: n1/i386/tables/orxor.t
207: n1/i386/tables/rem.t
208: Recoded table entries using EDXEAX as node register.
209: Changed code table entries to fix minor bugs discovered
210: while recompiling system, mostly by changing node types
211: from LONG to DWORD to include nodes cast to (char *).
212: n3/i386/icode.c
213: n3/i386/igen.c
214: Changed assembler output symbols to correspond with Esix
215: assembler, as required by cef's as386.
216:
217: Mon Dec 16 14:48:24 1991 PST
218: n2/i386/asm.c
219: At cef's suggestion, changed asm() to use the imm8 form
220: for add/sub/cmp/and/or/xor with EAX as left operand.
221: Saves two bytes per opcode.
222:
223: Mon Dec 16 15:27:44 1991 PST
224: h/coff.h
225: Added "#pragma align" lines to avoid unwanted padding of
226: structures defining parts of COFF file.
227:
228: Wed Dec 18 17:36:41 1991 PST
229: Extensive changes to implement IEEE software fp,
230: using support routines called directly from code
231: tables rather than calls generated in modify phase.
232:
233: common/i386/regnam.c
234: h/i386/cc1mch.h
235: h/i386/mch.h
236: n1/i386/gen1.c
237: n1/i386/table1.c
238: Deleted register FPAC, software fp now uses EDXEAX instead.
239:
240: n1/i386/gen1.c
241: In coderinit(), added code similar to i8086 cc code.
242: This code zaps DECVAX or NDP code table entries if the
243: compiler is using IEEE software fp.
244: Corrected DCON code, which passed 16-bit pieces of DCON
245: rather than 32-bit pieces.
246:
247: n1/i386/mtree2.c:
248: Extensively simplified modoper() and modxfun(), because
249: DECVAX or IEEE software fp no longer require modify phase
250: to insert calls. Generating the calls directly from the
251: code tables allows more efficient calling sequence (using
252: registers to pass parameters) and allows the code selector
253: to generate stack temp save/restore for intermediate results
254: as required.
255:
256: n1/i386/outmch.c
257: Modified maptype() so that [TL ZMOVSX] just means ZMOV
258: for 32-bit operand; allows simpler table encoding.
259:
260: n1/i386/Makefile
261: n1/i386/tables/aadd.t
262: n1/i386/tables/add.t
263: n1/i386/tables/asub.t
264: n1/i386/tables/sub.t
265: Split aaddsub.t into aadd.t and asub.t;
266: split addsub.t into add.t and sub.t.
267: Added DECVAX/IEEE software floating point entries.
268: These changes were required by the (trivial) difference
269: between software fp calls to _dadd and _dsub,
270: it would be nice to merge the tables again but I don't
271: see how to do it right now.
272:
273: n1/i386/tables/adiv.t
274: n1/i386/tables/amul.t
275: n1/i386/tables/assign.t
276: n1/i386/tables/div.t
277: n1/i386/tables/leaves.t
278: n1/i386/tables/mul.t
279: n1/i386/tables/neg.t
280: n1/i386/tables/relop.t
281: Added DECVAX/IEEE software floating point entries.
282:
283: Thu Dec 19 14:27:26 1991 PST
284: n1/i386/mtree2.c
285: Corrected bug introduced yesterday causing bad AID/PID offsets.
286: n2/i386/asm.c
287: Corrected bug in code generation for immediate shifts
288: by 16 or more.
289:
290: Thu Dec 19 15:51:39 1991 PST
291: n2/i386/emit1.c
292: Changes for -VPROF option: profile block is 12 bytes, not 8;
293: use register %ecx, not %ebx.
294:
295: Tue Jan 7 14:14:38 1992 PST
296: h/i386/cppmch.h
297: h/i8086/cppmch.h
298: n0/cc0.c
299: At cef's request, made cpp automatically define "_IEEE"
300: or "_DECVAX" to indicate the selected fp format.
301:
302: n1/i386/tables/Read_me.fp
303: n1/i386/tables/aadd.t
304: n1/i386/tables/add.t
305: n1/i386/tables/adiv.t
306: n1/i386/tables/amul.t
307: n1/i386/tables/asub.t
308: n1/i386/tables/div.t
309: n1/i386/tables/leaves.t
310: n1/i386/tables/mul.t
311: n1/i386/tables/neg.t
312: n1/i386/tables/relop.t
313: n1/i386/tables/sub.t
314: Further changes for IEEE software fp.
315:
316: n1/i386/tables/leaves.t
317: Fixed bug reported by cef: the widen entries incorrectly
318: specified ADR|IMM rather than ADR as operand for "movsxb",
319: so asmgen() correctly complained about the generated opcode.
320:
321: Thu Jan 9 14:33:05 1992 PST
322: n1/i386/tables/leaves.t
323: Fixed another bug reported by cef: no match for shrink
324: of double to short. The shrink tables included double->[u]int
325: and float->[u]int for IEEE software fp; changed node flags
326: so the same entries work for double|float->[u]short|[u]char.
327:
328: Wed Jan 15 14:17:24 1992 PST
329: n0/ddecl.c
330: n0/i386/bind.c
331: Fixed bug related to bitfield alignment. For an int bitfield
332: starting at bit 15 of a 4-byte struct, the compiler previously
333: incorrectly generated dword AND and OR instructions starting
334: at bit 7 of byte 1, rather than bit 15 of byte 0; thus, the
335: AND and OR could run past the end of the structure. Added
336: routine "int faligntype(t)" in bind.c, called from ddecl.c.
337: h/i8086/cc0mch.h
338: Added "#define faligntype(t) 1" in keeping with above change.
339:
340: Thu Jan 16 00:08:47 1992 PST
341: coh/cc.c
342: Added definition of DTEFG ("_dtefg_" or "_dtefg") and
343: made -f use it, so cc386 -f undefines the right name.
344: n1/i386/tables/leaves.t
345: Reordered HI and LO halves of fp loads, for consistency.
346: n1/i386/tables/relop.t
347: Changed _dcmp call to not adjust ESP on return;
348: _dcmp now pops its argument, making it easier for the call
349: to leave the flags and all registers unchanged.
350:
351: Fri Jan 17 15:24:06 1992 PST
352: n1/i386/tables/leaves.t
353: Hacked double->int shrink entries to avoid nasty EDX bug.
354:
355: Thu Jan 30 12:07:01 1992 PST
356: Fixed bug reported by piggy, incorrect code for e.g.
357: "foo == -1" conditional when foo is unsigned short.
358: h/i386/cc1mch.h
359: Changed tree flags T_BYTE and T_WORD to T_SBYTE, T_UBYTE,
360: T_SWORD, T_UWORD with appropriate ranges; in passing, added
361: T_SHCNT for shift counts (0 to 31).
362: n1/i386/amd.c
363: Changed amd() to set new byte, word and shift count tree flags.
364: n1/i386/tables/amul.t
365: n1/i386/tables/mul.t
366: Changed multiplication by immediate byte to use T_SBYTE.
367: n1/i386/tables/ashift.t
368: n1/i386/tables/shift.t
369: Changed shift tables to use T_SHCNT flag rather than T_BYTE.
370: n1/i386/tables/relop.t
371: Split relational T_WORD and T_BYTE table entries to fix
372: the reported problem.
373:
374: Thu Jan 30 16:55:26 1992 PST
375: h/i386/cc1mch.h
376: Nonsubstantive changes to composite tree flag definitions,
377: for readability.
378: n1/i386/amd.c
379: Modified amd() so REG does not set T_DIR flag, to allow
380: code tables to distinguish T_DIR from T_REG.
381: n1/i386/tables/leaves.t
382: Modified widen and shrink tables by splitting T_DIR entries
383: from T_REG entries, allowing correct register specifications
384: on the latter.
385: n2/i386/asm.c
386: Added aerr() checking to ZMOV (register/register)
387: and ZMOVSX/ZMOVZX opcodes; these checks detect the cases
388: which were producing incorrect code before the above fixes.
389:
390: Mon Feb 3 12:59:57 1992 PST
391: n1/i386/tables/ashift.t
392: Modified entries using ECX for shift count. cef's binop.c
393: revealed that the old versions sometimes clobbered ECX while
394: it was being used for indexing.
395: n2/i386/asm.c
396: Improved ZMOV error checking code to report more bogus cases.
397:
398: Tue Feb 4 17:34:47 1992 PST
399: n1/pool.c
400: Added "p_type" member to pool struct; save and compare type
401: of pooled constants. This prevents e.g.
402: (char)0 creating pooled .byte 0, to which subsequent dword
403: constant 0 would incorrectly refer.
404: n1/i386/tables/leaves.t
405: Added immediate S32 and U32 entries to widen to double
406: table, to prevent S32 and U32 constants from being pooled.
407:
408: Wed Feb 5 00:58:43 1992 PST
409: n0/expr.c
410: In build(), corrected ASHL/ASHR/SHL/SHR parsing. The old
411: code generated an unsigned shift for e.g. int >> uint.
412:
413: Thu Feb 6 09:53:44 1992 PST
414: n1/i386/tables/leaves.t
415: In IEEE/DECVAX software fp load addressible double entry,
416: added bogus left spec EDX to prevent EDX from being used
417: for indexing (which would make the second fetch invalid).
418:
419: Thu Feb 6 10:35:24 1992 PST
420: n2/i386/optab.c
421: Corrected incorrect opbits for salw, sarw, shlw, shrw.
422: The compiler was putting out byte move bits rather than
423: word move bits.
424:
425: Thu Feb 6 11:58:45 1992 PST
426: n1/pool.c
427: Rewrote DCON compare and copy loops using memcmp() and memcpy().
428: common/talloc.c
429: Rewrote talloc() to zero tree node with memset().
430:
431: Thu Feb 6 14:13:54 1992 PST
432: h/cc0.h
433: Added macros sgn2uns() and uns2sgn() used by expr.c kludge.
434: n0/expr.c
435: In build(), added ADIV/AREM code to preserve unsigned right
436: operands, with lengthy explanatory comment.
437: n1/i386/tables/adiv.t
438: n1/i386/tables/arem.t
439: Modified to do unsigned divide if either operand is unsigned.
440:
441: Fri Feb 7 15:38:43 1992 PST
442: n1/i386/tables/adiv.t
443: n1/i386/tables/arem.t
444: Corrected signed [char|short] / unsigned to sign-extend the
445: result in value context.
446: Fri Feb 7 16:49:40 1992 PST
447: n1/out.c
448: Added code at label outadr to call new function mappfx()
449: if opv is nonzero; mappfx() generates LO LO or LO prefix
450: bytes for byte or word operands. This allows the code tables
451: to apply the TL, TR and TN macros to register operands,
452: so similar code table entries can be merged.
453: This greatly simplifies the tables.
454: n1/i386/outmch.h
455: Added function mappfx().
456: Added ZTEST to opcode list understood by maptype().
457: h/i8086/cc1mch.h
458: Defined mappfx() to cause a cbotch() error; the i8086 code
459: tables do not currently use TL, TR or TN as outlined above.
460: n1/i386/tables/prefac.f
461: Added definitions SINT, UINT and FLD, useful in merged
462: code table entries.
463: n1/i386/tables/div.t
464: n1/i386/tables/rem.t
465: Added comments, no significant changes.
466: n1/i386/tables/aadd.t
467: n1/i386/tables/adiv.t
468: n1/i386/tables/add.t
469: n1/i386/tables/aft.t
470: n1/i386/tables/alogic.t
471: n1/i386/tables/amul.t
472: n1/i386/tables/and.t
473: n1/i386/tables/arem.t
474: n1/i386/tables/ashift.t
475: n1/i386/tables/assign.t
476: n1/i386/tables/asub.t
477: n1/i386/tables/bef.t
478: n1/i386/tables/leaves.t
479: n1/i386/tables/sub.t
480: Simplified by merging code table entries with TL macro.
481:
482: Sun Feb 9 13:27:52 1992 PST
483: n1/i386/tables/leaves.t
484: n1/i386/tables/relop.t
485: Combined a few more code table entries using TL.
486: n1/i386/reg1.c
487: Added test for byte left or right type in bytereg();
488: the modified code tables use PBYTE on entries which can
489: be used for dword and word as well as for byte.
490:
491: Tue Feb 11 11:44:27 1992 PST
492: n1/i386/tables/sub.t
493: Corrected node type of DWORD - DWORD from LONG to DWORD,
494: so that pointer - int subtraction works.
495:
496: Thu Feb 20 17:02:07 1992 PST
497: n0/i386/bind.c
498: At cef's instigation, forward struct/union/enum references
499: now generate a cerror() complaining that the alignment of
500: the object is unknown rather than a cbotch().
501: n1/i386/tables/leaves.t
502: Added PTX to _ducvt patterns to avoid no match on
503: pointer to double conversions; yuck.
504: n1/i386/outmch.c
505: In outargs(), corrected stack adjust after memcpy() call
506: from 8 to 12 bytes; structure args were simply wrong before.
507:
508: Thu Feb 20 22:40:58 1992 PST
509: n0/gdecl.c
510: In genum(), added local envmin to keep track of min value of
511: enumeration. The type was previously set to unsigned char
512: (incorrectly) when enumeration contained a value less than 0.
513:
514: Thu Feb 20 23:41:23 1992 PST
515: n2/i386/asm.c
516: In BLOCK code, added "if (pass != 0)" to else statement.
517: The old code was incorrectly writing BLOCK bytes more than once.
518:
519: Fri Feb 21 08:49:11 1992 PST
520: h/cc1.h
521: n1/mtree1.c
522: n1/i386/mtree2.c
523: n1/i8086/mtree2.c
524: Added new routine lval_t constcvt(t, val) to convert
525: lval_t constant val to type t; called from machine-independent
526: tree modifier in mtree1.c for casts and conversion nodes.
527: For code like
528: int x = (unsigned char)-1;
529: the code generator was previously modifying the rhs from
530: (S32)(U8)((S32)-1) to (S32)((U8)-1) to ((S32)-1),
531: without actually truncating the bits in the constant.
532: constcvt(U8, (lval_t)-1) now converts the bits to 255,
533: giving the expected result.
534:
535: Wed Mar 4 15:11:14 1992 PST
536: n0/get.c
537: In get(), changed case DIV to not perform special comment
538: processing if cstate!=0, i.e. in false conditionals.
539: michael reported a bug with incorrect processing of the
540: quoted string "/*.*" in a false conditional.
541:
542: Fri Apr 3 23:11:18 1992 PST
543: Fairly extensive changes to allow building i386
544: compiler as monolithic compiler rather than as driver
545: with exec'ed phases. To build a monolithic compiler,
546: OVERLAID and MONOLITHIC in "host.h" must both be 1.
547: For in-core tempfiles, TEMPBUF in "mch.h" must also be 1.
548: Makefile
549: coh/Makefile
550: common/Makefile
551: n0/Makefile
552: n1/Makefile
553: n2/Makefile
554: n3/Makefile
555: Add target "mcc" for monolithic COHERENT compiler.
556: Added targets cc[0123].a used in building monolithic compiler.
557: Change "ar" references to "$(AR)" to allow building
558: native cc386 compiler on cross system.
559: coh/cc.c
560: Revised to produce monolithic COHERENT compiler
561: with in-core tempfiles. Added -Lpathname option,
562: passed to linker. Added -T[value] option to specify
563: size of in-memory tempfiles (default: 64K).
564: common/talloc.c
565: Add routine freetree() to free tree nodes if monolithic.
566: h/host.h
567: Define OVERLAID and MONOLITHIC as 1 if _I386,
568: to make i386 compiler monolithic instead of phases.
569: h/i386/mch.h
570: Change TEMPBUF to 1 for monolithic compiler.
571: n0/cc0.c
572: Modified fairly extensively for monolithic compiler.
573: Added cppfinal().
574: n0/cc0key.c
575: Changed keyword initialization extensively
576: to work correctly for monolithic compiler.
577: n0/cc0sym.c
578: Added code to free INFO and DIM pointer chains of symbols
579: in downlex().
580: n0/cpp.c
581: Added code to free hide sets if monolithic.
582: n0/gdecl.c
583: In cast(), added xdropinfo() call so that INFO items
584: get dropped appropriately after cc0.
585: Added code to allow (with warning) trailing ',' in enum list.
586: n0/i386/bind.c
587: Added MONOLITHIC initialization in vinit().
588: n1/cc1.c
589: Changed freenode() calls to freetree().
590: n1/node.c
591: Delete freenode(). Other minor cosmetic changes.
592:
593: n2/i386/outcoff.c
594: Added MONOLITHIC initialization.
595:
596: h/cc0.h
597: Changed size of define buffer for _I386 only, from 1K to 2K,
598: as requested by Esa Ahola via norm.
599:
600: Tue Apr 28 11:01:52 1992 PDT
601: n0/cc0key.c
602: n0/expand.c
603: Conditionalized out __STDC__. The ANSI C Standard says
604: a nonconforming compiler should define __STDC__ as 0,
605: which the source did (correctly), but too many sources
606: use #ifdef __STDC__ (incorrectly) rather than #if __STDC__,
607: so the source now does what the misguided users expect.
608:
609: Tue Apr 28 11:43:32 1992 PDT
610: n0/expr.c
611: In build(), added code to allow users to write
612: (sp->fn)();
613: (horseshit code, sez norm) when they really mean
614: (*(sp->fn))();
615: This now gives an "implicit '*' added to function call"
616: warning when this happens.
617:
618: Tue Apr 28 11:47:46 1992 PDT
619: h/ops.h
620: Changed NCSYMB from 128 to 256, to allow longer symbols,
621: as requested by norm.
622:
623: Tue Apr 28 14:32:19 1992 PDT
624: n1/i386/mtree2.c
625: In modcall(), added call to fixtoptype().
626: This fixes a bug which caused e.g.
627: return (*(sp->pcf))();
628: to fail with an aerr; here pcf is a pointer to a function
629: returning char (not int). I think it's wrong in the parser,
630: but the fix in cc1 was the simplest I could find.
631:
632: Tue Apr 28 15:01:07 1992 PDT
633: common/bput.c
634: Added #if TEMPBUF code to realloc temporary buffers when
635: cc runs out of space.
636: h/stream.h
637: Added definition of tempsize, required by bput.c change.
638:
639: Tue Apr 28 16:06:56 1992 PDT
640: coh/cc.c
641: n2/i386/outcoh.c
642: n2/i386/outcoff.c
643: n3/cc3.c
644: n3/i8086/igen.c
645: n3/i386/igen.c
646: Modified compiler to put strings in text segment by default.
647: Set -VPSTR by default, and put strings in data segment if
648: -VPSTR is toggled (reset). Modify the disassembler accordingly.
649:
650: Wed Apr 29 13:04:12 1992 PDT
651: coh/cc.c
652: Changed driver to exec ld rather than forking if _I386.
653: Pass new -Z option to ld to remove object if appropriate.
654: Added _addargs() call to process CCHEAD and CCTAIL.
655:
656: Wed Apr 29 15:52:30 1992 PDT
657: n0/i386/bind.c
658: Corrected fieldalign(). This fixes a bug discovered by michael:
659: a #pragma align, the old code sometimes bumped bitfields to the
660: next char/word/dword boundary inappropriately.
661: coh/cc.c
662: Fixed driver to do -A correctly if monolithic and to
663: reinitialize global nerr (diag.c error count) appropriately.
664:
665: Thu Apr 30 16:41:26 1992 PDT
666: coh/cc.c
667: Added -f option in runas() for _I386.
668: n3/i386/icode.c
669: n3/i386/igen.c
670: Added routine istring() to disassemble strings as readable text.
671: Changed assembler -S output to write .link and .string for
672: SLINK and SSTRN, because otherwise they end interspersed with
673: code in the text segment.
674:
675: Thu Apr 30 17:13:56 1992 PDT
676: n2/i386/unasm.c
677: Fixed bogus branch over branch code, a vestige of i8086,
678: no longer required.
679:
680: Thu Apr 30 17:56:56 1992 PDT
681: n0/sharp.c
682: Added code (flying jump into middle of switch, gak) to
683: allow "# 123" as alternative to "#line 123" per ATT.
684:
685: Fri May 1 13:59:28 1992 PDT
686: n1/i386/tables/leaves.t
687: Corrected floating -> integer shrink entries to fix
688: regression suite bug discovered by cef.
689:
690: Thu May 7 00:41:04 1992 PDT
691: n0/cc0.c
692: Rewrote cppfinal() slightly to correct bug: e.g.
693: #define void int
694: resulted in "Bad pointer in free" when cppfinal()
695: tried to free the keyword table entry by mistake.
696:
697: Thu May 7 12:32:35 1992 PDT
698: coh/cc.c
699: Added code to err_close() to copy warning messages
700: to stdout; cef noted that they were disapearing
701: under -A if parsing was otherwise successful.
702:
703: Thu May 7 14:31:59 1992 PDT
704: n3/cc3.c
705: n3/i386/igen.c
706: n3/i8086/igen.c
707: Added cc3close() to cc3.c and dummy cc3close() in i8086/igen.c.
708: Modified i386/igen.c to write each output segment to a
709: separate temp file, then combine the files at the end.
710: This allows the assembler to assemble the .s output and
711: produce (we hope) the same bits as the compiler .o output.
712:
713: Tue May 12 11:52:14 1992 PDT
714: h/cc0.h
715: Bumped _I386 value of NDBUF (again) from 2048 to 4096,
716: Esa Ahola reported that Gnu code included horrible
717: macros which expanded to more than 2K characters.
718:
719: Tue May 12 13:25:41 1992 PDT
720: n1/output.c
721: In output() isrelop code, added test for op==QUEST at end.
722: The code output routine contained a longstanding bug:
723: in a relational context, a comma operator with a ?: on
724: the rhs produced a "no patp" botch (because it called
725: outtree() on the QUEST tree, rather than trying output() again).
726:
727: Tue May 12 15:58:13 1992 PDT
728: h/i8086/cc3mch.h
729: n3/i8086/igen.c
730: Defined cc3init() and cc3close() as empty macros in cc3mch.h
731: rather than as empty routines in igen.c, for efficiency.
732: These routines are unused for i8086 compiler.
733:
734: Wed May 13 13:12:55 1992 PDT
735: n1/i386/tables/shift.t
736: Changed entry using "shift by %cl" form from ANYR to explicitly
737: use EAX as temp. norm and epstein found a nasty code generation
738: bug caused by using ECX as temp and CL (simultaneously) as
739: shift count, causing incorrect code to be omitted.
740:
741: Thu May 21 09:51:31 1992 PDT
742: n1/i386/tables/shift.t
743: Changed left arg types of both entries from LONG to DWORD.
744: LaMonte discovered that the code
745: ((unsigned long)( &foo )) << 1;
746: gave a no match error.
747:
748: Tue May 26 12:24:41 1992 PDT
749: coh/cc.c
750: At cef's request, modified runld() and runas() #if _I386
751: to supply arguments -q to ld and -w to as if cc -Q used.
752:
753: Tue May 26 15:08:32 1992 PDT
754: cpp/cpp.c
755: Removed test for argc > 1, which allows cpp to be used
756: purely as filter.
757: n0/cc0.c
758: If !MONOLITHIC, added test of argument filename for "-",
759: to allow invocation from cpp with args "cc0 var - -",
760: so cpp can act purely as a filter.
761: host.h
762: Changed MONOLITHIC conditionalization, the right values
763: now depend on how you want to build it.
764:
765: Tue May 26 17:40:13 1992 PDT
766: n1/mtree0.c
767: In modtree(), added code to change "&(a,b)" to "a,&b".
768: Esa reported a fatal collect error due to code like
769: return i = 0, s;
770: where s is a structure type.
771:
772: Wed May 27 08:59:03 1992 PDT
773: n2/i386/asm.c
774: n2/i386/emit1.c
775: n2/i386/outcoff.c
776: At norm's request, modified output writer to emit NOP
777: (0x90, i.e. xchg %eax, %eax) rather than 0 to perform
778: alignment in code segment. This is helpful to disassemblers.
779: outnzb() now takes extra flag arg to indicate segment.
780:
781: Mon Jun 1 15:49:51 1992 PDT
782: n0/gdecl.c
783: In gstruct() and genum(), added code to save and restore
784: global TOK *idp around calls to lex(). This fixes a very
785: venerable bug which cef's test suite calls trevor.c:
786: #define begin {
787: #define end }
788: struct s begin
789: int s_i;
790: end
791: mistakenly defined the struct tag "begin" rather than "s".
792:
793: Mon Jun 1 16:48:26 1992 PDT
794: h/i386/mch.h
795: Corrected definition of UIMASK from 0xFFFFFFFL to 0x00000000L.
796: The definition resulted in bogus promotion warnings.
797:
798: Tue Jun 2 14:49:01 1992 PDT
799: n3/i386/igen.c
800: Added missing "ofp = sfp[SCODE];" in cc3close().
801: The disassembler changes which write each segment to a
802: different temp file needs this, otherwise (as norm noted)
803: files which do not end with code send the final segment
804: to the disassembler bit bucket.
805:
806: Wed Jun 3 08:34:20 1992 PDT
807: coh/cc.c
808: At cef's request, changed runld() to invoke ld -Q rather
809: than ld -q when cc is invoked with -Q.
810:
811: Wed Jun 3 15:46:51 1992 PDT
812: n1/mtree1.c
813: For Promula's benefit, modified NLNODE and NONODE #if _I386
814: from 20 to 128. This allows more complex associative
815: expressions.
816:
817: Fri Jun 5 09:21:47 1992 PDT
818: n1/i386/gen2.c
819: In the double to float conversion routine flvaldval(),
820: added code to perform mantissa rounding. Promula reported
821: that the values produced by float and double initializations
822: were different, because the old code truncated the mantissa.
823:
824: Fri Jun 12 13:16:16 1992 PDT
825: n3/i386/igen.c
826: At cef's request, added "\t.alignoff\n" to cc -S output
827: (after module name). The compiler puts out explicit
828: .align requests as needed, so the assembler should not
829: be performing alignment on its own.
830:
831: Wed Jun 24 11:07:56 1992 PDT
832: n0/cc0.c
833: In cc0() arg handling code, case 'D', add
834: *--p = '+';
835: to restore cpp arg "-DFOO=foo" to its previous state.
836: cc0() was replacing the '=' with NUL, which caused
837: incorrect results for mcc with multiple file args.
838:
839: Wed Jun 24 11:35:40 1992 PDT
840: coh/cc.c
841: In chkofile(), change to allow special case
842: cc -c -o a.out foo.c
843: for the benefit of AT&T Cfront script. Previously,
844: the compiler complained about the funny output name.
845: [This change withdrawn 6/25/92, see next entry.]
846:
847: Thu Jun 25 12:18:44 1992 PDT
848: coh/cc.c
849: Withdrew yesterday's a.out-specific hack.
850: Instead, added new option "-a", which tells cc
851: not to generate a ld output name automatically.
852: Thus, "cc -a foo.c" ends up creating "a.out", as desired.
853:
854: Fri Jun 26 09:08:59 1992 PDT
855: n0/cc0.c
856: 6/24/92 fix for -DFOO=foo caused cc to core dump,
857: now fixed correctly.
858:
859: Mon Jun 29 11:34:16 1992 PDT
860: Changes to allow NDP coprocessor floating point code
861: generation, as follows:
862: h/i386/mch.h
863: Added register FPAC, meaning the coprocessor stacktop %st.
864: Renumbered pseudoregisters accordingly. Added BPFAC.
865: common/i386/regnam.c
866: n1/i386/gen1.c
867: n1/i386/table1.c
868: Modified register tables to include FPAC.
869: Modified pertype table in table1.c to indicate that
870: double functions return value in FPAC #if NDP.
871: n1/i386/tables/leaves.t
872: Changed globals tstccp() and dp87() to _tstccp() and _dp87().
873: n1/i386/tables/relop.t
874: Changed global cfcc() to _cfcc().
875: n1/i386/tables/add.t
876: n1/i386/tables/sub.t
877: n1/i386/tables/aadd.t
878: n1/i386/tables/asub.t
879: Corrected NDP table entries using OP1 to use appropriate
880: fp opcode instead.
881: n1/i386/mtree2.c
882: Deleted bogus '{' in #if NDP code.
883: Added missing #if NDP modxfun() call for float->fixed casts.
884: n2/i386/asm.c
885: Corrected bogus "outsb()" call and A_PREFX code,
886: both artifacts of i8086 NDP code.
887:
888: Wed Jul 1 16:26:09 1992 PDT
889: n2/i386/asm.c
890: Simplified V80287 code, another i8086 remnant. Since the
891: processor is always 80x86, the extra FWAITs preceding
892: coprocessor instructions in i8086 are no longer required.
893: n3/i386/icode.c
894: Renamed NDP floating point opcodes to conform to assembler.
895:
896: Wed Jul 8 15:21:28 1992 PDT
897: n0/stat.c
898: Added code to SWITCH to allow long or unsigned long switch
899: expressions when sizeof(int)==sizeof(long), i.e. for i386.
900: A switch with long switch expression failed before, now works;
901: issues "Strict" warning if -VS specified, silent otherwise.
902:
903: Wed Jul 8 17:08:40 1992 PDT
904: n0/ddecl.c
905: A beta site reported that e.g.
906: enum e { ONE, TWO, THREE };
907: struct s {
908: int s_i;
909: enum e s_e:8;
910: };
911: died with an internal error, traced to fieldalign botch.
912: Changed declare() to adjust the type of a {struct|union} member
913: which is an enum to the base type of the enum, now at least
914: the above example works.
915:
916: Mon Jul 13 11:25:22 1992 PDT
917: common/bput.c
918: Changed error message
919: out of space in memory buffer
920: to
921: out of space in memory buffer; try "-T0" option
922: for the benefit of the poor user.
923: n0/stat.c
924: At norm's suggestion, changed VSCCON code in truth() to
925: run down a list of assignments, so that e.g.
926: if (i = 1)...
927: rather than
928: if (i == 1)...
929: generates a strict message if VSCCON is turned on.
930: h/cc1.h
931: Changed NSTORE from 20 to 100 for i386 only.
932: A beta user reported a "too many stores" internal error
933: on a horrendous line (GNU, of course).
934:
935: Tue Jul 14 13:16:21 1992 PDT
936: n0/gdecl.c
937: In gstruct(), fixed "nbpstrg" code to make sure nbpstrg is
938: nonzero. The old code caused a zero-divide core dump on e.g.
939: typedef union node {
940: struct s1 {
941: int n_type;
942: union node *n_next;
943: };
944: } NODE;
945: when compiled without -VSINU.
946:
947: Thu Jul 16 09:05:41 1992 PDT
948: n0/i386/bind.c
949: In fieldalign(), fixed alignment code yet again.
950: Nested structs or unions were getting dword-aligned
951: rather than aligned according their widest member. Thus,
952: typedef struct match {
953: short ma_dist;
954: union {
955: unsigned short ma_length;
956: unsigned char ma_litc[2];
957: } l;
958: } MATCH;
959: resulted in sizeof(MATCH) being 6, because the union was
960: dword-aligned instead of word-aligned; now sizeof(MATCH) is 4.
961: In aligntype(), recoded loop which runs down DIM list to
962: avoid dereferencing (NULL)->d_type.
963:
964: Thu Jul 16 10:00:33 1992 PDT
965: n3/i386/icode.c
966: In opcode table, changed "movzx" to "movzxw" and
967: "movsx" to "movsxw" to avoid operand length ambiguity.
968:
969: Thu Jul 16 14:57:40 1992 PDT
970: coh/cc.c
971: Recognize new option -VCPPC.
972: h/var.h
973: Added new variant VCPPC, renumbered other variants accordingly.
974: cpp/cpp.c
975: New options -C (invoke cc0 with -VCPPC) and -P (same as -E).
976: Cleaned up code slightly.
977: n0/get.c
978: Added code to not suppress comments if -VCPP and -VCPPC.
979:
980: Wed Jul 29 10:31:39 1992 PDT
981: n0/stat.c
982: In dolabel(), added line to set s_dline field for labels.
983:
984: Wed Jul 29 12:49:49 1992 PDT
985: h/cc0.h
986: At hal's request, bumped NDLEV for i386 from 128 to 256,
987: for the benefit of some C++-generated headers.
988:
989: Wed Aug 5 09:04:53 1992 PDT
990: coh/cc.c
991: Added -g option, same meaning as -VDB, for Unix compatability.
992: n2/i386/outcoff.c
993: Extensive changes to add debug output support.
994:
995: Wed Aug 5 20:17:13 1992 PDT
996: n0/sharp.c
997: Changed cppexpr() to read constant expressions with cstate==0,
998: so that comments are handled correctly.
999:
1000: Thu Aug 6 11:37:45 1992 PDT
1001: n0/init.c
1002: hal noted that the one-liner
1003: char c[] = "abc/*defg";
1004: died with a bogus "EOF in comment" error.
1005: The code which reads a string initializer
1006: now sets the "instring" flag to tell the cc0 lexer
1007: to treat "/*" as ordinary characters, so now it works.
1008:
1009: Fri Aug 7 09:49:26 1992 PDT
1010: n2/i386/outcoff.c
1011: Added "incomplete debug information" fatal messages
1012: for modules compiled with e.g. -VDSYMB rather than -VDB.
1013:
1014: Mon Aug 10 13:13:47 1992 PDT
1015: coh/cc.c
1016: In runld(), changed unconditional arg -X to either
1017: -X (if !-VDB) or -g (if -VDB).
1018:
1019: Mon Aug 11 10:26:58 1992 PDT
1020: coh/cc.c
1021: Changed PTMP from 16 to 32 to allow longer pathnames.
1022:
1023: Tue Aug 11 10:48:09 1992 PDT
1024: n0/init.c
1025: Corrected above change for string initializers to handle
1026: char a[] = "one line and "
1027: "another line\n";
1028: without complaining about newline in string literal.
1029:
1030: Thu Aug 13 15:17:31 1992 PDT
1031: n2/i386/outcoff.c
1032: Modified db_func() to write LNNUM entry for each function.
1033:
1034: Fri Aug 14 12:50:05 1992 PDT
1035: n2/i386/outcoff.c
1036: V4.0.2: Modified to write .comment section containing
1037: translator id and version number if debug.
1038: n1/i386/tables/aft.t
1039: n1/i386/tables/bef.t
1040: Changed node type pointer bumping code table entries from
1041: PTX to DWORD. cef discovered that code like
1042: l = (long)++lp;
1043: caused a no match error.
1044:
1045: Tue Aug 25 10:32:36 1992 PDT
1046: n1/mtree0.c
1047: V4.0.3: In modtree(), in the relational section,
1048: added code to modify
1049: (a ? b : c) op 0
1050: to
1051: a ? b op 0 : c op 0
1052: This fixes a "no match" botch reported by cef for the code
1053: if (!(a ? b : (c & 1)))
1054: ;
1055:
1056: Tue Aug 25 14:11:06 1992 PDT
1057: n0/get.c
1058: V4.0.4: In get(), check cstate in HIGH* case so high-bit-set
1059: characters get ignored inside false conditionals.
1060: n0/lex.c
1061: In lex(), case QUOTE, set 'instring' before reading char
1062: so single-quoted high-bit-set characters work.
1063:
1064: Wed Aug 26 09:21:29 1992 PDT
1065: n0/fold.c
1066: Cosmetic changes only, no substantive change.
1067:
1068: Thu Aug 27 09:34:46 1992 PDT
1069: n0/cc0.c
1070: V4.0.5: Added local argv2, a modified copy of argv[2],
1071: to prevent MONOLITHIC compiler problems with cc -A filename.
1072: Added missing "notskip" initialization #if MONOLITHIC.
1073:
1074: Wed Sep 2 13:26:33 1992 PDT
1075: n3/cc3.c
1076: In main(), added missing "dotseg = -1;" for non-MONOLITHIC.
1077:
1078: Mon Sep 21 10:46:58 1992 PDT
1079: n1/i386/mtree2.c
1080: V4.0.6: In modefld(), fixed bug reported by cef involving
1081: unsigned bitfields (an enum bitfield in the case he discovered
1082: while compiling gcc); basically,
1083: struct s1 { unsigned char c : 2; } s1;
1084: struct s2 { unsigned char c; } s2;
1085: if (s1.c != s2.c) ...
1086: produced a fatal "no match" error which did not happen
1087: if the bitfields were signed rather than unsigned.
1088:
1089: Thu Sep 24 09:26:35 1992 PDT
1090: n0/i386/bind.c
1091: V4.0.7: cef reported another problem from gcc compilation:
1092: enum e { foo, baz, bar };
1093: struct s { enum e s_e:16; }
1094: died on the second line with a fatal "field too wide" error,
1095: because the parser didn't like putting the 8-bit wide enum
1096: into a 16-bit field. I see no reason for this restriction,
1097: so I eliminated the "field too wide" check entirely.
1098:
1099: Wed Sep 30 14:08:21 1992 PDT
1100: coh/cc.c
1101: h/var.h
1102: V4.0.8: Replaced the unimplemented variant option -VCHASM
1103: (generate C-style assember, which rec planned but
1104: never executed, at least in this compiler base) with -VCPLUS.
1105: The latter tells the compiler to ignore
1106: C++ style //-delimited online comments.
1107: n0/get.c
1108: In get(), case DIV, added code to recognize C++ online comments.
1109:
1110: Thu Oct 1 14:36:09 1992 PDT
1111: n1/i386/mtree2.c
1112: V4.0.9: in modlfld(), added code to make the top type
1113: of modified lvalue field tree computation. This fixes
1114: a no match bug reported by cef for assignment of
1115: non-immediate values to char or short bitfields.
1116:
1117: Thu Oct 1 17:10:16 1992 PDT
1118: coh/cc.c
1119: V4.0.A: added missing VWIDEN to variant list to enable
1120: warnings on adjusted formal parameter types.
1121:
1122: Tue Oct 20 07:40:09 1992 CDT
1123: n1/i386/tables/asub.t
1124: Modified NDP code table entry, the old version used ZFSUB
1125: rather than ZFSUBR and thus got the incorrect result sign.
1126:
1127: Wed Oct 21 17:07:42 1992 CDT
1128: h/i386/mch.h
1129: Conditionalized NRREG on #if NDP so that isrealreg() is
1130: true for the FPAC (%st) in the NDP compiler.
1131: n1/i386/table1.c
1132: Conditionalized register table entry for EDXEAX so that
1133: the register kind is 0 #if NDP, KD otherwise, to avoid having
1134: the code generator try to stick NDP doubles in %edx:%eax.
1135:
1136: Thu Oct 22 12:09:24 1992 CDT
1137: h/i386/opcode.h
1138: V4.0.B: added is_ndp_op() macro.
1139: n1/i386/outmch.c
1140: Changed #if NDP code to use is_ndp_op() to determine if
1141: a given opcode is an NDP operation, for the benefit of the
1142: TL/TR/TN macros.
1143:
1144: Mon Nov 2 21:47:00 1992 PST
1145: n2/cc2.c
1146: V4.0.C: Added "gendbgt(-1);" call to reinitialize debug item
1147: count #if MONOLITHIC.
1148: n2/dbgt2.c
1149: Added #if MONOLITHIC code to getdbgt() to reset drefnum = 0;
1150: for arg -1. This fixes a bug reported by CAD-UL:
1151: "cc -g *.c" would botch after the first source file.
1152: n2/i386/outcoff.c
1153: In outdloc(), before the recursive call of outdloc() while
1154: processing member list, added "--refnum;" to fudge the
1155: reference number. This fixes another debug info (-g) problem
1156: reported by CAD-UL: local struct or union declarations
1157: confused the refnum count, so e.g.
1158: f(){ struct s { int s_i; } s; s.s_i = 1; }
1159: caused a compiler botch when compiled with -g.
1160:
1161: Wed Nov 11 16:47:34 1992 PST
1162: n0/expr.c
1163: V4.0.D: Changed the way the expression builder build()
1164: handles voids. nigel motivated this by complaining about
1165: extern void void_fn();
1166: (a) ? (void)0 : voidfn();
1167: not compiling; a more dramatic form of the same problem is
1168: extern void void_fn1(), void_fn2();
1169: (a) ? void_fn1() : void_fn2();
1170: In the old code, void was legal on either side of ","
1171: or lhs of ":" (don't ask why, I don't get it either),
1172: any other usage produced "illegal operation on void type" error.
1173: Now, ":" can have void on both sides (but not on just one side),
1174: "?" can have void on rhs (i.e. on both sides of its ":"),
1175: and "," can have void on either side as before;
1176: all other usages are illegal.
1177:
1178: Fri Nov 13 16:37:30 1992 PST
1179: n2/i386/peep.c
1180: V4.0.E: at cef's suggestion, modified noeffect() to note
1181: that "add %esp, $n" or "pop %ecx" before "leave" has
1182: no effect.
1183: n2/i386/emit1.c
1184: Added comment noting that peep.c/noeffect() knows details
1185: of the epilogue code generation; no substantive changes.
1186:
1187: Mon Nov 23 10:29:05 1992 PST
1188: n2/i386/outcoff.c
1189: V4.0.F: Fixed setrefnum() to create symbol entries for
1190: items with no associated debug information. In particular,
1191: internally generated calls (e.g. "_dicvt" for fp or "memcpy"
1192: for structure assignment) caused fatal errors with -g.
1193: This fixes a bug reported by user H. C. Pulley.
1194:
1195: Wed Dec 2 11:16:19 1992 PST
1196: n0/stat.c
1197: In statement(), case RETURN, added code to check if cfsym==NULL
1198: before fetching through it. The old code produced segmentation
1199: violation core dumps in code where an inadvertent extra '}'
1200: caused the parser to get confused.
1201: n2/optim.c
1202: In fixbr(), added code to optimize out conditional branch
1203: followed by unconditional branch to same location.
1204: n1/mtree0.c
1205: V4.0.G: In modtree(), rearranged code added on 8/23/92
1206: (cf. above) slightly. This fixes a bug reported by
1207: Bill Raudabaugh, namely a no match on code like:
1208: if (!((a ? b : c) != 0))
1209: ;
1210:
1211: Wed Dec 2 14:08:53 1992 PST
1212: n1/i386/leaves.t
1213: V4.0.H: Added "|PTX" to flag bits for unsigned to
1214: non-NDP double or float conversion entries.
1215: Previously, the compiler produced a no match error on e.g.
1216: char *f() { return 1.0; }
1217:
1218: Thu Dec 3 12:12:24 1992 PST
1219: n2/i386/outcoff.c
1220: V4.0.I: Fixed db_strcmp() after user H. C. Pulley reported
1221: fatal error caused by incorrect comparison of long C name
1222: to 8-character debug name matching the first 8 characters.
1223: h/i386/cc1mch.h
1224: Deleted getstar() definition, typo for genstar() and unused.
1225: coh/cc.c
1226: h/i386/varmch.h
1227: Added variant VXSTAT for Comeau.
1228: n2/i386/outcoff.c
1229: Added code to write static external items if isvariant(VXSTAT),
1230: for Comeau.
1231:
1232: Wed Dec 16 13:04:25 1992 PST
1233: n2/i386/outcoff.c
1234: V4.0.J: In copycode(), do not set F_LSYMS and F_LNNO flags in
1235: COFF header only if compiled -g; cc always set them previously.
1236:
1237: Fri Dec 18 13:15:58 1992 PST
1238: coh/cc.c
1239: V4.0.K: In makelib(), add #if _I386 code to simply pass "-lfoo"
1240: to ld rather than trying to expand it; this allows -L to work
1241: as expected.
1242:
1243: Wed Dec 23 13:14:37 1992 PST
1244: V4.0.L: Previously, the choice of software fp vs. NDP hardware
1245: fp was made when the compiler was built (NDP in mch.h and
1246: NDPDEF during tabgen). The following extensive changes allow
1247: a single compiler executable to write either software fp
1248: (default, no -VNDP) or NDP fp (if -VNDP).
1249: coh/cc.c
1250: Add option VNDP.
1251: h/i386/cc2mch.h
1252: Remove #if NDP conditionalization on extern int hasfloat.
1253: h/i386/mch.h
1254: Remove NDP definition. Change !NDP NRREG definition from
1255: 25 to 26, corresponding to change in table1.c below.
1256: h/i386/opcode.h
1257: Remove #if NDP conditionalization of NDP opcodes.
1258: h/i386/varmch.h
1259: Add option VNDP.
1260: n1/i386/gen1.c
1261: In coderinit(), modify table entries in table1.c if -VNDP.
1262: Change "#if NDP" compile-time conditionalization to
1263: "if (isvariant(VNDP))" run-time conditionalization
1264: in code which zaps inappropriate code table entries.
1265: n1/i386/mtree2.c
1266: Change #if NDP conditionalization, as above.
1267: n1/i386/outmch.c
1268: Remove #if NDP conditionalization.
1269: n1/i386/table1.c
1270: Change #if NDP conditionalization on table entries for
1271: registers EDX:EAX and FPAC and type F64. The entries now
1272: assume software fp by default, n1/i386/gen1.c/coderinit()
1273: modifies them if -VNDP.
1274: n1/i386/tables/aadd.t
1275: n1/i386/tables/add.t
1276: n1/i386/tables/adiv.t
1277: n1/i386/tables/amul.t
1278: n1/i386/tables/assign.t
1279: n1/i386/tables/asub.t
1280: n1/i386/tables/div.t
1281: n1/i386/tables/leaves.t
1282: n1/i386/tables/mul.t
1283: n1/i386/tables/neg.t
1284: n1/i386/tables/relop.t
1285: n1/i386/tables/sub.t
1286: Remove #ifndef NDPDEF and #ifdef NDPDEF code table conditionals.
1287: n2/i386/asm.c
1288: n2/i386/emit1.c
1289: Remove or change #if NDP conditionalization appropriately.
1290: Add #if 0 conditionalization on VEMU87 code, currently unused.
1291: n2/i386/optab.c
1292: Remove #if NDP conditionalization of NDP opcodes.
1293: n2/i386/unasm.c
1294: Add #if 0 conditionalization on VEMU87 code, currently unused.
1295: n3/i386/icode.c
1296: Remove #if NDP conditionalization.
1297:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.