christiansen@chewi.che.wisc.edu (REED CHRISTIANSEN) (05/11/88)
> From: Joseph Reger <joseph@chromo.ucsc.edu> > Subject: Re: Indexing vs pointers (Datalight Optimizer) > Message-ID: <3199@saturn.ucsc.edu> > Date: 7 May 88 18:48:50 GMT > > I do not see any ads any more about that wonderfully optimizing C > compiler from Datalight. What happened? Does anybody have it? Impressions? > __ Joseph > I bought the upgrade and have been very happy with the results. Unlike MSoft 5.0, optimization in situations where the VOLATILE keyword is used seems to work fine. One can select whether optimization is to be done, whether one wishes to do space or time optimization (or some presumeably pareto-optimal combination). You can turn on and off specific types of optimization, in case they are breaking your code. The latest version also implements REGISTER variables in SI and DI (a switch exists to disable this, in case you are linking to a Lattice-compatible library). The edit-compile-run cycle for the non-optimizing case seems harddisk-access-speed limited. One of my coworkers has experimented with using an EMS ramdisk, and finds that the compilation cycle is limited by his screen-access-time for the copyright notices! As you would expect, the optimization phase takes longer, but one would normally be envoking optimization only in the final stages of a project, so the time spent is worth it. The error messages are extremely helpful, indicating the line where the error occurred, and telling you (in cases of type mismatch) the type that was expected and the type it saw. This has saved my butt on numerous occasions. The language is consistent with the recent ANSI-C public draft. The documentation remains a sore point. All library functions are sketchily documented, one-per-page, as are switches, subroutine calling conventions (I believe they are still Lattice-compatible), etc. I find that I am frequently refering to the library source code, rather than the manual, if I am in the throes of using a library routine. The library itself is adequate, but pales in comparison to those available from MSoft or Borland. There is no TSR support, although interrupt handling and a mouse package are included. The source code is included, and is a mix of C and 80x86 code, as you would expect. One may link with an integer-only library, or to a floating point library. The default floating point routines will detect a 80x87, and will use it, or will emulate the 80x87 instructions, if needed. I believe one can toggle ``80x87 only'' or ``never use the 80x87'', but I have not tried these options. The floating point library passes the PARANOIA suite, although we did see one problem: z=10^-308 is the smallest number distinct from zero; (z+z)/z was computed to be on the order of 10^-308, rather than 2! All common memory models are supported; macros are supplied to normalize and compare long pointers. I haven't gotten burned yet with them. Summary: a superior compiler, with deficiencies in the library. ------