Annotation of coherent/b/bin/c/Changes.1992, revision 1.1

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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.