Release 5.0 Copyright ã1997 by Apple Computer, Inc.  All Rights Reserved.

Apple Need-To-Know Confidential

Preliminary 5.0 Release Notes: 
PowerPC Cross Compiler for Rhapsody

This file contains release notes for the 5.0 release of the PowerPC Cross Compiler for Rhapsody.

How to install this compiler

A 3-way fat (m68k, i386, and sparc) package for cc-752 can be installed using /NextAdmin/Installer.app and opening the package:
	~comp/Packages/cc-752.pkg

Status of the PowerPC cross compiler (cc-752)

·	Static code gen for plain C code should be working.
·	The compiler should be stable enough to the point of not crashing when confronted with Objective C or Objective C++ code. However, this hasn't been tested extensively, though compiling such code can result in working programs.
·	Dynamic code gen doesn't work yet. However, there is no need to use the -static flag, since this compiler accepts, but does not pay attention to, the -dynamic flag. In fact, you should NOT use the -static flag, unless you are very sure you want to create a static image.
·	Code processed by the old gcc 2.2.2-based NRW compiler must NOT be linked with code processed by this compiler. This would lead to disastrous results. Your workstation could blow up, and you could be maimed. You have been warned. DON'T TRY IT!
·	Compiling with levels of optimization higher than -O2 is not recommended unless you are prepared to spend substantial amounts of time trying to figure out why your programs don't work.
·	This compiler tells the assembler to flag all references of registers r2, r12, and r13. Some kernel code may intentionally refer to r13. If the assembler flags any other uses of these registers, let us know.
If there are any bugs that need to be fixed in order to make progress, let Sam Figueroa and/or Doug Landauer (figueroa@next.com and landauer@apple.com, respectively) know.

Summary of changes/bug fixes to the PowerPC cross compiler

Changes/bug fixes made in cc-752
·	The compiler now supports certain pragmas that control whether fields within structs should be aligned as they would be on a 68k Mac compiler, namely the following:
		#pragma pack (n) /* n is optional */
		#pragma options align = word /* word can be mac68k, power, or reset */
·	The compiler now puts jump tables in the .const section rather than the .text section.

Changes/bug fixes made in cc-751
·	If a function returns a struct by value, the struct is now always returned in memory, regardless of whether the entire struct fits in a register or not.
·	The compiler now knows how to deal with Pascal strings when the -fpascal-strings switch is specified on the cc command line.
·	The compiler no longer complains about four-character constants if the -Wno-four-char-constants switch is specified on the cc command line.
·	The preprocessor now looks for header files in /NextLibrary/Frameworks/System.framework/PrivateHeaders/bsd.

Changes/bug fixes made in cc-750a
·	The compiler no longer generates calls to special functions in order to save and restore floating-point registers.
·	This package now includes a Teflon-aware i386 preprocessor.
·	Support for linking with -static has been removed.

Changes/bug fixes made in cc-750
·	The compiler now calls one of two entry points into _objc_msgSend, depending on whether the method returns a struct or not.
·	The compiler no longer makes reference to r13.
·	Compiling Objective C code with -O3 should now generally work. Before, the compiler thought it didn't have to actually emit code for Objective C methods.
·	The names of methods in an Objective C class can now start with the same letter.
·	The __STATIC__ macro is always predefined, since the compiler doesn't generate dynamic code; the PPC macro is no longer predefined.

Changes/bug fixes made in cc-748
·	Initial version of the PowerPC compiler.