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