cc(1)

cc, c89, CC - Invokes the MIPS C, MIPSpro C, or MIPSpro C++ compiler

As shipped in IRIX 6.5.5. Added in IRIX 6.5.5.

NAME
     cc, c89, CC - Invokes the MIPS C, MIPSpro C, or MIPSpro C++ compiler

SYNOPSIS
     cc, c89 [-o32 | -n32 | -64] [-all] [-ansi] [-ansiE] [-ansiW] [-apo]
     [-apokeep] [-apolist] [-ar] [-bigp_on] [-bigp_off] [-c] [-cckr]
     [-CLIST:...] [-common] [-D name=def] [-D name] [-DEBUG:...]
     [-diag_error numberlist] [-diag_remark numberlist]
     [-diag_suppress numberlist] [-diag_warning numberlist] [-dollar] [-E]
     [-fb<file>] [-fb_create <path>] [-fb_opt <path>] [-fbgen]
     [-fbuse<file>] [-float] [-float_const] [-fullwarn] [-G num] [-gn]
     [-help] [-I] [-I dir] [-ignore_suffix] [-INLINE:...] [-IPA:...]
     [-KPIC] [-L directory] [-l library] [-LANG:...] [-LIST:...] [-LNO:...]
     [-M] [-MDupdate filename] [-mipsn [-MP] [-mp] [-mplist] [-nocpp]
     [-non_shared] [-nostdinc] [-o output] [-On] [-OPT:...] [-P] [-pca]
     [-pcakeep] [-pcalist] [-pedantic] [-r] [-rprocessor] [-S] [-show]
     [-signed] [-TARG:...] [-TENV:...] [-trapuv] [-U name]
     [-use_readonly_const] [-use_readwrite_const] [-v] [-version]
     [-W c,arg1[,arg2...]] [-w] [-w2] [-woff all] [-woff numberlist]
     [-xansi] [-Xcpluscomm] [-Y c,path]

     CC [-64] [-all] [-anach] [-ansiE] [-ansiW] [-apo] [-apokeep]
     [-apolist] [-ar] [-auto_include] [-bigp_on] [-bigp_off]
     [-brief_diagnostics] [-c] [-cfront] [-CLIST:...] [-common]
     [-D name=def] [-D name] [-DEBUG:...] [-diag_error numberlist]
     [-diag_remark numberlist] [-diag_suppress numberlist]
     [-diag_warning numberlist] [-dollar] [-E] [-fb<file>] [-fb_create
     <path>] [-fb_opt <path>] [-fbgen] [-fbuse<file>]
     [-FE:eliminate_duplicate_inline_copies] [-FE:template_in_elf_section]
     [-float] [-float_const] [-fullwarn] [-G num] [-gn] [-gslim] [-help]
     [-I] [-I dir] [-ignore_suffix] [-INLINE:...] [-IPA:...] [-J #] [-KPIC]
     [-L directory] [-l library] [-LANG:...] [-LIST:...] [-LNO:...] [-M]
     [-MDupdate filename] [-mipsn [-MP] [-mp] [-no_auto_include]
     [-no_prelink] [-nocpp] [-non_shared] [-nostdinc] [-o output] [-On]
     [-OPT:...] [-P] [-pca] [-pcakeep] [-pcalist] [-pch] [-pedantic]
     [-prelink] [-pta] [-ptall] [-ptnone] [-ptused] [-ptv] [-r]
     [-rprocessor] [-S] [-show] [-signed] [-TARG:...] [-TENV:...] [-trapuv]
     [-U name] [-use_readonly_const] [-use_readwrite_const] [-v] [-version]
     [-W c,arg1[,arg2...]] [-w] [-w2] [-woff all] [-woff numberlist]
     [-Xcpluscomm] [-Y c,path]

IMPLEMENTATION
     IRIX systems

DESCRIPTION
     This man page describes the cc(1), c89(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.

     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 manuals.

     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, 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 hypen, 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.

     -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
             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 MIPSpro C and C++ Pragmas.

             When specifying the -o32 option on the cc command line, -apo
             invokes the IRIS Power C analyzer (PCA).  See the -pca option
             description.

     -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.  See the C++
             Programmer's Guide for more information on using templates.

     -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.  Once 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 a relocatable object file for each named source file,
             but does not link the object files.  The relocatable object
             file name corresponds to the name of the source file; a .o
             suffix is substituted for the suffix of the source file.

     -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.

     -clist  Enables the C listing.  Specifying -clist is the equivalent of
             specifying -CLIST:=ON.

     -CLIST: ...
             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.

     -D name=def
     -D name 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
             list of message numbers.

     -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.

     -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 instrumneted
             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.

     -fbgen  Generates an instrumented executable program.  Such an
             executable is suitable for producing one or more .Counts files
             for feedback compilation.  When the -c option is used to
             produce an object file that is eventually linked to form an
             instrumented executable, the -fbgen option should also be
             specified.  If the -c option is not specified, pixie(1) is run
             automatically to instrument the generated executable.  Run the
             .x executable file that is generated without the .x suffix.

     -fbuse <file>
             Specifies a .Counts file that is used to guide feedback
             compilation.  The specified file is used along with the
             instrumented binary that produced the .Counts file to generate
             a compiler feedback file, which is then used to direct
             optimization of the program.  Run the .x executable file that
             is generated without the .x suffix.

     -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.

     -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).

     -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 (.c, .cpp, .C,
             .cxx, .f, .f90, .s).  When the -ignore_suffix option is
             specified, the cc command invokes the C compiler.

     -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:

             alias_const [ = ( ON|OFF )]
                 Enables or disables optimization across functions with
                 const reference parameters.  Assumes that a const
                 reference parameter is NOT modified by the called
                 function.  See the release notes for details and examples
                 of this optimization.  Default is OFF.

                 NOTE: For this optimization to work correctly, both the
                 caller and the callee have to be compiled with
                 -LANG:alias_const.

             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 OFF, which is the ARM behavior (the scope of the name
                 declared extends to the end of the block enclosing the for
                 statement).

             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.

             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.

             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.

             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 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 MIPSpro 7.3
                 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:

               Argument            Action

               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
             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 is ignored.  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.  This is the default.

             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 no value is specified for n, 2 is assumed.

     -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 R10000 Power
             Challenge, IP25.

     -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 more information about PCA, see the IRIS Power C User's
             Guide.

             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.

             See the C++ Programmer's Guide for more information on using
             templates.

     -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.

             See the C++ Programmer's Guide for more information on using
             templates.

     -ptv    (CC only) Prints the name of the template entity and source
             file.

             See the C++ Programmer's Guide for more information on using
             templates.

     -r      When specified with -IPA and -c 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.

     -rprocessor
             Specifies the code scheduler.  processor can be one of the
             following options:

             Option         Action

             4000 or 4k     Schedules code for the R4000 processor.

             5000 or 5k     Schedules code for the R5000 processor.

             8000 or 8k     Schedules code for the R8000 processor.

             10000 or 10k   Schedules code for the R10000 processor.

             12000 or 12k   Schedules code for the R12000 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.)

     -S      Compiles the specified source files and creates symbolic
             assembly language output files suffixed with .s.

     -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, and ip32_10k.  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 )
                  Selects the processor for which to schedule code.  The
                  chosen processor must support the ISA specified (or be
                  implied by the ABI).  The processor can also be indicated
                  by specifying r4k, r5k, r8k, r10k, r12k.

             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.
                  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 -fullwarn
             (verbose warnings).

     -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 [pKMfbal].  The c selects the compiler pass according
             to the following table:

             Name (-n32 or -64)            Character

             preprocessor                  p

             pca                           K (Automatic Parallelization
                                           Option Only; O32 ABI only)

             mpc

             fec                           f (See below)

             be                            b

             asm                           a

             ld                            l

             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.

     -w2     Counts warnings as errors.  The -n32 option must also be
             specified with this option.

     -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

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.

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.

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 -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 -03 -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), pixie(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

     C++ Programmer's Guide

     MIPSpro Compiling and Performance Tuning Guide

     MIPSpro 64-Bit Porting and Transition Guide

     MIPSpro N32 ABI Handbook

     ProDev ProMP User's Guide

     This man page is available only online.