From lcc 4.1 to 4.2:

Below is a summary of the source-control log entries for those files
changed for lcc 4.2.
$Id: LOG 355 2007-02-18 22:08:49Z drh $

src/alloc.c:
Fixed subtle alignment bug on p. 28.

src/dag.c:
Renamed kill to killnodes to avoid possible clash with kill in <signal.ch>.

Made address interface function optional.

Ensured that generated locals, even if not temps, are
added to the code list.

Avoided calls to undag when errcnt>0.

Changed listnodes so that array types decay to pointers; bug
tickled by -n option.

src/decl.c:
Moved call to retcode that injects a return at the end of a function
into compound so that temps created by retcode will be
scoped properly.

Fixed bug in which functions that return const struct S {...} issued
an incorrect diagnostic.

Ensure addressed is set for local arrays.

src/enode.c:
Corrected type conversions in addtree for ADD+P nodes;
stripped qualifiers from pointer types in eqtree and cmptree.

src/event.c:
Revise functions called at events so all have the same signature,
modulo pointer types.

src/expr.c:
With -b, avoid instrumenting  constant ?: expressions.

Fixed bug in wide-character literals.

Fix allocation error for identifiers injected to quell
undeclared identifier errors;
Correct int type added to addresses in field offsets.

src/gen.c:
Made emitasm extern.

src/input.c:
Fixed bug in resynch that caused infinite loop.

Added #ident recognition, which simply ignores it.

src/symbolic.c:
Revised symbolic back end to emit -0.0 correctly.

Emit flags in symbolic output.

src/bytecode.c:
Fixed double output botch in defconst in bytecode backend.

src/dagcheck.c:
Added mssing cases in dagcheck's reduce for types signedptr
and unsignedptr. Without these, reduce can fail.

src/lex.c:
Permit \ to escape newline in string literals.

Fixed scon() so that it accepts and concatenates adjacent wide-character literals.

src/main.c:
Fixed long-standing bug in which -n, -b, -C, and -a options caused
interface functions to be called before progbeg.

src/mips.md:
Fixed FP comparisons to handle NaNs correctly.

Round up framesize to a multiple of 16 for Irix 6.x;
added casts in defconst to discard unused bits.

src/prof.c:
Revise functions called at events so all have the same signature,
modulo pointer types.

Change ftype to build arbitrary prototypes.

Fixed long-standing bug in which -n, -b, -C, and -a options caused
interface functions to be called before progbeg.
Also, added missing call to space.

Relaxed assertion in loop that searches for
embedded CALL nodes.

Emit correct padding in generated -b strutures.

Revised call hook to find CALL nodes embedded
at any depth.

Edited bbincr so that it doesn't inject increments in constant expressions.

src/profio.c:
Change compare's prototype to conform to ANSI standard;
change calls to qsort accordingly.

Fixed implicit assumption that execution point i in file f always
refers to the same x,y. This isn't true for noweb files.

src/simp.c:
Made address interface function optional.

Tighten test that avoids folding addressing expressions
for switch tables when the offset exceeds 16 bits. Without
this addition, lcc can emit erroneous "initializer must be
constant" diagnostics.

Revised simplify() so that if doesn't call address to
fold (ADDGRP a n) when n exceeds 16 bits.

Reordered tests in MOD+I case so expressions like 6%1 fold correctly.

src/sparc.md:
Fixed FP comparisons to handle NaNs correctly.

Added casts in defconst() to emit constants with proper sizes.

Replaced pseudo-instructions st2/ld2 with pairs of st/ld instructions.

src/stmt.c:
Fixed botch in 2.16 revision.

Fixed return statement so that "return;" in a function that returns
a value returns 0. Similar code is already in decl.nw.

Resynch to distributable version.

Used dynamic variables for loop and switch handles.

Fixed bug in which functions that return const struct S {...} issued
an incorrect diagnostic.

Appended a missing \n to a warning.

src/sym.c:
Revised 2.19's code for comparing -0.0 and 0.0 so that it works
correctly when long double's occupy more bytes than the actual
values, as on the x86 under gcc.
Fix constant() so that it treats -0.0 and +0.0 as different constants.

Added newtable() to allocate empty symbol tables.

src/trace.c:
Revise functions called at events so all have the same signature,
modulo pointer types.

Change ftype to build arbitrary prototypes.

Fixed long-standing bug in which -n, -b, -C, and -a options caused
interface functions to be called before progbeg.

src/tree.c:
Correct revision 2.9's implementation of check to avoid
superfluous diagnostics on widening conversions.

Avoid diagnostics for superfluous widening conversions.

src/types.c:
Revise fieldmask definition so it works
for all values of fieldsize.

Change ftype to build arbitrary prototypes.

src/x86.md:
Fixed FP comparisons to handle NaNs correctly.

Changed ARGB instruction sequence to decrement
esp by the size of the structure rounded up to 4.
Changed struct allignment to 1; this required changing local to
insure that on-stack structs are aligned to at least 4 bytes.

Added cast in defconst to eliminate extraneous bits.

Fixed float-to-int conversions so they truncate properly;
fixed assembler syntax errors on x86/linux.

Fixed frame size adjustment for frames >= 4096; now calls _chkstk
to allocate large frames.

Fixed overly specific opcode for loading constants.

Changed add/sub to addl/subl in potentially ambiguous
instructions in the x86/linux back end.

cpp/cpp.c:
Added line to fix Nelson Beebe's bug using #defined x X.

cpp/cpp.h:
Revised to use stdio for output.

Converted to use stdio for input.

cpp/eval.c:
Added evaluation stack overflow checks.

Included stdio.h.

cpp/getopt.c:
Include <string.h>; cut decl. for strchr.

cpp/hideset.c:
Fixed potential sizeof botches.

cpp/include.c:
Revised to use stdio for output.

Removed unused wd[].

Fixed incorrect check of fopen return value.

Converted to use stdio for input.

cpp/lex.c:
Fixed incorrect test of fd value; fixed comments.

Converted to use stdio for input.

cpp/macro.c:
Fixed obscure bug that occurs when string literals are stored
in read-only memory. -DX attempts to append a null byte to "1".
Found by Nelson Beebe.

Converted to use stdio for input.

cpp/nlist.c:
Removed unused wd[].

Added #ident; ignored as for #pragma.

cpp/tokens.c:
Revised to use stdio for output.

Fixed erroneous initialization and check of FILE * value.

cpp/unix.c:
Revised to use stdio for output.

Fixed erroneous initialization and check of FILE * value.

Converted to use stdio for input.

etc/irix.c:
Added -D_LONGLONG, because some SGI assume this.
Reported by Nelson Beebe.

Added -32 option to insure O32 object files and libraries are used.

etc/lcc.c:
Fixed -l file so that file doesn't have to exist.

Changed \ to / at the end of Win32 include paths.

Added casts and prototypes to make _spawnvp compatible
with Win32 version.

Permit -dynamic -static on all systems, using option to check
for validity.
Edited help messages.

Look for -Wf-unsigned_char=1 and added
-D__CHAR_IUNSIGNED__ and -U_CHAR_IS_SIGNED to the cpp
command line. These options interact with changes to the
standard header limits.h to set CHAR_MIN and CHAR_MAX correctly.
Look for -Wf-wchar_t=... and define _WCHAR_T_SIZE appropriately,
which interacts with stddef.h and stdlib.h to typedef wchar_t correctly.

Fixed botch in initinputs that cleared LCCINPUTS.

etc/win32.c:
Added oldnames.lib to link command.

Cut useless -align directive in ld command.

include/*/*/limits.h:
Corrected name: __CHAR_IS_UNSIGNED__ should be __CHAR_UNSIGNED__.

Define CHAR_MIN/CHAR_MAX depending on defintion of __CHAR_IS_UNSIGNED__.

include/*/*/locale.h:
Change NULL to ((void*)0).

Protected definition of NULL;
defined NULL as 0L on osf systems.

include/*/*/stdarg.h:
Fixed typedef for __va_list so it's protected by #ifdef.

Fixed missing #endif;
protected definition of va_list by _VA_LIST_DEFINED.

Changed the type of va_list.

Insured only va_list was conditionally defined.

Insured _VA_LIST is defined.

Revised __va_arg macro to handle va_arg(float) correctly;
this addition required a static double temporary, which is
less than elegant and subject to order-of-evaluation bugs.

include/*/*/stddef.h:
Change NULL to ((void*)0).

Added _x_T_DEFINED flag macros for Windows compatibility.

Added code to typedef wchar_t to unsigned char, short, or int
depending on the value of _WCHAR_T_SIZE.

Protected definition of NULL;
defined NULL as 0L on osf systems.

include/*/*/stdio.h:
Change NULL to ((void*)0).

Added _x_T_DEFINED flag macros for Windows compatibility.

Changed the type of va_list.

Protected definition of size_t by _SIZE_T_DEFINED;
added definition for va_list protected by _VA_LIST.

Protected definition of NULL;
defined NULL as 0L on osf systems.

include/*/*/stdlib.h:
Change NULL to ((void*)0).

Added _x_T_DEFINED flag macros for Windows compatibility.

Added code to typedef wchar_t to unsigned char, short, or int
depending on the value of _WCHAR_T_SIZE.

Protected definition of NULL;
defined NULL as 0L on osf systems.

include/*/*/string.h:
Change NULL to ((void*)0).

Added _x_T_DEFINED flag macros for Windows compatibility.

Protected definition of NULL;
defined NULL as 0L on osf systems.

include/*/*/time.h:
Change NULL to ((void*)0).

Added _x_T_DEFINED flag macros for Windows compatibility.

Protected definition of NULL;
defined NULL as 0L on osf systems.

lburg/lburg.c:
Simplified use of va_arg to accommodate gcc bug.

Added ()s to avoid bogus compilation error on Linux.

lib/assert.c:
Added EXPORT and default definition.

lib/bbexit.c:
Access _caller via indirection; add _setcallerp.

Added EXPORT and default definition.

Changed profiling counters to ints.

lib/yynull.c:
Added EXPORT and default definition.

tst/cq.c:
Added prototypes to function pointer initializations.
