[comp.lang.c] Datalight Optimizer

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.
------