C Language Software Release Document
Software Release 9.7.1
Part No. 05500-B02
This document describes the C compiler
for DOMAIN software release 9.7.1.
APOLLO COMPUTER INC.
330 Billerica Road
Chelmsford, Massachusetts 01824
Confidential and Proprietary. Copyright 1988 Apollo Computer, Inc.,
Chelmsford, Massachusetts. Unpublished -- rights reserved under the
Copyright Laws of the United States. All Rights Reserved.
All rights reserved. Printed in U.S.A.
First Printing: April, 1988
Latest Printing: July, 1988
This document was formatted using the FMT tool distributed with the Domain
computer system.
Apollo and Domain are registered trademarks of Apollo Computer Inc.
UNIX is a registered trademark of AT&T in the USA and other countries. Ada
is a registered trademark of U.S. Government (Ada Joint Program Office).
3DGMR, Aegis, D3M, DGR, Domain/Access, Domain/Ada, Domain/Bridge, Domain/C,
Domain/ComController, Domain/CommonLISP, Domain/CORE, Domain/Debug,
Domain/DFL, Domain/Dialogue, Domain/DQC, Domain/IX, Domain/Laser-26,
Domain/LISP, Domain/PAK, Domain/PCC, Domain/PCI, Domain/SNA, Domain X.25,
DPSS, DPSS/Mail, DSEE, FPX, GMR, GPR, GSR, NLS, Network Computing Kernel,
Network Computing System, Network License Server, Open Dialogue, Open
Network Toolkit, Open System Toolkit, Personal Supercomputer, Personal Super
Workstation, Personal Workstation, Series 3000, Series 4000, Series 10000,
and VCD-8 are trademarks of Apollo Computer Inc.
Apollo Computer Inc. reserves the right to make changes in specifications and
other information contained in this publication without prior notice, and the
reader should in all cases consult Apollo Computer Inc. to determine whether
any such changes have been made.
THE TERMS AND CONDITIONS GOVERNING THE SALE OF APOLLO COMPUTER INC. HARDWARE
PRODUCTS AND THE LICENSING OF APOLLO COMPUTER INC. SOFTWARE PROGRAMS CONSIST
SOLELY OF THOSE SET FORTH IN THE WRITTEN CONTRACTS BETWEEN APOLLO COMPUTER
INC. AND ITS CUSTOMERS. NO REPRESENTATION OR OTHER AFFIRMATION OF FACT
CONTAINED IN THIS PUBLICATION, INCLUDING BUT NOT LIMITED TO STATEMENTS
REGARDING CAPACITY, RESPONSE-TIME PERFORMANCE, SUITABILITY FOR USE OR
PERFORMANCE OF PRODUCTS DESCRIBED HEREIN SHALL BE DEEMED TO BE A WARRANTY BY
APOLLO COMPUTER INC. FOR ANY PURPOSE, OR GIVE RISE TO ANY LIABILITY BY APOLLO
COMPUTER INC. WHATSOEVER.
IN NO EVENT SHALL APOLLO COMPUTER INC. BE LIABLE FOR ANY INCIDENTAL,
INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING BUT NOT
LIMITED TO LOST PROFITS) ARISING OUT OF OR RELATING TO THIS PUBLICATION OR
THE INFORMATION CONTAINED IN IT, EVEN IF APOLLO COMPUTER INC. HAS BEEN
ADVISED, KNEW OR SHOULD HAVE KNOWN OF THE POSSIBILITY OF SUCH DAMAGES.
THE SOFTWARE PROGRAMS DESCRIBED IN THIS DOCUMENT ARE CONFIDENTIAL INFORMATION
AND PROPRIETARY PRODUCTS OF APOLLO COMPUTER INC. OR ITS LICENSORS.
Reader_Notice
This document resides online in the /doc directory. To print a copy of this
document, use the PRF command with the -npag and -pr options.
PRF <file_pathname> -PR <printer_name> -NPAG
iii
Contents
Section
CHAPTER 1 OVERVIEW OF DOMAIN C LANGUAGE AT SR 9.7.1 . . . . . . . 1-1
CHAPTER 2 SOFTWARE INSTALLATION PROCEDURES . . . . . . . . . . . . 2-1
CHAPTER 3 DOCUMENTATION . . . . . . . . . . . . . . . . . . . . . 3-1
1.1 Overview of Documentation . . . . . . . . . . . . . . . . 3-1
1.2 The -frnd Compile Option . . . . . . . . . . . . . . . . 3-1
1.3 The -cpu fpa1 and -Mfpa1 Compile Options . . . . . . . . 3-2
CHAPTER 4 BUGS AND BUG FIXES . . . . . . . . . . . . . . . . . . . 4-1
Contents iv
CHAPTER 1
OVERVIEW OF C AT SR9.7.1
The SR9.7.1 release of the C language introduces the following two features:
o a -cpu fpa1 compile option (-Mfpa1 for the /bin/cc interface)
o a -frnd compile option (/com/cc only).
For details on these new compiler options, see Chapter 3 of these release
notes.
If you are updating from a 9.7 release of the C compiler, these release
notes are all you need. If you are updating from a previous release, you
should look at the release notes that accompanied the intervening releases.
For instance, if you are going from SR9.2 to SR9.7.1, you should read
"cc.release_notes.sr9.5", "cc_release_notes.sr9.6", and
"cc.release_notes.sr9.7" in addition to the SR9.7.1 release notes.
Version 5.5 1-1 C Compiler Release 9.7.1
CHAPTER 2
INSTALLATION INFORMATION
You can add the C language Version 5.5 to a user node (one equipped with
monitor and keyboard) or a Domain Server Processor (DSP) that is running
SR9.7.1 or a more recent version of the Aegis or Domain/IX operating system.
If the user node or DSP is not running SR9.7.1 or a more recent version,
follow the appropriate software update procedures as described in Installing
Domain_Software (Order No. 008860) or in the appropriate release notes.
For general instructions on how to install this product, see the manual
Installing_Domain_Software (Order No. 008860). Chapter 5 of that manual, in
particular, describes installation of optional product software. There have
been some enhancements made to the installation procedure since the
publication of the last revision of Installing_Domain_Software; we describe
those changes here.
o Choosing a Target Node
The new installation sets the TARGET area by default to the current
work node. When you are prompted to enter a TARGET, the name of the
current work node appears as the default and can be selected simply
by pressing the <RETURN> key. For example:
The TARGET is the node or subdirectory on which you are installing
software (e.g., '//my_node' or '//my_node/subdirectory').
Enter Target: <//sum> <RETURN>
The program then confirms your choice of target.
TARGET set to : //sum
o Choosing a Source Area
When you choose a source area, the program now confirms your choice by displaying it
on the screen. For example:
The SOURCE AREA is the node or subdirectory from which you are
copying software (e.g., '//node' or '//node/subdirectory').
Enter Source Area: //ergo
SOURCE AREA set to : //ergo
2-1 C Compiler Release 9.7.1
o Improved Error Checking and Verification
After you have chosen the TARGET, the INSTALL program describes
constraints on the installation process, and asks if you wish to see
a list of directories affected by those constraints. If you choose to
see such a listing by typing 'yes' or 'y', the tool displays the list
immediately, or prints the message "No errors found." For example:
NOTICE:
Objects will not be installed across
links, nor if unexpected objects currently
exist where directories are needed.
Would you like to see a listing of any
problems of this sort before proceeding?
Yes or No? y
-------------------------------------------------
Listing pathname errors found with TARGET set to //sum
(Please be patient)
//sum/sys/help
//sum/domainexamples
If you answered the question above with a 'yes' or 'y', and the
program displayed one or more 'pathname errors,' the program now
describes the warning messages about link objects that are generated
during a later phase of the installation. Enter 'yes' or 'y' at the
prompt if you wish to see error messages regarding installation of
links. If you wish to suppress such messages, enter 'no' or 'n.'
The program displays a warning message
whenever one of these objects is
encountered during the installation,
although the display of these messages
can be suppressed.
CAUTION : These objects will not be
installed, whether or not the warning
messages are displayed.
Do you want to see the warning messages?
Yes or No? y
NOTE: The user node or DSP must have a minimum of 1281 blocks of
available disk space for a successful installation of this
software.
C Compiler Release 9.7.1 2-2
CHAPTER 3
DOCUMENTATION
This chapter provides an overview of Domain C language documentation.
3.1 Overview of Documentation
The current Domain C Language Reference (order no. 002093, rev. 04) reflects
the C compiler as of Software Release 9.2.
New features added at Software Releases 9.5 and 9.6 are documented in the
SR9.5 and SR9.6 release notes, which are available online in files
"cc.releasenotes.sr9.5" and "cc.releasenotes.sr9.6".
The following two sections should be added to Chapter 6 of the Domain C
Language Reference:
3.2 The -frnd Compiler Option
The -frnd ("float rounds") compile option is available only with the /com/cc
interface to the C compiler. If you are using the /bin/cc interface, you
need to use the -W compile switch, as in:
$ /bin/cc -W0, -frnd foo.c
The -frnd option forces the compiler to write all floating-point operands to
memory and then fetch the memory contents before evaluating the expression.
This ensures that each operand will have the same amount of precision so that
floating-point comparisons will produce correct results. If you do not
compile with -frnd, floating-point operands may be kept in registers, which
support more accuracy than memory. Consequently, when a register operand is
3-1 C Compiler Release 9.7.1
compared with a memory operand, the result may not be what is expected. This
is particularly true of equality comparisons. Consider the following C
program:
double fetch( void )
{
return 1.1;
}
int main( void )
{
double x;
x = fetch();
if (x - 0.1 == 1.0)
printf( "Pass\n" );
else
printf( "Fail\n" );
}
If you compile with -cpu 3000 (or -M 3000 if you are using /bin/cc, and
without -frnd, this program fails because the values 0.1 and 1.1 cannot be
represented exactly in base 2 floating-point. Thus, the quantity (x - 0.1)
can only be approximated. This value is calculated in an 80-bit register,
and then a compare is generated to see if this value is exactly equal to 1.0,
which is stored in memory. Since the register has more accuracy than memory,
the comparison fails.
If you compile with -frnd, the 80-bit register is stored (and rounded) in a
single-precision 32-bit temporary memory location. Now when it is compared
with 1.0, which is also stored in memory, the comparison passes.
Compiling with -frnd could mean that your program will run slower, so you
should only use -frnd when necessary.
3.3 The -cpu fpa1 and -Mfpa1 options
The -cpu fpa1 option is for use with the /com/cc interface, whereas the
-Mfpa1 option is for use with the /bin/cc interface. These options direct
the compiler to produce optimized code for the Floating-Point Accelerator
(FPA) board that is available with DN4000 workstations. Use of this switch
can produce substantially faster code. Do not use this switch, however, if
the target machine does not have an FPA board.
For more details, see the "Personal Workstation Floating-Point Acceleration
Handbook."
C Compiler Release 9.7.1 3-2
3-3 C Compiler Release 9.7.1
CHAPTER 4
BUGS AND BUG FIXES
This chapter describes known bugs and bugs fixed since SR9.7.
The APRs (Apollo Product Reports) with the following numbers have not been
fixed in 9.7.1:
000DBE8B
Compiler failure, registers locked error.
000DBE03
Bug with C compiler/ switch statement.
000DBE2D
Can't use function name in conditional (?:).
000DBF0A
10 compiler failure on function returning vo.
000DBF39
Inconsistent definition of lvalue cc.
000DC042
C enum construct disallowed by compiler.
000DC0F6
i *.
000DC10F
Different asm code generated by same c source.
4-1 C Compiler Release 9.7.1
000DC13B
Bug FOR statement when compiling w/optimizati.
000DC205
Expression for array index calculated wrong.
000DC203
Problem converting float to unsigned int.
000DC223
debug not listed in source file with -esf.
000DC22C
Problem converting double to unsigned int.
The APRs (Apollo Product Reports) with the following numbers have been fixed:
000DBF9A
10 problems compiling at -OPT 1.
000DBFA7
Optimized above 2 using -CPU FPX errors.
C Compiler Release 9.7.1 4-2