Sun Studio 12: C Compiler 5.9 Readme 

Updated 2007/05/31  


  1. Introduction
  2. About the C Compiler 5.9
  3. New and Changed Features
  4. Software Corrections, Patches, Problems and Workarounds
  5. Documentation Errors


A. Introduction

This document contains information about this release of the Sun[tm] Studio 12 C Compiler 5.9. This document describes the software corrections, known problems, limitations, and incompatibilities of this release.

Product Documentation

Note - If your compiler collection software has not been installed in the default /opt directory, ask your system administrator for the equivalent path on your system.

B. About Sun Studio 12 C Compiler 5.9

This compiler is in full compliance with ISO/IEC 9899:1999, Programming Language - C and is available on Solaris 10 when you specify the -xc99 option. This compiler supports all C language features of ISO/IEC 9899:1999, Programming Language - C on all supported operating systems.

C. New and Changed Features

This section describes new and changed features for this release of the C compiler 5.9. For additional information regarding new features in other Sun Studio 12 components, see the SDN Sun Studio portal at

A New Way To Specify 32-bit or 64-bit Address Model

You no longer need use the -xarch option to specify a 32-bit or 64-bit address model (LP64 versus ILP32). Two new options make it easier:

Deprecated -xarch Flags and Their Replacements Across SPARC and x86
If you are using -xarch=v9 or -xarch=amd64 to specify a 64-bit address model, use just -m64 instead. No -xarch value is required.

Deprecated -xarch Flags and Their Replacements on SPARC Only

Deprecated -xarch Flags and Their Replacements on x86 Only

Disallowed Combinations and Warnings
The compilers do not allow the combination of a deprecated -xarch value and the new -m32, -m64 options on the command line. For example, specifying -xarch=v9 -m32 is now a fatal error. Specifying -xarch=sparc -xarch=v9 is also a fatal error.

Some older -xarch values do not have 64-bit counterparts. You cannot combine the following -xarch options with -m64 on the command line"

If you specify a 32-bit -xarch value followed by -m64, the compiler does not issue a warning. For example -m64 -fast or -fast -m64 are allowed. However, if you specify a 64-bit -xarch value followed by -m32, the compiler issues a warning that -m32 overrides the -xarch value. This situation does not occur using macro options, only when an -xarch option has been explicitly specified.

New C Compiler Options and Features

In addition to the new options and features detailed in the rest of this readme, the following new C compiler options are supported in this release:

New x86 Features and Updates

The following are new x86 flags for the -xarch option:

Changes to -fast
The -fast option on x86 now includes -xregs=frameptr, which means that the compiler can use the frame-pointer register (%ebp on IA32, %rbp on AMD64) as a general purpose register to generate code for all the compilation units. Consequently frame pointers will not be generated in each function or routine.

However, if you want to override this new behavior, specify -xregs=no%frameptr after -fast in the compilation command and the frame-pointer register will not be used as a general purpose register. The following example demonstrates how to override the -fast default for -xregs:

      cc -fast -xregs=no%frameptr foo.c

Static data-race and deadlock-detection with lock_lint
The C compiler option -Zll creates database files (.ll) for use by the lock_lint utility. See lock_lint(1). The -Zll option and the lock_lint utility are now available on x86.

New SPARC Features and Updates

This release of the Sun Studio compilers includes support for the SPARC64 VI and UltraSPARC T2 processors. Use the following new options to specify these processors:

You can also specify the following -xchip options to generate code for these processors without setting the -xarch value automatically as happens when you use -xtarget:

New Math and Visual Instruction Set Support in SPARC64 VI

Specify the following new option if you want to use instructions from the SPARC-V9 instruction set including the UltraSPARC extensions, the Visual Instruction Set (VIS) version 1.0, the UltraSPARC-III extensions, the Visual Instruction Set (VIS) version 2.0, and the SPARC64 VI extensions for floating-point multiply-add:

You must also specify -m32 or -m64 when you specify -xarch=sparcfmaf to get 32-bit code or 64-bit code respectively. When you specify -xarch=sparcfmaf, the compiler predefines the following new values:

Note: You must use -xarch=sparcfmaf in conjunction with the new -fma=fused option detailed below and some optimization level in order for the compiler to find opportunities to use the multiply-add instructions automatically.

New Option for Floating-Point, Fused or Multiply-Add Instructions

Specify the following new option to enable or disable the automatic generation of floating-point, fused, multiply-add instructions:

The none value indicates that the compiler should not generate any floating-point, fused, or multiply-add instructions. The fused value allows the compiler to attempt to find opportunities to improve the performance of the code by using floating-point, fused, or multiply-add instructions.

Linux Support

See the release notes for processor and distribution version requirements.

The New Thread Analyzer

The following new compiler option causes the compiler to instrument your multi-threaded application for analysis by the new Thread Analyzer. 

The default is -xinstrument=no%datarace. See tha(1) and the Thread Analyzer User's Guide. The user's guide includes two tutorials, a FAQ and lists of supported APIs.

D. Software Corrections, Patches, Problems and Workarounds

There is no new information as of this publication date, however, check the Support page on the SDN Sun Studio portal, for latest information.

G. Documentation Errors

The C User's Guide and the cc(1) manpage do not include descriptions for the new -xMMD, -xMD, and -xMF options. The manual and manpage will be updated on before the next major release of the C compiler to cover these new options.

Copyright © 2007 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.