Date: Thursday, 7 June 1984 09:44-MDT From: "Pearson Pete" at LLL-MFE.ARPA To: info-micro at BRL.ARPA Re: Five known problems with Aztec C compiler (long). Re: Manx Software Systems' Aztec C compiler for Z80, CP/M, version CZII 1.05c. The following five problems were reported to Manx long enough ago (1983, I think) that I'm confident they're never going to acknowledge them, let alone fix them for me. - Does not flag an error when a structure is passed as an argument, if there is another argument. However, the code generated passes a nonsense value instead of the address of the structure. Example: struct confrm { int c_act; }; /* No error messages is */ testsub(s) /* output during the */ char *s; /* compilation of this */ { struct confrm xyz; /* program, though */ sreadcf(s, xyz); /* bad code is */ } /* generated. */ - Does not report an error when an undefined structure is referenced in the definition of a second structure. Of course, it can't possibly generate correct code in this situation! Example: struct ss1 { int a; struct ss2 b; }; sub1() /* No error message */ { /* appears during the */ struct ss1 c; /* compilation of this */ c.a = 1; /* program. */ } - Does not properly interpret the logical negation operator ("!") during the compile-time evaluation of constant expressions. Example: #define TRUE (1==1) #define FALSE (!TRUE) sub1() { sub2(TRUE); /* The compiler evaluates all */ sub3(FALSE); /* three of these arguments */ sub4(!1); /* to 1. */ } - Programs compiled with the Aztec C compiler and running with the Z80CLIB runtime library run ridiculously slowly when "stdout" output is redirected to a file. A change to the Aztec-supplied module "Croot" (which scans the execute line to perform redirection) can correct this problem. - Generates incorrect code for the statement i = (x > 0); pearson@lll-mfe Opinions and speculations entirely my own.