From lcc 3.1 to 3.2:

Errors fixed:
Generated bad code when a conditional appeared as a operand and one of
its arms computed a common subexpression, eg, a[i] + (i>0?a[i]:0)
and a[i] = (n || (n=i), n)

With -n, erroneously diagnosed dereferences of const pointers as errors,
eg, f() { int x; const int *p; x=*p; }

Crashed with an assertion failure on a multiple assignment of a struct
return value to known elements of an array or fields of a structure, eg,
struct foo { int a[4]; } f() { struct foo  x[2];  x[0]=x[1]=f(); }

On the SPARC, generated bad code for addressing locals in large frames,
eg, f() { int a[10000], y = a[0]; }

On the SPARC under Solaris, ctype.h was missing an extern declaration
for __ctype.

On the x86, generated bad code for nested division, eg i/=j/k

Thu Dec  8 16:04:32 EST 1994
