The current version (2.1y) of the Metaware High C compiler is available
as a compressed tar file on ibmsupt. This version replaces version 2.1s
which had serious optimization problems.

The compressed tar image contains the first and second pass of
the hc compiler, /usr/lib/hc?com. The driver, /bin/hc is unchanged
and is not included.

This version has compiled X11r.4, the Andrew Tool Kit, etc. No
effort has yet been made to compile the AT&T C++ cfront code as
the sources to AT&T's licensed code are not immediately at hand.

The 2.1y version is available via UUCP, the path is:

	ibmsupt!/usr/spool/uucppublic/ibm43-fixes/hc2.1y.tar.Z

A brief list of the fixes follows:

	o Floating-point evaluation at compile time now correspond
	  to run time: (float)1e50 and 1.0/0.0 are both infinity,
	  not errors.

	o System error compiling paranoia.c fixed.

	o Tag declaration within a function prototype had scope
	  incorrectly extending through function definition.
	  (Obscure ANSI point)

	o Dbx stab for static block-scope variable should be type V,
 	  not S.

	o Floating-point code-generation used live register as scratch.

	o Code generation problem fixed when strcpy() used as function
	  argument and inline code being generated for strcpy.

	o ANSI preprocessor whitespace problem fixed.

	o Bad operand-field in .s caused assembler errors.

	o Code generation problem in while/if/for conditional fixed.

	o -Hon=print_protos output incorrect types for arguments implicitly
	  declared int.

	o Some volatile declarations caused spurious error messages. 

Still open:

	o sizeof(0,arrayname) should be 4, not sizeof(arrayname).
	o sizeof(0,charvalue) is 1, which is correct.  (ANSI subtlety.)

	o Float constant 0.1f has 53-bit precision; s/b 24-bit.

	o Disable constant propagation for -g: in effect make all variables
	  volatile.

	o Disable while-condition optimization for -g: don't duplicate
	  code for condition-testing at loop bottom.

	o Warn if setjmp() and alloca() are used within same function.

	o -E -Hnocpp outputs incorrect whitespace for
		#define m -
		...  a = b m-- c;
	o -Hnocpp alone parses correctly.
	
	o File-scope declaration with no declarators should produce warning
	  or error.

Related fixes:

V1.10	o correction to a relocation error for stabs in /bin/ld.c

V1.15	o a 5 part kit, substantial fix for dbx.


Eric Brunner, Consultant, IBM AWD Palo Alto	(415) 855-4486
inet: brunner@monet.berkeley.edu
uucp: uunet!ibmsupt!brunner	


