cc(1)
cc, c89, CC - Invokes the MIPS C, MIPSpro C, or MIPSpro C++ compiler
As shipped in IRIX 6.5.15. 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.