Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!husc6!hao!oddjob!gargoyle!ihnp4!cbosgd!cbterra!smk From: smk@cbterra.ATT.COM (Stephen Kennedy) Newsgroups: comp.sys.atari.8bit Subject: CC8 Compiler Version 2.3b (1 of 3) Message-ID: <3700@cbterra.ATT.COM> Date: Tue, 8-Sep-87 16:32:10 EDT Article-I.D.: cbterra.3700 Posted: Tue Sep 8 16:32:10 1987 Date-Received: Thu, 10-Sep-87 00:54:25 EDT Reply-To: smk@cbosgd.UUCP (Stephen Kennedy) Organization: AT&T Medical Information Systems, Columbus Lines: 66 This is version 2.3b of CC8, an improved version of the Deep Blue C Compiler. The version fixes a particularly nasty bug found by John Dunning (#4 below) and has some other differences from the original posted version (detailed below). Part 1 -- this article Part 2 -- the original CC8 doc Part 3 -- the uuencoded CC8.COM (33732 bytes, 24465 bytes uudecoded) Steve Kennedy {ihnp4,moss,decwrl,?}!cbosgd!smk -------------------------------------------------------------------------- The following is a list of fixed bugs, enhancements, and known problems: Bug fixes: 1. Empty expressions in for statement accepted, i.e., for(;;;) $( $) 2. Constant expression are now valid after "case", i.e., "case 2*3." (fixes "case -1:" problem) 3. "*a" if a is an array no longer generates an error. 4. A function argument declaration of "type var[]" is now converted to "type *var." Previously, the compiler generated bad code which caused a lock-up when the resulting program was run (e.g., programs using "getname()" in ACECIO.C). Enhancements: 1. The expressions "a[x]" and "x[a]" are both valid and equivalent provided one of x or a is a pointer or array. 2. structs without explicit tag names are now legal, i.e., "struct $( .... $) y;" 3. The compiler now recognizes the keywords "short" and "long." Note that "int" = "short" = "short int" = "long" = "long int" = 2 bytes. "Long" declarations produce the warning "long == short." 4. The compiler now recognizes the keyword "unsigned" and will generate unsigned comparison code for <, <=, >, or >= when one or both operands are unsigned. Caveats: - You'll have to write your own routines to print these correctly (no %u in ACE C or DBC printf). - I'm not sure *, /, or % work properly on unsigned numbers. Known problems (send mail or post if you want to add to the list): 1. Not all escape sequences recognized by ACE C are recognized by CC8. (\u, \d, \l, \r, \e) 2. Compiler doesn't like "register x" although it will accept "register int x." Note that "register" doesn't do anything special anyway.