IRIX 6.5 » Man Pages
find in page
cc(1)
NAME
cc, c89, c99, CC - Invokes the MIPS C, MIPSpro C, or MIPSpro C++
compiler
SYNOPSIS
cc, c89, c99 [options] files
CC [options] files
DESCRIPTION
This man page describes the cc(1), c89(1), c99(1), and CC(1) commands.
The cc command invokes the MIPS and MIPSpro C compiler and the source
preprocessor on source files that contain C code.
The CC command invokes the MIPSpro C++ compiler.
The c89 command is used to invoke the C compiler when the environment
variable _XPG is defined. The command then operates in conformance
with the X/Open XPG4 standard. Option or command-line differences
that may occur due to conformance to this standard are noted in the
option descriptions.
The c99 command invokes the MIPSpro C compiler with C99 standard
features.
Throughout this man page, the differences between the C and C++
compilers are noted when appropriate. When there is no difference,
the phrases, the compiler or the C/C++ compiler, refer to both
compilers.
By default, the compiler creates an executable file named a.out.
Other files used and created by the compiler are discussed under the
FILES section of this man page. See the ld(1) man page for load-time
options.
If conflicting options are specified, the option specified last on the
command line overrides the previously specified option. Exceptions to
this rule are noted in the individual option descriptions.
Most #pragma directives override corresponding command-line options.
Exceptions to this rule are noted in the option descriptions on this
man page or in the #pragma directive descriptions in the MIPSpro C and
C++ Pragmas manual.
Some command options, for example, -LIST, -LNO, -MP, -OPT, -TARG, and
-TENV, accept several arguments and allow you to specify a setting for
each argument. To specify multiple arguments, either use colons to
separate each argument or specify multiple options on the command
line. For example, the following command lines are equivalent:
cc -LIST:notes=ON:options=OFF b.f
cc -LIST:notes=ON -LIST:options=OFF b.f
The SGI compilers support three different Application Binary
Interfaces, which are controlled by the following options (see the
abi(5) man page for more information about these interfaces):
Option Action
-o32 or -32 Generates an (old) 32-bit object. (See the o32(5) man
page for option descriptions and details.) This defaults
to -mips2 if -mips1 has not been specified. See the
pe_environ(5) man page for information on the
COMPILER_DEFAULTS_PATH environment variable.
-n32 Generates a (new) 32-bit object. This defaults to -mips3
if -mips4 has not been specified.
-64 Generates a 64-bit object. This defaults to -mips4 if
-mips3 has not been specified. See the pe_environ(5) man
page for information on the COMPILER_DEFAULTS_PATH
environment variable.
The following alphabetized list of options are valid in the N32 and 64
ABIs. See the o32(5) man page for options that are specific to the
O32 ABI. Unless otherwise specified in the option description, the
following options apply to the cc, c89, c99 and CC commands.
-- In XPG4 mode, standard utilities that accept operands but
not options, will recognize -- as the first argument to be
discarded. This is required because portable applications
need a way to shield their operands from any arbitrary
options that the implementation may provide as an
extension.
For example, if the standard utility foo is listed as
taking no options, and the application needed to give it a
pathname with a leading hyphen, it could safely do it as:
foo -- -myfile and avoid any problems with -m used as an
extension.
-all If specified just before a .a file (archive library), the
linker pulls the entire archive into the shared object,
not just the object files needed for the link (which is
the default). This option applies to all subsequent .a
files in the command line. This option cannot be
specified with the -c option.
See the ld(1) man page for more information about shared
libraries and archives.
-anach (CC only) Allows anachronistic C++ constructs. This
option is deprecated and will be removed in a future
release.
-ansi, -cckr, -xansi
(cc only) Enables pure ANSI/ISO C mode. To see a list of
defined symbols, enter the cc -show foo.c command and see
which symbols have been added as -Dsymbol_name.
xansi (the default) enables ANSI/ISO C with all the same
definitions as K&R/Version7 C mode (-ansi). __STDC__ and
__EXTENSIONS__ are defined, many symbols are added into
the namespace, and __INLINE_INTRINSICS is defined and may
cause some intrinsic <math.h>, <stdio.h>, <string.h>, and
<curses.h> library functions to be inlined. Such inlined
functions may not set errno in accordance with the strict
ANSI/ISO C standard requirements.
-xansi is the default used by the compiler unless the
environment variable SGI_CC is set. See the pe_environ(5)
man page for more information on environment variables.
If specified with -cckr or -ansi, the last option
specified is effective and the rest are ignored. If
specified with -ansi or -xansi, the last option specified
is effective and the rest are ignored.
NOTE: When compiling in pure ANSI/ISO mode, several
standard UNIX symbols (for example, environ, end) may only
be referenced by their ANSI/ISO-compliant counterparts
(for example, _environ, _end). The type long long is
allowed, but results in a warning. To take advantage of
this type in libraries that refer to __int64_t and
__uint64_t, you must define the macro __LONGLONG on the
command line; otherwise, __int64_t and __uint64_t are
defined as structs.
-ansiE (CC only) Issues an error message on all code that is not
standard-conforming. Available in ANSI/ISO C conformance
(see -ansi).
-ansiW (CC only) Issues a warning message on all code that is not
standard-conforming. This is the default in pure ANSI/ISO
C mode. Available in ANSI/ISO C conformance (see -ansi).
-apo, -apokeep, -apolist
For -n32 and -64, it invokes the Auto-Parallelizing Option
(APO), which automatically converts sequential code into
parallel code by inserting parallel directives where it is
safe and beneficial to do so. Specifying -apo also sets
the -mp option. Both -apokeep and -apolist produce a
listing file, file.list. Specifying -apokeep retains
file.anl and file.m, which can be used by the parallel
analyzer, ProDev WorkShop ProMP (see the EXAMPLES
section). When the -IPA option is specified with
-apokeep, the default settings for IPA suboptions are used
with the exception of -IPA:inline, which is set to OFF.
APO is invoked only if you are licensed for it. For
licensing information, see your sales representative.
For more information on APO, its directives, and command-
line options, see the MIPSpro C++ Programmer's Guide.
-ar Creates an archive using ar(1) instead of a shared object
or executable. The name of the archive is specified by
using the -o option. Template entities required by the
objects being archived are instantiated before creating
the archive. The CC command implicitly passes the -r and
-c options of ar to ar in addition to the name of the
archive and the objects being created. Any other option
that can be used in conjunction with the -c option of ar
can be passed to ar using -WR option_name. For more
information, see the ar(1) man page.
NOTE: The objects specified with this option must include
all of the objects that will be included in the archive.
Failure to do so may cause prelinker internal errors. In
the following example, liba.a is an archive containing
only a.o, b.o and c.o. The a.o, b.o and c.o objects are
prelinked to instantiate any required template entities,
and the ar -r -c -v liba.a a.o b.o c.o command is
executed. All three objects must be specified with -ar
even if only b.o needs to be replaced in lib.a.
CC -ar -WR,-v -o liba.a a.o b.o c.o
See the ld(1) man page for more information about shared
libraries and archives.
-auto_include, -no_auto_include
(CC only) The default is -auto_include. The compiler
implicitly includes template definition files if such
definitions are needed. -no_auto_include disables implicit
inclusion of template implementation files.
-bigp_off Disables the use of large pages within your program. This
is the default for all optimization levels except -Ofast.
-bigp_on Enables the use of large pages within your program. After
your program is compiled with this flag, you must also set
the PAGESIZE_DATA, PAGESIZE_STACK, and PAGESIZE_TEXT
environment variables to be one of the values 16, 256,
1024, 4096, 16384 (representing the size in kilobytes of
the pages you want to use). If these environment
variables are not set, then by default your program will
use 16KB pages. This flag is turned on when -Ofast is
specified.
-brief_diagnostics
Issues one-line diagnostic messages.
-c Creates an intermediate object file for each named source
file, but does not link the object files. The
intermediate object file name corresponds to the name of
the source file; a .o suffix is substituted for the suffix
of the source file.
Because they are mutually exclusive, do not specify this
option with the -r option.
-c99 Compile with the C99 standard features. cc -c99 is the
same as specifying c99.
-cckr (cc only) See the -ansi option description.
-cfront (CC only) Causes the compiler to accept constructs that
were accepted by previous cfront-based compilers, such as
OCC, but which are not accepted in the ANSI/ISO standard.
This is a deprecated option and will be removed in a
future release.
-clist (cc only) Enables the C listing. Specifying -clist is the
equivalent of specifying -CLIST:=ON.
-CLIST: ... (cc only) Controls emission of the compiler's internal
program representation back into C code, after IPA
inlining and loop-nest transformations. This is a
diagnostic tool, and the generated C code may not always
be compilable. The generated C code is written to two
files, a header file containing file-scope declarations,
and a file containing function definitions. The
individual controls in this group are as follows:
= ( ON|OFF )
Enables the C listing. This option is implied by any
of the others, but may be used to enable the listing
when no other options are required. For example,
specifying -CLIST:=ON is the equivalent of specifying
-clist.
dotc_file= filename
Writes the program units into the specified file,
filename. The default source file name has the
extension .w2c.c.
doth_file= filename
Specifies the file into which file-scope declarations
are deposited. Defaults to the source file name with
the extension .w2c.h.
emit_omp [ = ( ON|OFF )]
When ON is specified, generated files use OpenMP
directives (default). When OFF is specified,
generated files use MIPS multiprocessing directives,
which are outmoded.
emit_pfetch [ = ( ON|OFF )]
Displays prefetch information as comments in the
transformed source. If ON or OFF is not specified,
the default is OFF.
linelength= n
Sets the maximum line length to n characters. The
default is unlimited.
show [ = ( ON|OFF )]
Prints the input and output file names to stderr. If
ON or OFF is not specified, the default is ON.
-common Relaxes the ANSI/ISO C Strict-Ref/Def-initialization model
to the traditional IRIX Relaxed Ref/Def model. With
-common, the declaration int i; in multiple files at file
level is merged. Without it, ANSI/ISO C generates a
warning (from ld(1)) about duplicate definitions. When C
and Fortran compiled objects are linked together and an
ANSI C defined variable should be located at the same
address as a Fortran common block, you must compile the C
source with the -common flag. When compiling in
traditional K&R/Version7 C mode (see -cckr), the -common
option is ignored.
-Dname=def, -Dname
Define name to the macro preprocessor, as if by #define.
If no definition is given, name is defined as 1.
-DEBUG: ... Controls compiler features related to debugging, such as
checking for possible errors (at compile time or execution
time), or controlling the treatment of warning messages.
See the DEBUG_group(5) man page for more information,
including the individual options in this group. See also
the -g option for controlling emission of information for
the debugger.
-diag_error numberlist
Treats messages with the specified numbers as errors and
does not generate an object file. numberlist is a comma-
separated or hyphen-separated list of message numbers. In
order to see all possible errors, specify 1-10000. See
the description of the woff option for more details about
numberlist.
-diag_remark numberlist
Treats messages with the specified numbers as remarks
unless they are nondiscretionary errors. numberlist is a
comma-separated list of message numbers. The messages
specified by this option are reported only if -fullwarn is
specified.
-diag_suppress numberlist
Equivalent to specifying -woff numberlist. numberlist is
a comma-separated list of message numbers.
-diag_warning numberlist
Treats messages with the specified numbers as warnings
unless they are nondiscretionary errors. numberlist is a
comma-separated list of message numbers. If w is also
specified, the messages specified by this option are not
reported.
-dollar Allows the dollar sign ($) as a character in C identifiers
(including the leading character of an identifier). The
option is provided solely for compatibility purposes. The
dollar sign is not a standard C identifier character and
its use is not recommended.
-E Runs only the preprocessor phase on the source files and
sends the result to standard output. The resultant output
will contain line directives. This option overrides the
-nocpp option.
-EP Runs only the preprocessor phase on the source files and
sends the result to standard output. The resultant output
will not contain line directives. This option overrides
the -nocpp option. The output is the same as -E -P except
that it writes the output to stdout rather than to
<file>.i.
-fb file Specifies the feedback file (file) to be used as input to
the compilation. This feedback file can be produced by
using prof(1) with its -feedback option from one or more
.Counts files generated by the execution of the
instrumented program produced by pixie(1).
-fb_create path
Generates an instrumented executable program which is
suitable for producing one or more .instr files for
subsequent feedback compilation. When the -c option is
used to produce an object file that eventually linked to
form an instrumented executable, the -fb_create option
should also be specified. The executable will be
instrumented with special instructions that generates
information that the compiler can use to better optimize
your program. When this instrumented executable is run
(usually with a representative "training" inputset) that
information is stored in a file call a.out.instr.pid in
the path directory that you specified. The path should be
a complete path that also includes the name of the
executable. For example, /tmp/fbdir/a.out would produce a
file called /tmp/fbdir/a.out.instr.pid where pid is the
process ID of the invocation of your instrumented program
run with a training input.
-fb_opt path
Specifies the directory that contains the instrumentation
output generated by compiling with -fb_create and then
running your program with a training inputset. This tells
the compiler to use this information to better optimize
your program. When the -c option is used to produce an
object file that is eventually linked to form an
instrumented executable, the -fb_opt option should also be
specified.
-FE:eliminate_duplicate_inline_copies
(CC only) Eliminates duplicate copies of functions that
are declared inline but for which an out-of-line copy must
be generated (typically, these are destructors or virtual
functions). Specifying this option may alleviate the
problem of large executables or DSOs built with the
default template instantiation options.
-FE:template_in_elf_section
(CC only) Eliminates duplicate template instantiations
from an executable or DSO. This option should be used
when the -ptused option is specified to avoid duplicate
template instantiations in the executable or DSO.
-float The -float option is ignored in ANSI/ISO C conformance
mode and only has effect in -cckr mode. ANSI/ISO C
conformance mode uses single precision floating-point
operations where allowed by the Standard. This option
causes the compiler to use single-precision floating-point
whenever float is specified (except in function
arguments). In the following example, a and b are
promoted to double and a double-precision multiply is
done, followed by a conversion back to single-precision
for the assignment to c.
float a; int b; float c; c = a * b;
b is promoted to single-precision and a single-precision
multiply is done. This option does not affect float and
double argument passing; float function arguments are
promoted to double unless function prototypes are used.
Unsuffixed floating-point constants are cast to single
precision values in subexpressions with no double (or long
double) operands.
-float_const
Interprets floating point constants without precision
suffixes as single-precision whenever doing so will not
lose precision and the context is otherwise single-
precision. This may prevent unnecessary conversions
between single- and double-precision in ANSI/ISO C
conformance mode when the variables involved have all been
declared as float but the constants have not been appended
with f.
-fullwarn Performs various extra checks and produces additional
warnings that are normally suppressed by default. For
-n32 and -64, these warnings are called remarks.
-G num Specifies the maximum size (in bytes) of a data item that
is to be accessed from the global pointer. num must be a
positive integral number. If num is zero, no data is
accessed from the global pointer. For -n32 or -64, the
default value is 8 bytes. For -o32 shared compiles, the
default is 0 bytes; for nonshared, the default is 8 bytes.
Data stored relative to the global pointer can be accessed
by the program quickly, but this space is limited. Large
programs may overflow the space accessed by the global
pointer at load time. If the loader gives the error
message Bad -G num value, recompile specifying a lower
value for n (or add -G0 if no -G was specified. You
should usually use the same value of this switch for
compiling all files that comprise a program executable for
DSO.
-g[n] Specifies the debugging information produced by the
compiler. n can be one of the following:
0 No debugging information for symbolic debugging is
produced. This is the default.
2 Produces additional debugging information for full
symbolic debugging. Optimizations that limit full
symbolic debugging are not done. This overrides the
optimization options (-O, -O1, -O2, -O3).
3 Produces additional debugging information for symbolic
debugging of fully optimized code, which makes the
debugger inaccurate. This can be used with the
optimization options (-O, -O1, -O2, -O3).
Specifying -g without a debug level is equivalent to
specifying -g2.
This option can be concatenated with the -gslim option, as
in the following example:
-g3slim
-gslim (CC only) Limits the amount of debugging information
generated by the compiler for class definitions. You can
use this option on large applications when you experience
bloated object files, executables, or DSOs when compiling
with the -g option. If you specify -gslim instead of -g,
debugging information for any class with non-inline member
functions is generated only in translation units
containing a definition for one of those non-inline member
functions. Otherwise, the effect of specifying -gslim is
the same as that of specifying -g. If both -g and -gslim
are specified, the effect is the same as if only -gslim
was specified, regardless of the order in which the
options are specified on the command line.
-help Lists all of the available options.
-I dir Searches directories for #include files whose names do not
begin with /. Directories are searched in the following
order: directory of the file argument, directories
specified in -I options, and the standard directory
(/usr/include).
-INLINE: ...
The standalone inliner option group controls application
of intra-file subprogram inlining when interprocedural
analysis is not enabled (see the -IPA description). See
the ipa(5) man page for more information, including the
individual options in this group.
-IPA: ... The inter-procedural analyzer option group controls
application of inter-procedural analysis and optimization,
including inlining, constant propagation, common block
array padding, dead function elimination, alias analysis,
and others. Specify -IPA by itself to invoke the
interprocedural analysis phase with default options. If
you compile and link in distinct steps, you must specify
at least -IPA for the compile step, and specify -IPA and
the individual options in the group for the link step. If
you specify -IPA for the compile step, and do not specify
-IPA for the link step, you will receive an error. See
the ipa(5) man page for more information, including the
individual options in this group.
-J # (CC only) Specifies the maximum number of concurrent
compiles that the C++ prelinker is allowed to run at once.
This option overrides the number of concurrent compiles
that the prelinker determines using the following rules:
The maximum number of concurrent compiles is set to 1
unless the prelinker is a descendent of an smake(1) or a
pmake command that specifies the number of jobs using the
-J option, then # is used as the value for the number of
concurrent compiles. If the prelinker is a descendent of
an smake or pmake command without the -J option, the
maximum number of concurrent compiles is set to 2 on a
single processor system and 4 on a multi-processor that
has more than 1 unrestricted processor.
-KPIC Generates position-independent code (PIC). This is the
default and is needed for programs linking with dynamic
shared libraries. If you do not want to generate PIC,
specify -non_shared on the command line.
-L directory
In XPG4 mode, changes the algorithm of searching for
libraries named in -L operands to look in the specified
directory before looking in the default location.
Directories specified in -L options are searched in the
specified order. Multiple instances of -L options can be
specified.
-l library In XPG4 mode, searches the specified library. A library
is searched when its name is encountered, so the placement
of a -l operand is significant.
-LANG: ... The language feature option group controls the source
language interpretation assumed by the compiler. The
individual controls in this group are as follows:
ansi-for-init-scope [ = ( ON|OFF ) ]
Enables or disables the ANSI scoping rules for for-
init declarations (the scope of the name declared
extends to the end of the for statement). This
enables the behavior that is required by the C++
standard. The default value is ON.
anonymous_unions [ = ( ON|OFF ) ]
Permits nonstandard anonymous unions.
bool [ = ( ON|OFF )]
Enables or disables the predefined bool data type,
along with the predefined values true and false. Use
this option only to suppress this type in old code
that defines bool itself. Because this option changes
the mangling of function names with bool parameters,
all files comprising a program should be compiled with
consistent options. Default is ON.
The _BOOL feature macro can be used in #ifdefs to do
conditional compilation based on whether or not this
option is enabled.
create_pch=file-name
Creates a precompiled header with the specified
file-name. This option cannot be specified with
-LANG:pch or -LANG:use_pch.
do-dependent-name-processing [ = ( ON|OFF )]
If ON, the new template name resolution rules are
used. Use of this option at this time is not
recommended, because standard headers (like iostream)
do not yet compile with it.
end_of_line_comments [ = ( ON|OFF ) ]
Permits end of line comments with double slashes (//).
exceptions [ = ( ON|OFF )]
Enables or disables exception handling constructs in
the language. Generally, code with and without
exception handling cannot be mixed. Specifically, the
scopes crossed between throwing and catching an
exception must all have been compiled with
exceptions=ON. Default is ON.
In the O32-bit mode, exceptions are OFF by default and
can be turned on by the -exceptions flag. See the
-o32(5) man page for details.
The feature macro __EXCEPTIONS can be used in #ifdefs
to do conditional compilation based on whether or not
this option is enabled.
explicit [ = ( ON|OFF )]
Enables or disables the recognition of explicit as a
keyword. Default is ON.
The _EXPLICIT_IS_KEYWORD feature macro can be used in
#ifdefs to do conditional compilation based on whether
or not this option is enabled.
libc_in_namespace_std [ = ( ON|OFF )]
If ON, the functions in libc are placed in namespace
std. If OFF, they are in the global namespace.
Default is ON.
ignore_carriage_return [ = ON|OFF )]
Ignores carriage returns before a new line. Default is
ON.
mutable [ = ( ON|OFF )]
Enables or disables the recognition of mutable as a
keyword. Default is ON.
The _MUTABLE_IS_KEYWORD feature macro can be used in
#ifdefs to do conditional compilation based on whether
or not this option is enabled.
namespaces [ = ( ON|OFF )]
Enables or disables namespace feature of the language.
This feature changes the signature of functions and
for backward compatibility, the library functions in
libC continue to be in global namespace. Default is
ON.
non-std
Disables use of the standard C++ library and
standard-conforming iostream library.
pack [ = ( ON|OFF )]
Controls the layout of structure offsets. Default is
ON for cc and OFF for CC.
pch [ = ( ON|OFF )]
Automatically uses or creates a precompiled header
file. This option cannot be specified with
-LANG:use_pch or -LANG:create_pch.
A precompiled header file contains a snapshot of all
the code preceding the "header stop" point, which is
generally the first token in the primary source file
that does not belong to a preprocessing directive.
Use of precompiled headers may speed up compilation in
certain cases. For details on precompiled header
files, see the MIPSpro Compiling and Performance
Tuning Guide.
pch_dir=directory-name
Searches directory-name and/or creates a precompiled
header file. This option can be specified with
-LANG:pch, -LANG:create_pch, and -LANG:use_pch. When
specified with -LANG:create_pch or -LANG:use_pch, the
indicated filename is appended to the directory
specified by this name, unless the file name is an
absolute path name.
restrict=ON
Enables support for the restrict keyword in the
language.
std Enables use of the standard C++ library and standard-
conforming iostream library. Specifying this flag
also triggers other standard-conforming behavior, such
as the new rules for the scope of for loop
initializers. The default is ON for C++.
The following example shows how to use the complex
header in conjunction with -LANG:std:
#ifdef _STANDARD_C_PLUS_PLUS
// If -LANG:std is specified, it defines the macro
// in the preceding line. Use new-style headers
// and a using directive to bring names from the
// std namespace into the global namespace.
#include<complex>
#include<iostream>
using namespace std;
#else
// If -LANG:std is not specified, use old-style headers,
// and there is no need for a using directive.
#include<complex.h>
#include<iostream.h>
#endif
complex<float> x(1,2);
main() {
cout << x << '0;
cout << sqrt( x ) << '0;
}
For more information on the standard C++ library and
standard-conforming iostream library, see the release
notes (you can use the relnotes(1) command) or the C++
standard documentation.
typename [ = ( ON|OFF )]
Enables or disables the recognition of typename as a
keyword. Default is ON.
use_pch=file-name
Specifies the precompiled header, file-name, if it is
valid for this compilation unit. The compilation
proceeds with a warning if the pch file cannot be
used. This option cannot be specified with -LANG:pch
or -LANG:create_pch.
wchar_t [ = ( ON|OFF )]
Enables or disables the predefined wchar_t data type.
Use this option only to suppress this type in old code
that defines wchar_t itself. Because this option
changes the mangling of function names with wchar_t
parameters, all files that comprise a program should
be compiled with consistent options. Default is ON.
The feature macro _WCHAR_T_IS_KEYWORD can be used in
#ifdefs to do conditional compilation based on whether
or not this option is enabled.
vla [ = ( ON|OFF )]
Provides the C9X extension for variable length arrays.
The default for cc is ON; the default for CC is OFF.
-LIST: ... The listing option flag controls information that gets
written to a listing (.l) file. The individual controls
in this group are:
= ( ON|OFF )
Enables or disables writing the listing file. The
default is ON if any -LIST: group options are enabled.
By default, the listing file contains a list of
options enabled.
all_options [ = ( ON|OFF )]
Enables or disables listing of most supported options.
The default is OFF.
notes [ = ( ON|OFF )]
If an assembly listing is generated (for example, on
-S), various parts of the compiler (such as software
pipelining) generate comments within the listing that
describe what they have done. Specifying OFF
suppresses these comments. The default is ON.
options [ = ( ON|OFF )]
Enables or disables listing of the options modified
(directly in the command line, or indirectly as a side
effect of other options). The default is OFF.
symbols [ = ( ON|OFF )]
Enables or disables listing of information about the
symbols (variables) managed by the compiler.
-LNO Specifies options and transformations performed on loop
nests. This option is enabled only if the -O3 option is
also specified on the compiler command line. For
information on the LNO options that are in effect during a
compilation, use the -LIST option. See the lno(5) man
page for more information, including the individual
options in this group.
-M Runs only the preprocessor on the named files and writes
make(1) dependencies to standard output.
-MDupdate filename
Updates filename to contain make(1) dependencies for the
output file. -MDupdate updates only lines in filename
that end with a distinctive make comment and begin with
the name of the output file followed by a colon. The
standard option used with make(1) is -MDupdate Makedepend.
-mipsn Specifies the Instruction Set Architecture (ISA). n can
be one of the following:
1 Generates code using the instruction set of the
R2000/R3000 RISC architecture, and searches for mips1
libraries/objects at link-time. This defaults to
-o32.
2 Generates code using the MIPS II instruction set (MIPS
I + R4000 specific extensions), and searches for mips2
libraries/objects at link-time. This defaults to
-o32.
3 Generates code using the full MIPS III instruction
set, and searches for mips3 libraries/objects at
link-time. If -n32 or -64 are not specified, this
defaults to -64 on R8000-based systems and -n32 on all
other systems.
4 Generates code using the full MIPS IV instruction set
which is supported on R10000, R5000 and R8000 systems,
and searches for mips4 libraries/objects at link-time.
This is the default on R8000 systems. If -n32 or -64
are not specified, this defaults to -64 on R8000-based
systems and -n32 on all other systems.
-MP: ... Specifies individual multiprocessing options that provide
fine control over certain optimizations. You must also
specify the -mp option on the command line. This enables
all the -MP options.
The arguments to the -MP option are as follows:
check_reshape=setting
Enables or disables runtime consistency checks across
procedure boundaries when passing reshaped arrays (or
portions thereof) as actual arguments. Specify ON or
OFF for setting. The default is check_reshape=OFF.
clone=setting
Enables or disables autocloning. Specify ON or OFF
for setting. The compiler automatically duplicates
procedures that are called with reshaped arrays as
actual arguments for the incoming distribution. If
you have explicitly specified the distribution on all
relevant dummy arguments, you can disable autocloning.
The consistency checking of the distribution between
actual and dummy arguments is not affected by this
option and is always enabled. The default is
clone=ON.
dsm=setting (Origin series systems only)
Enables or disables recognition of the distributed
shared memory directives. Specify ON or OFF for
setting. The default is dsm=ON.
old_mp=setting
Enables or disables recognition of the Silicon
Graphics multiprocessing directives and the Origin
series distributed shared memory directives. These
directives are the loop-level multiprocessing
directives (including those for Origin series systems)
and the PCA directives. Specify ON or OFF for
setting. The default is old_mp=ON.
open_mp=setting
Enables or disables recognition of the OpenMP C/C++
API multiprocessing directives and the Silicon
Graphics extensions to OpenMP. These directives begin
with an omp prefix. Specify ON or OFF for setting.
The default is ON.
-mp Generates multiprocessing code for the files being
compiled. This option causes the compiler to recognize
all multiprocessing directives.
If you are licensed for APO, specify the -apo option which
invokes APO and sets the -mp option. See the -apo option
description for details.
-mplist This option generates file file.w2c.c. If you are
licensed for APO, use the apolist option. See the
-apolist option description for details.
For more information on multiprocessing directives for the
O32 ABI, see the C Language Reference Manual.
-nocpp (cc only) Does not run the preprocessor phase on the
source files. This option is ignored when compiling a .i
file.
-noinline Suppresses expansion of inline functions. When this
option is specified, copies of inline functions are
emitted as static functions in each compilation unit where
they are called. It is preferable to use -INLINE:=OFF or
-IPA:inline=OFF if you are using IPA (see ipa(5)). One of
these options must be specified if you are using IPA.
-non_shared Builds a nonshared object. This is the opposite of -KPIC.
The -non_shared option causes the linker to search the
nonshared subdirectory of each default library search
directory. For more information, see the ld(1) man page.
The linker defaults the archive extensions from .so to .a.
The appropriate nonshared library images must be
installed.
-no_prelink (CC only) See the -prelink option description.
-none Turns off the effects of -all for the remainder of the
command line. This option cannot be specified with the -c
option.
See the ld(1) man page for more information about shared
libraries and archives.
-nostdinc Does not search for #include files in the standard
directory (/usr/include).
-o outfile Writes the executable file to outfile rather than to
a.out. When this option is used in conjunction with the
-c option and a single C source file, a relocatable object
file named outfile is produced. When specified with the
-S option, the -o option specifies the assembly file name.
If -o and -c are not specified, a file named a.out is
produced.
-O[n] Specifies the basic level of optimization desired. n can
be one of the following:
0 Turns off all optimizations.
1 Turns on local optimizations that can be done quickly.
2 Turns on extensive optimization. The optimizations at
this level are generally conservative, in the sense
that they are virtually always beneficial, provide
improvements commensurate to the compile time spent to
achieve them, and avoid changes which affect such
things as floating point accuracy.
3 Turns on aggressive optimization. The optimizations
at this level are distinguished from -O2 by their
aggressiveness, generally seeking highest-quality
generated code even if it requires extensive compile
time. They may include optimizations that are
generally beneficial but may hurt performance.
This option also enables the -OPT:roundoff=2 option
which does aggressive rearrangement of floating point
calculations with potential effects on accuracy. See
the opt(5), ipa(5), and lno(5) man pages for
additional information on general optimization,
standalone inliner and interprocedural analysis, and
loop nest optimizer, respectively.
If -O is not specified on the command line, the
default action is the same as -O0. If -O is specified
without a value for n, the default action is the same
as -O2.
-Ofast [ = ipxx]
Selects optimizations that maximize performance for the
given SGI target platform, ipxx. These optimizations may
differ between releases of the compiler and among the
supported platforms. They enable the full instruction set
of the target platform (for example, -mips4 for an
R10000). Although the optimizations are generally safe,
they may affect floating point accuracy due to
rearrangement of computations (for examples, see the
-OPT:roundoff=3 and -OPT:div_split options in the opt(5)
man page). Typical optimizations include -O3, -IPA,
-TARG:platform=ipxx, -n32, and
-OPT:Olimit=0:roundoff=3:div_split=ON:alias=typed. See
the -TARG:platform=ipxx option for information about the
optional argument. To determine which options are set by
-Ofast, use the -LIST:options option. The default is an
Origin 3000, IP35, or what -DEFAULT:platform=ipxx
specifies.
Ofast inlines the computation of abs (and related abs
routines) and may result in underflow of small arguments
and overflow for large arguments.
-OPT:... Controls miscellaneous optimizations. This option
overrides default optimizations. See the opt(5) man page
for more information, including the individual options in
this group.
-P Runs only the preprocessor and puts the result for each
source file in a corresponding .i file. The .i file has
no inline directives in it.
-pca, pcakeep, pcalist
(cc only; -o32 only) Invokes the Power C analyzer (PCA),
an optimization preprocessor that concurrentizes C by
restructuring certain parts of code and adding parallel
programming directives where possible.
pcakeep produces the file containing the concurrentized C
source code, file.m. pcalist produces the annotated
listing file, file.l. When the -IPA option is specified
with pcakeep, the default settings for IPA suboptions are
used with the exception of -IPA:inline, which is set to
OFF.
PCA is invoked only if you are licensed for it. For
licensing information, see your sales representative.
For the -n32 and -64 ABIs, these options have been
superseded by the -apo, -apokeep, and apolist options, if
you are licensed for APO.
-pch (CC only) Use the -LANG:pch option instead.
-pedantic In ANSI/ISO mode, warns that the #ident preprocessor
directive is nonstandard.
-prelink, -no_prelink
(CC only) The default is -prelink (along with -ptnone).
It instructs the compiler to emit information in the
object file, and in an associated .ii file to help the
prelinker determine which files are responsible for
instantiating the various template entities referenced in
a set of object files.
When -prelink is on, the compiler reads the associated .ii
file to determine if any template entities should be
instantiated. When -prelink is on and a link is being
performed, the driver calls a "template prelinker"; if
this prelinker detects missing template entities, they are
assigned to files (by updating the associated .ii file),
and the prelinker recompiles the necessary source files.
If -ptused or -ptall are specified, -no_prelink is the
default mode. The compiler will not read a .ii file to
determine which template entities should be instantiated,
and it will not store any information in the object file
about which template entities could be instantiated by
this source file. This option also directs the driver not
to invoke the template prelinker at link time.
See the C++ Programmer's Guide for more information on
using templates.
-pta, -ptall
(CC only) Template entities declared or referenced in the
current compilation unit are instantiated. For each fully
instantiated template class, all of its member functions
and static data members are instantiated whether or not
they are used. Nonmember template functions are
instantiated even if the only reference was a declaration.
If -ptall is specified, automatic instantiation is turned
off. This option may result in multiple definitions of
template entities, and the linker may not remove such
duplicates. If automatic instantiation is explicitly
turned on (by specifying -prelink), then any additional
template entities that the prelinker instructs the
compiler to instantiate will also be instantiated.
-ptnone (CC only) This is the default. No templates entities are
instantiated. If automatic instantiation is on (-prelink
is specified) then any template entities that the
prelinker instructs the compiler to instantiate will be
instantiated.
See the C++ Programmer's Guide for more information on
using templates.
-ptused (CC only) Template entities used in this compilation unit
will be instantiated. This includes all static members
for which there are template definitions. If -ptused is
specified, automatic instantiation is turned off by
default. This option may result in multiple definitions
of template entities and the linker may not remove
duplicates.
If automatic instantiation is explicitly turned on (by
specifying -prelink) then any additional template entities
which the prelinker instructs the compiler to instantiate
will also be instantiated.
-ptv (CC only) Prints the name of the template entity and
source file.
-quiet_prelink
(CC) Disables prelinker output in C++.
-r When specified with -IPA during compilation, the resulted
object is an ELF relocatable object, not an intermediate
object. When specified with -IPA:relopt=on, the resulting
object has non-PIC optimizations performed on it.
Because they are mutually exclusive, do not specify this
option with the -c option.
-rprocessor Specifies the code scheduler. processor can be one of the
following options:
Option Action
4000 Schedules code for the R4000 processor.
5000 Schedules code for the R5000 processor.
8000 Schedules code for the R8000 processor.
10000 Schedules code for the R10000 processor.
12000 Schedules code for the R12000 processor.
14000 Schedules code for the R14000 processor.
16000 Schedules code for the R16000 processor.
This option adds the following to the head of the library
search path, where processor is as you specified:
-L/usr/lib{32,64}/mips{3,4}/processor
The actual library search path that is added depends on
the ABI that is specified or implied. See the -o32, -n32,
and -64 option descriptions for more information on
specifying an ABI. (See the math(3) man page for details
of math library usage.)
Note that some of these directories may not exist.
-S Compiles the specified source files and creates symbolic
assembly language output files suffixed with .s. See the
MIPSpro Assembly Language Programmer's Guide for details
about the file produced by this option.
-shared The linker creates a shared library instead of an
executable program. The linker links together all the
object files (.o files) and archives (.a files) in the
command line into a shared library with the name specified
by the -o option. Any other shared libraries in the link
line are not included into the newly created shared
library, although they can be used to resolve external
symbols during the link. This option cannot be specified
with the -c option.
See the ld(1) man page for more information about shared
libraries and archives.
-show Prints the passes as they execute with their arguments and
their input and output files.
-signed Causes values of type char to be treated as if they had
type signed char (which can affect the result of integer
promotions), but the values of CHAR_MIN and CHAR_MAX are
not affected. The default is to treat values of type char
as if they had type unsigned char.
-TARG: ... The target option group controls the target architecture
and machine for which code is generated. The individual
controls in this group are:
dismiss_mem_faults [ = ( ON|OFF )]
Forces the kernel to dismiss any memory faults
(such as SIGSEGV or SIGBUS) which occur during
execution of the program (not just the code being
compiled). This option allows optimizations which
might cause extra faults and can slow down
execution if extra faults occur. It also prevents
recognition of legitimate faults. Default is OFF.
exc_max= [I][U][O][Z][V]
Specifies the maximum set of IEEE-754 floating
point exceptions for which traps may be enabled at
runtime for the program (not just the code being
compiled). Zero or more of the five letters
specify inexact (I), underflow (U), overflow (O),
divide-by-zero (Z), and invalid operation (V)
exceptions. This option allows optimizations
which might cause extra exceptions, and it may
prevent recognition of legitimate faults. It does
not affect explicit setting of exception enable
flags by the program, and should be avoided if the
program does this. See also the -TARG:exc_min
description. Default is IUOZV, affected by the
-TENV:X option.
exc_min= [I][U][O][Z][V]
Specifies the minimum set of IEEE-754 floating
point exceptions for which traps must be enabled
at runtime for the program (not just the code
being compiled). Zero or more of the five letters
specify inexact (I), underflow (U), overflow (O),
divide-by-zero (Z), and invalid operation (V)
exceptions. This option does not affect explicit
setting of exception enable flags by the program,
and should be avoided if the program does this.
See also the -TARG:exc_max option. The
-TARG:exc_max and -TARG:exc_min options specified
for the various files that comprise a program must
be consistent; for example, none of the
-TARG:exc_min values may require exceptions
disabled by -TARG:exc_max values. Default is
none.
fp_precise [ = ( ON|OFF )]
Forces the target processor into precise floating
point mode at execution time. Using this option
to compile any of the component source files of a
program invokes this feature in the resulting
program. This option is supported only on R8000
target processors and can cause significant
performance degradation for programs with heavy
floating point usage. See also the fpmode(1)
command.
isa= ( mips3|mips4 )
Identifies the target instruction set architecture
for compilation, such as the set of instructions
that are generated. Specify -TARG:isa=mips3 for
code that must run on R4000 processors. This
option is equivalent to specifying -mips3 or
-mips4 (see those options for defaults).
madd [ = ( ON|OFF )]
Enables or disables transformations to use
multiply/add instructions. These instructions
perform a multiply and an add with a single
roundoff. They are more accurate than the usual
discrete operations, and may cause results not to
match baselines from other targets. Use this
option to determine whether observed differences
are due to madds. Default is ON for MIPS IV
target, ignored for others.
platform [ = ipxx]
Identifies the target SGI platform for
compilation, choosing various internal parameters
(such as cache sizes) appropriately. The current
supported values are ip19, ip20, ip21, ip22_4k,
ip22_5k, ip24, ip25, ip26, ip27, ip28, ip30,
ip32_5k, ip32_10k and ip35. The appropriate
selection for your platform can be determined by
running "hinv -c processor". The first line
identifies the proper IP number and, for those
where a processor suffix (for example, _4k) is
required, the next line identifies the processor
(R4000).
processor= ( r4000|r5000|r8000|r10000|r12000|r14000|r16000 )
Selects the processor for which to schedule code.
The chosen processor must support the ISA
specified (or be implied by the ABI).
r4krev22=setting
Generates code to work around bugs in the R4000
rev 2.2 chip. This currently means simulating
64-bit variable shifts in the software. Specify
ON or OFF for setting. The default is OFF.
sync [ = ( ON|OFF )]
Enable/disable use of SYNC instructions. Default
is ON.
-TENV: ... The target environment option group controls the target
environment assumed and/or produced by the compiler. The
individual controls in this group are:
align_aggregate[= bytes ]
Controls alignment of allocated aggregates, such as
structs and arrays. bytes specifies that any
aggregate object at least that large is to have at
least that alignment. By default (or if bytes is not
specified), aggregates are aligned to the integer
register size, for example, 8 bytes for 64-bit
programs and 4 bytes for 32-bit programs. The value
0 specifies that the minimum alignment consistent
with the ABI is to be used. Attempts to reduce the
value below 0 will be ignored. Otherwise, the value
given must be a power of two no greater than 16.
check_div[=N]
See -DEBUG:div_check on the DEBUG_group(5) man page.
large_GOT [ =ON ]
Assumes that the Global Offset Table (for shared
code) is more than 64K bytes and generates large
offsets for references to it. Default is OFF. See
also the small_GOT option description.
small_GOT [ =ON ]
Assumes that the Global Offset Table (for shared
code) is less than 64K bytes and generates small
offsets for references to it. This is the default
mode. See also the large_GOT option decription.
varargs_prototypes [ = ( OFF|ON )]
See the -DEBUG:varargs_prototypes option description
on the DEBUG_group(5) man page.
X=0 .. 4
Specifies the level of enabled exceptions that is
assumed for purposes of performing speculative code
motion (default level 1 at -O0 .. -O2, 2 at -O3). In
general, an instruction is not speculated (i.e. moved
above a branch by the optimizer) unless any
exceptions it might cause are disabled by this
option. At level 0, no speculative code motion may
be performed. At level 1, safe speculative code
motion may be performed, with IEEE-754 underflow and
inexact exceptions disabled. At level 2, all
IEEE-754 exceptions are disabled except divide by
zero. At level 3, all IEEE-754 exceptions are
disabled including divide by zero. At level 4,
memory exceptions may be disabled or ignored.
NOTE: At levels above the default level 1, various
hardware exceptions that are normally useful for
debugging, or which are trapped and repaired by the
hardware, may be disabled or ignored, with the
potential of hiding obscure bugs. The program should
not explicitly manipulate the IEEE floating point
trap-enable flags in the hardware if this option is
used.
zeroinit_in_bss [ = ( OFF|ON )]
Enables data that is initialized to zero to be loaded
into the .bss section instead of the .data section.
-trapuv This option has been replaced by
-DEBUG:trap_uninitialized. See the DEBUG_group(5) man
page.
-U name Removes any initial definition of name.
-use_readonly_const
Puts string literals and file-level (static, common, or
external) const qualified initialized variables into a
.rodata section to separate these objects from data likely
to be modified. This is the default. However, if you
want constants to not be writeable, then in addition to
specifying -use_readonly_const, you must also specify -G0
-rdata_shared, because by default, the linker makes
.rodata and gp-relative sections writable.
-use_readwrite_const
Puts all const qualified variables and string literals in
a readable and writable data section.
-v This option has the same functionality as specifying
-show.
-version Displays the version number of the compiler.
-W c,arg1[,arg2...]
Passes the argument(s) argi to the compiler pass c where c
is one of [pKMfbalR]. The c selects the compiler pass
according to the following table:
Name (-n32 or -64) Character
preprocessor p
fec f (See below)
be b
asm a
ld l
ar R
Sets of these phase names can be used to select any
combination of phases. For example, -Wba,-o,foo passes
the option -o foo to the b and a phases.
-w Suppresses warning messages.
-woff all Suppresses warning messages. The -n32 option must also be
specified with this option.
-woff numberlist
Suppresses warning messages. numberlist is a comma-
separated set of 1 or more numbersets. A numberset is
either a simple integer or a pair of integers separated by
a hyphen. Examples: -woff 1527 suppresses warning 1527.
-woff 1527-1570 suppresses warnings 1527 through 1570.
-woff 1600-1700,1705-1790 suppresses numbers 1600 through
1700 and 1705 through 1790.
-xansi (cc only) See the -ansi option description.
-Xcpluscomm Applies C++ style comment rules. On the cc command line,
the -n32 option must also be specified.
-Y c,path Sets the path in which to find the associated phase, using
the same phase names as given in the -W option. The
following characters can also be specified:
I Specifies where to search for include files
S Specifies where to search for startup files
(crt*.o)
L Specifies where to search for libraries
files Indicates the source files to be compiled or assembled.
File suffixes and the commands that accept them are as
follows:
Command File Suffix
CC .c, .C, .i, .c++, .C++, .cc, .cxx, .CXX, .CC,
.cpp, and .CPP
cc,c89,c99 .c and .i
The above are the default suffixes and their
interpretation. By default, the compiler looks at the
suffix of a file to determine how to compile it. For
example,
cc a.cxx b.s
will treat a.cxx as a C++ file, and b.s as an assembly
file. However, for compatibility, we allow the .c suffix
to be interpreted as either C or C++. Thus,
CC a.c
will treat a.c as a C++ file.
But there are also several options that can be used to
control how suffixes are interpreted. These options are:
-ignore_suffix
Determines the language of the source file being compiled
by the command used to invoke the compiler. By default,
the language is determined by the file suffixes. When the
-ignore_suffix option is specified, those suffixes are
ignored. For example,
cc -ignore_suffix a.cxx b.foo
will treat a.cxx and b.foo as C source.
-use_command
Use the command name to determine which compiler to invoke
for recognized source files. For example,
cc -use_command a.cxx b.foo
will treat a.cxx as C source, b.foo as object.
-use_suffix Use the file suffix to determine which compiler to invoke.
For example,
cc -use_suffix a.cxx b.foo
will treat a.cxx as C++ source, b.foo as object.
-x <lang> The following files are assumed to be of the specified
language, regardless of suffix. The valid values for lang
are c, c++, f, f90, assembler, object, or none. The none
value means that we revert back to the default suffix
rules for determining how to compile the file.
Note that no matter what suffix rule is used to compile a file, the
linkage is based on the command-name. For example,
CC a.f
will compile a.f as a fortran file, but then do a C++ link.
LOADER OPTIONS
Other arguments are assumed to be either loader options, object files,
or libraries. These files, together with the results of any
compilations specified, are loaded in the order given, producing an
executable program with the default name a.out.
ENVIRONMENT VARIABLES
For information on environment variables, see the pe_environ(5) man
page.
GNU CC NOTES
The following table lists some of the GNU compiler command line
options and the closest corresponding SGI C++ compiler command line
options. Note that the correspondence is close but may not be exact
and different versions of either compiler may have slight variations
in the meaning of arguments to the options.
SGI GNU
o32, 32 mabi=32
n32 mabi=n32
64 mabi=64
ansiW pedantic
TARG b
The following list summarizes some of the major differences between
the GNU cc compiler and the MIPSpro C compiler. The wording gcc
allows or g++ allows in the following paragraphs indicates that the
GNU compiler is providing more flexible constructs beyond what is
allowed in the standard. The MIPSpro compilers adhere more closely to
standards requirements.
* The gcc compiler allows variadic macros; the MIPSpro 7.4 compilers
support these macros in c99 mode. If you have code that uses
ellipses (...) as part of a macro definition and you are not
compiling with c99, you will need to rewrite the macro. Two possible
approaches are to replace the macro with a new variadic function, or
to create a family of macros, each taking different (fixed) numbers
of arguments.
* When processing modules on the command line, the IRIX loader (ld)
requires that at least one reference to an unresolved symbol appear
before inclusion of the library that resolves that reference. gcc
uses a multi-pass algorithm to resolve undefined symbols, and so
lets you specify libraries in an arbitrary order.
* The gcc compiler does not correctly pass/return structures that are
smaller than 16 bytes and which are not 8 bytes. gcc is consistent
with itself, but not consistent with the MIPSpro C compiler, so the
only failures that can happen are when mixing code compiled with the
two compilers. Recent releases of libgcc have special wrapper
procedures that contain the known instances of these functions in
libc. Note that this may not be true for all ABIs; this may vary
between gcc versions. Consult the release notes with the product for
details.
* The ANSI specification leaves the determination of valid line
terminators to the compiler implementors. MIPSpro allows '^J',
while gcc allows both '^J' and '^M'. The to_unix command will
convert files containing DOS-style '^M' line terminators to the UNIX
standard '^J' form.
* The MIPSpro compilers use 16 byte long doubles, while gcc uses 8
bytes.
* gcc allows the non-standard __FUNCTION__ and __PRETTY_FUNCTION__
pseudo-macros. These are not true macros, so you must use _GNUC__
to test for them. As of IRIX 6.5.18, the c99 func macro is
available, which expands to a function name.
* By default gcc allows C++ style double slash (//) comments in C
code. To obtain this behavior with the MIPSpro C compilers you must
specify the -Xcpluscomm command line option or use c99, which
defines a double slash (//) to be a comment.
* The gcc compiler treats extern inline functions as being extern,
while the MIPSpro compilers treat them as inline. To get equivalent
behavior, remove the inline keyword.
* The gcc compiler is more lax about accepting non-static
initializers, extra parentheses, and the use of non-compile-time
constants. The MIPSpro compilers adhere more closely to the ANSI
standard.
* The gcc compiler allows pointer arithmetic on void pointers. For
example, gcc allows
void *foo;
foo += 5;
When using MIPSpro, you must cast the pointer to a type with a size:
void *foo;
foo = (char*)foo + 5;
* gcc allows the use of casts as lvalues. For example:
void *foo;
(char*)foo += 5;
When using MIPSpro compilers you cannot assign to casts:
void *foo;
foo = (char*)foo + 5;
* gcc allows block expressions, such as ({x++});. When using MIPspro
compilers, remove the extra parentheses.
The following list summarizes the differences between the g++ compiler
and the MIPSpro C++ compiler:
* There are name mangling and run-time differences
* g++ allows non-constant constants. For example, the following is
allowed with g++:
char tmp[argc];
Use the following with the MIPSpro C++ compiler:
char *tmp=alloca(argc);
* g++ allows redefinition of default arguments
#ifdef _GNUC_ tests if gcc is being used; if you wish to use
compiler-specific extensions, you should write conditional code for
it.
NOTES
The compiler uses the same set of message numbers when compiling -n32
or -64, but it uses a different set of message numbers when compiling
-o32. Keep this in mind when writing multi-ABI Makefiles.
All SGI platforms support the development and execution of -o32, -n32,
and -64 applications, but the subsystems containing the appropriate
libraries are not always installed by default. During installation,
you may have to select subsystems with names like product.sw32 for
-n32 libraries and product.sw64 for -64 libraries.
The compiler attempts to continue after finding semantic errors.
These errors may result in compiler internal errors.
If you choose use -D_PTHREADS (see the Standard Template Library
Programmer's Guide for threads guidance) at compile time, you must use
link against libCio_pthreads.a at link time. The Standard Template
Library Programmer's Guide fails to mention the libCio_pthreads.a
requirement as of January 2004. Use of -D_PTHREADS is not required
for thread-safety.
EXAMPLES
EXAMPLE 1: Compile 64-bit MIPS IV (R8000, R10000, R5000) code, which
will not run on R4000/R4400 processors.
cc -64 -mips4 ...
EXAMPLE 2: Compile 64-bit ABI (MIPS 3) code, scheduled for best
performance on the R8000 processor but not using R8000-specific (MIPS
IV) instructions so that it will be executable on R4000/R4400
processors.
cc -64 -mips3 -TARG:proc=r8000 ...
EXAMPLE 3: Compile with extensive optimization enabled, allowing
transformations which affect floating point roundoff and overflow,
assuming strict ANSI C aliasing rules.
cc -O2 -OPT:roundoff=2:alias=typed ...
EXAMPLE 4: Compile with aggressive optimization (including SWP)
enabled, allowing transformations with arbitrary effects on floating
point roundoff and overflow.
cc -O3 -OPT:roundoff=3 ...
EXAMPLE 5: Compile with aggressive optimization and generate the
analysis files used by ProDev ProMP, the parallel analyzer. The
cvpav(1) command invokes the parallel analyzer.
cc -O3 -c -apokeep test.c test.o
cvpav -f test.c
FILES
a.out Default name of executable output file
file.c C source file
file.i C source file
file.anl, file.m Program analysis files used by the parallel
analyzer, ProDev ProMP
file.o Object file
file.s Assembly language source file
file.l Listing file
ii_files Directory that contains .ii files
mon.out File produced for analysis by prof(1)
rii_files Directory generated for book-keeping information
used to implement data distribution directives
/usr/include Standard directory for #include files
/usr/bin/ld Loader
/usr/bin/cord Function rearranger
/tmp/cmplr* Temporary files
/etc/compiler.defaults
Default ABI, ISA and processor options
configuration file
/usr/lib{32,64}/libc.so.1
Shared standard library (This file is loaded by
using the -lc loader option and not a full path
name.)
/usr/lib{32,64}/libfpe.so
Floating point exception handler library, see
sigfpe(3c)
/usr/lib{32,64}/libm.so
Shared math library
/usr/lib{32,64}/libprof.a
Profiling library
SEE ALSO
as(1), collide(1), cpp(1), copt(1), cvpav(1), f90(1), mpc(1), dis(1),
nm(1), dbx(1), elfdump(1), f77(1), ftoc(1), ld(1), prof(1),
speedshop(1), what(1)
getabi(3c), sigfpe(3c)
gp_overflow(5), lno(5), o32(5), opt(5), pe_environ(5)
W. Kernighan and D. M. Ritchie, The C Programming Language, Prentice-
Hall, 1978
C Language Reference Manual, 007-0701
MIPSpro C++ Programmer's Guide, 007-0704
MIPSpro N32/64 Compiling and Performance Tuning Guide, 007-2360
MIPSpro 64-Bit Porting and Transition Guide, 007-2391
MIPSpro N32 ABI Handbook, 007-2816
ProDev WorkShop: ProMP User's Guide, 007-2603
MIPSpro Assembly Language Programmer's Guide
Standard Template Library Programmer's Guide, 007-3426
home/search |
what's new |
help