cc(1)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