CC(1) Silicon Graphics CC(1) NAME cc - C compiler SYNOPSIS cc [ option ] ... file ... DESCRIPTION cc, the ucode C compiler, produces files in the following formats: object code in ELF format (the normal result), binary ucode, ucode object files, and binary or symbolic assembly language. By default, cc behaves as if the option -xansi were on the command line. This is an extended ANSI/ISO C mode with _STDC_, _EXTENSIONS_, and _INLINEINTRINSICS defined (see -xansi below). The environment variable SGI_CC may be set to any one of -cckr, -ansi, -xansi, or -ansiposix to change the default definition. The compiler inspects options -cckr, -ansi, -xansi, and -ansiposix in the following order: 1) the default 2) the value of the SGI_CC environment variable 3) the command line. The last of these options seen is used. It is impossible to compile with both Traditional C and ANSI/ISO C in one command. cc accepts several types of arguments: Arguments whose names end with `.c' are assumed to be C source programs. They are compiled, and each object program is left in the file whose name consists of the last component of the source with `.o' substituted for `.c'. The `.o' file is only deleted when a single source program is compiled and loaded all at once. If the program is loaded, then the default output name is `a.out'. Arguments whose names end with `.s' are assumed to be symbolic assembly language source programs. They are assembled, producing a `.o' file. Arguments whose names end with `.i' are assumed to be C source after being processed by the C preprocessor. They are compiled without predefining any symbols, except _CFE, for the preprocessor. The -nocpp option is ignored when compiling `.i' files. If the highest level of optimization is specified (with the -O3 flag) or only ucode object files are to be produced (with the -j flag) each C source file is compiled into a ucode object file. The ucode object is left as a file in the current directory and is named the same as the source file after substituting `.u' for `.c'. The suffixes described next primarily aid compiler development and are not generally used. Arguments whose names end with `.B', `.O', `.S', and `.M' are assumed to be binary ucode, produced by the front-end, optimizer, ucode object file splitter and ucode merger respectively. Arguments whose names end with `.G' are assumed to be binary assembly language, which is produced by the code generator and the symbolic to binary assembler. Page 1 Release 5.3 CC(1) Silicon Graphics CC(1) Files that are assumed to be binary ucode or binary assembly language by the suffix conventions are also assumed to have their corresponding symbol table in a file with a `.T' suffix. cc will define the C preprocessor symbols LANGUAGE_ASSEMBLY and _LANGUAGE_ASSEMBLY when an `.s' file is being compiled. The predefined symbols used by cc for `.c' files are defined below. One can see (and check) these definitions with the -show option to cc . The C preprocessor adds other standard definitions of its own if -cckr applies. The following options are interpreted by cc. See ld(1) for load-time options. -c Suppress the loading phase of the compilation and force an object file to be produced even if only one program is compiled. -g0 Have the compiler produce no symbol table information for symbolic debugging. This is the default. -g1 Have the compiler produce additional symbol table information for accurate but limited symbolic debugging of partially optimized code. This option overrides the optimization options (-O, -O1, -O2, -O3). -g or -g2 Have the compiler produce additional symbol table information for full symbolic debugging and not do optimizations that limit full symbolic debugging. These options override the optimization options (-O, -O1, -O2, -O3). -g3 Have the compiler produce additional symbol table information for full symbolic debugging for fully optimized code. This option makes the debugger inaccurate. This option can be used with the optimization options (-O, -O1, -O2, -O3). -mips1 Generate code using the instruction set of the R2000/R3000 RISC architecture. This is the default. -mips2 Generate code using the MIPS II instruction set (MIPS I + R4000 specific extensions). -w Suppress warning messages. -w2 Warnings from Traditional C and from ANSI C (excluding warnings from the preprocessor) are counted as errors. Note that warnings suppressed with the -w or -woff options will not be counted as errors. -cckr The traditional K&R/Version7 C with SGI (and some ANSI/ISO-C- like) extensions, including function prototypes, void, void*. The symbols _MIPS_FPSET, _MIPS_ISA, _MIPS_SIM, _MIPS_SZINT, _MIPS_SZLONG, _MIPS_SZPTR, __EXTENSIONS__, LANGUAGE_C, Page 2 Release 5.3 CC(1) Silicon Graphics CC(1) _LANGUAGE_C, __INLINE_INTRINSICS, sgi, __sgi, unix, mips, host_mips, __unix, __host_mips, _SVR4_SOURCE, _MODERN_C, _SGI_SOURCE, __DSO__, SYSTYPE_SVR4, _SYSTYPE_SVR4, _LONGLONG, __mips, _MIPSEB, MIPSEB, and _CFE are defined to the preprocessor. -ansi (ANSI/ISO C only) Pure ANSI/ISO C. The symbols _MIPS_FPSET, _MIPS_ISA, _MIPS_SIM, _MIPS_SZINT, _MIPS_SZLONG, _MIPS_SZPTR, _LANGUAGE_C, __sgi, __unix, __host_mips, _MODERN_C, __DSO__, _SYSTYPE_SVR4, __mips, _MIPSEB, __STDC__, and _CFE are defined to the preprocessor. The symbol __ANSI_CPP__ is defined, and ANSI/ISO trigraphs are processed, by default. NOTE: when compiling in pure ANSI/ISO mode ( -ansi or -ansiposix) several standard UNIX symbols (e.g. environ, end) may only be referenced by their ANSI/ISO-compliant counterparts (e.g., _environ, _end). The type 'long long' is allowed, but results in a warning, in -ansi and -ansiposix modes. To take advantage of this type in libraries that refer to __int64_t and __uint64_t the user must define the macro __LONGLONG on the command line; otherwise, _int64t and _uint64t will be defined as structs. See the ANSI C Transition Guide for more information. -ansiposix (ANSI/ISO C only) Same compilation environment as -ansi with the additional preprocessor definition of _POSIX_SOURCE. This is a pure ANSI/ISO environment, and __STDC__ is defined with this option as well as with the -ansi option. -xansi (ANSI/ISO C only) ANSI/ISO C with all the same definitions as -cckr. Note that __STDC__ is defined, __EXTENSIONS__ is defined and adds many symbols into the namespace, and __INLINE_INTRINSICS is defined and may cause some intrinsiclibrary routines and strcpy from to be inlined. Such inlined routines 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 introductory remarks of this man page). -use_readwrite_const All string and aggregate constants are put into a read/write data section. -use_readonly_const Every string and aggregate constant will be put into the .rodata section, provided its size is larger than or equal to the size given by the -G option. The linker will by default put the .rodata section into a writable segment, thus preventing segmentation faults for programs that write to these "constants", while the ld(1) option -rdata_shared can be used to override this default to make the section read-only. Page 3 Release 5.3 CC(1) Silicon Graphics CC(1) -pedantic Makes the ANSI/ISO preprocessor warn about use of the #ident preprocessor command. The #ident preprocessor command is a System V extension which is silently ignored unless 1) -pedantic is supplied and 2) the ANSI/ISO preprocessor is used. -pedantic is ignored unless the ANSI/ISO preprocessor is used. -fullwarn Does various extra checks and produces additional warnings that are normally suppressed by default. This option is recommended for all compiles during software development. -wlint[,-options] provides lint-like warnings and takes into account the other compiler options defined on the cc line (including -woff). The warnings are issued in a compressed format and the options can be any combination of f (use the normal compiler format for warnings, instead of the compressed lint-like format), z 2(suppress warnings about explicit conversions between pointers and integral types of different sizes), a (suppress warnings about implicit conversions with possible loss of accuracy), i (suppress warnings about implicit conversions with no loss of accuracy), p (enable portability checks), v (suppress warnings about unused function parameters and parameter types that could be const qualified), h (suppress warnings about hex/octal constants smaller than size of type, about undefined struct/union/enum, about redundant expressions/statements, about function returning random value to place of invocation, about control falling through a (case) labelled statement), u (suppress warnings about unused/undefined global struct/union/enums/statics), and q (quit compilation after the lint checks, thus producing no output files). Examples: -wlint,-pq issues all possible warnings and quits compilation without producing any output files. -wlint,-pui issues all possible warnings, except about unused/undefined global struct/union/enums/statics and implicit conversions that do not lead to a loss of accuracy. The compilation produces output files as usual. -woff numberlist In ANSI/ISO C, warnings can be suppressed. All warnings have been given a number: the number appears immediately after the word ``Warning'' in the warning text, and is larger than 500 (to make warning numbers disjoint from those in an earlier version of the compiler). The 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 527 supresses warning 527. -woff 527-570 supresses warnings 527 through 570. -woff 600-700,705-790 suppresses numbers 600 through 700 and 705 through 790. Page 4 Release 5.3 CC(1) Silicon Graphics CC(1) -common The ANSI/ISO C Strict-Ref/Def-initialization model can be relaxed to the traditional IRIX Relaxed Ref/Def model with this option. (defined in the ANSI/ISO C Standard, section 3.1 and elaborated on in the Rationale, page 23). 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, then it necessary to compile the C source with the -common flag. When using traditional K&R/Version7 C (i.e., -cckr), specifying -common is redundant and ignored. -p0 Do not permit any profiling. This is the default. If loading happens, the standard runtime startup routine (crt1.o) is used; no profiling library is searched. -p or -p1 Set up for profiling by periodically sampling the value of the program counter. This option only effects the loading. When loading happens, this option replaces the standard runtime startup routine with the profiling runtime startup routine (mcrt1.o) and searches the level 1 profiling library (libprof1.a) When profiling happens, the startup routine calls monstartup(3) and produces a file mon.out that contains execution-profiling data for use with the postprocessor prof(1). -sopt[,option][,option]... Invoke the C source-to-source optimizer, copt(1), on the indicated source file(s). This is distinct from the standard global optimizer, uopt(5), which is invoked with one of -O, -O2, or -O3. Additional options can be passed to -sopt by using a comma-separated list, but the options passed by default can not be changed (use cc -sopt -show to see what is passed by default). See copt(1) for more details. -O0 Turn off all optimizations. -O1 Turn on all optimizations that can be done quickly. This is the default. -O or -O2 Invoke the global ucode optimizer. -O3 Do all optimizations, including global register allocation. This option must precede all source file arguments. With this option, a ucode object file is created for each C source file and left in a `.u' file. The newly created ucode object files, the ucode object files specified on the command line, the runtime startup routine, and all of the runtime libraries are ucode linked. Optimization is done on the resulting ucode linked file and then it is linked as normal producing an ``a.out'' file. No resulting Page 5 Release 5.3 CC(1) Silicon Graphics CC(1) `.o' file is left from the ucode linked result as in previous releases. If -c is specified with -O3 then a `u.out.o' file is created, except if there is only one source file then the result is put in `file.o'. -j Compile the specified source programs, and leave the ucode object file output in corresponding files suffixed with `.u'. Please note that this switch is non-standard and may not be supported across product lines. -ko output Name the output file created by the ucode loader as output. This file is not removed. If this file is compiled, the object file is left in a file whose name consists of output with the suffix changed to a `.o'. If output has no suffix, a `.o' suffix is appended to output. Please note that this switch is non-standard and may not be supported across product lines. -k Pass options that start with a -k to the ucode loader. This option is used to specify ucode libraries (with -klx ) and other ucode loader options. Please note that this switch is non- standard and may not be supported across product lines. -S Compile the specified source programs and leave the symbolic assembly language output in corresponding files suffixed with `.s'. If the -O3 option is used, then a single file, u.out.s is produced. -MDupdate filename While compiling, update filename to contain header, library, and runtime make(1) dependencies for cc's output file. cc -MDupdate updates only lines that end with a distinctive make comment and begin with the name of the output file followed by a colon. -M Run only the macro preprocessor on the named C programs, requesting it to generate make dependencies and send the result to the standard output. -P Run only the C macro preprocessor and put the result for each source file (by suffix convention, i.e., '.c' and '.s') in a corresponding `.i' file. The `.i' file has no `#' lines in it. -E Run only the C macro preprocessor files (regardless of any suffix or not), and send the result to the standard output. The resultant output will contain line directives. This overrides the -nocpp option. -o output Name the final output file output. If this option is used, the file `a.out' is undisturbed. Page 6 Release 5.3 CC(1) Silicon Graphics CC(1) -Dname=def -Dname Define the name to the C macro preprocessor, as if by `#define'. If no definition is given, the name is defined as "1". -Uname Remove any initial definition of name. -Idir `#include' files whose names do not begin with `/' are always sought first in the directory of the file argument, then in directories specified in -I options, and finally in the standard directory (/usr/include). -nostdinc This option will cause `#include' files never to be searched for in the standard directory (/usr/include). -I This option will cause `#include' files never to be searched for in the standard directory (/usr/include). This option will be phased out in a future release; -nostdinc should be used in its place. -G num Specify the maximum size, in bytes, of a data item that is to be accessed from the global pointer. Num is assumed to be a decimal number. If num is zero, no data is accessed from the global pointer. Except for -O3 optimization, this flag is meaningful for non-shared compilations only and must be used with the -nonshared flag. The default value for num is 8 bytes. With -O3 optimization, the compiler automatically selects data items to be accessed via the global pointer, and the default value for num is set to 0. Data stored off of 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 with -G 0. Please note that this switch is non-standard and may not be supported across product lines. -show Print the passes as they execute with their arguments and their input and output files. -xgot Compile using a 32-bit offset in the Global Symbol Table (GOT). By default, addresses are loaded out of the GOT using a 16-bit offset from a context pointer. The default size of the GOT thus is limited to 64K bytes, or about 16K worth of symbols. This can sometimes result in a "GOT overflow" message. Use of the -xgot option allows the GOT to contain up to 1G of entries; however, the resulting executable will be somewhat larger and slower. For more information about the GOT, the -xgot option and some important notes about its use, see the dso(5) man page (the FAQ section, "What should I do about a GOT overflow?"). -v Print the passes as they execute with their arguments and their input and output files. Please note that this switch is non- standard and may not be supported across product lines. It is Page 7 Release 5.3 CC(1) Silicon Graphics CC(1) suggested that you use -show instead. -nocpp Do not run any C macro preprocessor on C and assembly source files before compiling. This option is ignored when compiling a '.i' file. -acpp uses an alternate GCC-based ANSI/ISO C preprocessor instead of the builtin preprocessor (See accp(5) ). The symbol __ANSI_CPP__ is defined by acpp(5). By default, ANSI/ISO trigraphs are not processed. To transform trigraphs, give the option -Wp,-trigraphs . -oldcpp Will cause an alternative preprocessor to be used in place of the preprocessor built into the compiler front-end. In -ansi -ansiposix and -xansi modes the effect of this option is equivalent to the -acpp option. In -cckr mode an alternative K&R preprocessor is used (see cpp(1) for details about this alternative preprocessor). -Olimit num Specify the maximum size, in basic blocks, of a routine that will be optimized by the global optimizer. If a routine has more that this number of basic blocks it will not be optimized and a message will be printed. An option specifying that the global optimizer is to be run (-O -O2, -O3) must also be specified. Num is assumed to be a decimal number. The default value for num is 1000 basic blocks. -cord Run the procedure rearranger, cord(1), on the resulting file after linking. The rearrangement is done to improve the paging and caching performance of the program's text. The output of cord(1) is left in the file specified by the -o output option or a.out by default. If no -feedback file is specified, then <outfile>.fb is used as the default. -feedback Used with the -cord option to specify feedback file(s) to be used. This file can be produced by prof(1) with its -feedback option from an execution of the instrumented program produced by pixie(1). Multiple feedback files can be specified with multiple -feedback options. The following options are specific to cc: -mp Enable the multiprocessing directives. (Power C only.) -pca Run the pca(1) preprocessor to automatically discover parallelism in the source code. This also enables the multiprocessing (-mp) directive. There are two optional arguments: -pca list, which will run pca and produce a listing file with suffix .L, explaining which loops were parallelized and which were not (and if not, why not); and -pca keep, which will run pca, produce the listing file, and Page 8 Release 5.3 CC(1) Silicon Graphics CC(1) keep the transformed multiprocessed C intermediate file in a file with suffix .M. (Power C only.) -signed Cause all char declarations to be signed char declarations, the default is to treat them as unsigned char declarations. -varargs Prints warnings for lines that may require the <varargs.h> macros. Please note that this switch is non-standard and may not be supported across product lines. -float Causes the compiler to use single-precision floating-point whenever the programmer specified float (except in function arguments). For example, in float a; int b; float c; c = a * b; 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. If the -float option is specified, b will be promoted to single- precision and a single-precision multiply will be done. This option does not affect float and double argument passing; float function arguments are always promoted to double unless function prototypes are used. Unsuffixed floating-point constants will be cast to single precision values in subexpressions with no double (or long double) operands. The -float option is ignored in all ANSI/ISO C conformance modes and only has effect -cckr mode. ANSI/ISO C uses single precision floating-point operations where allowed by the Standard. -prototypes causes prototype diagnostic messages to be issued in -cckr mode. By default, diagnostics about function prototype declarations are provided in -ansi, -ansiposix and -xansi modes, while such diagnostics is suppressed in -cckr mode. Code generation is not affected by the option. Use of this option is recommended in combination with the -fullwarn option. -Xcpluscomm Process C++ style comment (// ). This comment is not processed by default. -noprototypes removes prototype error and warning messages in -cckr mode (this is the default). The last of any sequence of -prototypes and Page 9 Release 5.3 CC(1) Silicon Graphics CC(1) -noprototypes is the one that is effective. This option is ignored by ANSI/ISO C. -framepointer Use a register other than the stack-pointer(sp) as the frame pointer in each function compiled with this option; function entry is slightly slower for each function compiled this way. Source files compiled with this may be freely mixed with files compiled without it. -dollar Allows the dollar sign ($) as a character in C identifiers, including allowing it as 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. The options described below primarily aid compiler development and are not generally used: -Hc Halt compiling after the pass specified by the character c, producing an intermediate file for the next pass. The c can be [KMfjusmoca]. It selects the compiler pass in the same way as the -t option. If this option is used, the symbol table file produced and used by the passes, is the last component of the source file with the suffix changed to `.T' and is not removed. Please note that this switch is non-standard and may not be supported across product lines. -Wx,[-G [num],-v, -A, -K] Treat any argument following `-Wx,' as if it were an svr3 cc option. -KPIC Generate position-independent code (PIC). This is the default and is needed for programs linking with dynamic shared libraries. If the user doesn't want to generate PIC code, then she/he will need to specify -nonshared on the command line. -nokpicopt Asks uopt not to perform the special treatment for global variables to optimize their program accesses under shared compilation. -kpicopt Asks uopt to perform the special treatment for global variables to optimize their program accesses regardless of the shared/non-shared compilation mode. -non_shared Specifies that the compiler should build a non-shared object. This is the opposite of -KPIC. Using the -non_shared option causes the linker to search the nonshared subdirectory of each default library search directory, see ld(1). The linker will default the archive Page 10 Release 5.3 CC(1) Silicon Graphics CC(1) extensions to .a instead of .so. The user must have installed the appropriate non-shared library images. -K Build and use intermediate file names with the last component of the source file's name replacing its suffix with the conventional suffix for the type of file (for example `.B' file for binary ucode, produced by the front end). These intermediate files are never removed even when a pass encounters a fatal error. Please note that this switch is non-standard and may not be supported across product lines. -Wc,arg1[,arg2...] Pass the argument[s] argi to the compiler pass c. The c is one of [pKMfjusmocablyz]. The c selects the compiler pass in the same way as the -t option. The options -t[hpKfjusmocablrnyz], -hpath, and -Bstring select a name to use for a particular pass, startup routine, or standard library. These arguments are processed from left to right so their order is significant. When the -B option is encountered, the selection of names takes place using the last -h and -t options. You must use all three options together. For example, -tc -h. -B says to use the ugen executable in the current directory. Any of the -p[01] options and any of the -g[0123] options must precede all -B options because they can affect the location of runtimes and what runtimes are used. -t[hpKfjusmocablrnyz] Select the names. The names selected are those designated by the characters following the -t option. Characters used in the -H, -W, and -t options are interpreted according to the following table: Name Character include h cpp p pca K (Power C only) mpc M (Power C only) cfe f (See below) ujoin j uld u usplit s umerge m uopt o ugen c as0 a as1 b ld l [m]crt[1n].o r Page 11 Release 5.3 CC(1) Silicon Graphics CC(1) libprof1.a n Although cc may be used to compile source files in such languages as FORTRAN and pascal, only the name used for the front-end of the C compiler is selected by the -tf option. -hpath Use path rather than the directory where the name is normally found. Please note that this switch is non-standard and may not be supported across product lines. -Bstring Append string to all names specified by the -t option. If no -t option has been processed before the -B, the -t option is assumed to be ``hpKfjusmocablrnyz''. This list designates all names. If no -t argument has been processed before the -B then a -Bstring is passed to the loader to use with its -lx arguments. Sometimes a more convenient way to get a string appended to all archive library names is the ld(1) -Bstring option, which may be passed via the -Wl,-Bstring option to cc. Invoking the compiler with a name of the form ccstring has the same effect as using a -Bstring option on the command line. If the environment variable TMPDIR is set, the value is used as the directory to place any temporary files rather than the default /tmp. There are a number of ld options that are recognized by the driver and passed through to ld. See the ld man page for details on these. Unrecognized options are flagged as errors. Arguments that do not begin with a dash ('-`) are assumed to be source or 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. FILES file.c input file file.o object file a.out loaded output /tmp/ctm* temporaries /usr/lib/cpp C macro preprocessor /usr/lib/acpp ANSI/ISO C macro preprocessor /usr/lib/pca multiprocessing analyzer (Power C only) /usr/lib/mpc multiprocessing C translator (Power C only) /usr/lib/copt C source-to-source optimizer /usr/lib/cfe C front end /usr/lib/ujoin binary ucode and symbol table joiner /usr/bin/uld ucode loader /usr/lib/usplit binary ucode and symbol table splitter /usr/lib/umerge procedure intergrator Page 12 Release 5.3 CC(1) Silicon Graphics CC(1) /usr/lib/uopt optional global ucode optimizer /usr/lib/ugen code generator /usr/lib/as0 symbolic to binary assembly language translator /usr/lib/as1 binary assembly language assembler and reorganizer /usr/lib/mcrt1.o startup for profiling /usr/lib/crt1.o runtime startup /usr/lib/crtn.o runtime startup /usr/lib/libc.a standard library, see intro(3) /usr/lib/libcmp.a multiprocessing library (Power C only) /usr/lib/libc.so.1 shared standard library /usr/lib/libfpe.a floating point exception handler library, see sigfpe(3c) /usr/lib/libgl.so IRIS-4D shared graphics library /usr/lib/libm.a math library /usr/lib/libm.so shared math library /usr/lib/libprof1.a level 1 profiling library /usr/include standard directory for `#include' files /usr/bin/ld loader mon.out file produced for analysis by prof(1) /usr/bin/cord procedure rearranger SEE ALSO B. W. Kernighan and D. M. Ritchie, The C Programming Language, Prentice- Hall, 1978 B. W. Kernighan, ANSI X3.159-1989, the ANSI C Standard. Programming in C-a tutorial D. M. Ritchie, C Reference Manual Power C User's Guide as(1), collide(1), cord(1), cpp(1), acpp(5), pca(1), mpc(1), dis(1), odump(1), stdump(1), nm(1), mips2(5), dbx(1), f77(1), ld(1), pc(1), pixie(1), prof(1), what(1), sigfpe(3c), dso(5). DIAGNOSTICS The diagnostics produced by cc are intended to be self-explanatory. Occasional messages may be produced by the assembler or loader. BUGS The compiler attempts to continue after finding semantic errors. These errors may result in compiler internal errors. NOTES The standard library, /usr/lib/libc.so.1, is loaded by using the -lc loader option and not a full path name. If libc.so.1 is specified explicitly, the wrong one could be loaded if there are files with the name libc.so.1 in the directories specified with the -L loader option or in the default directories searched by the loader. The environment variables COMPTARGETROOT, TOOLROOT, RLSIDOBJECT are used by cc while compiling the compiler itself. Their meaning is left undefined intentionally. They should not be set in your environment. The environment variable SGI_CC is used by cc (see below). Page 13 Release 5.3 CC(1) Silicon Graphics CC(1) The compiler defines _MIPS_ISA as _MIPS_ISA_MIPS1 or _MIPS_ISA_MIPS2 based on the -mips option. Similarly, it defines _MIPS_SIM as _MIPS_SIM_ABI32 for 32 bits compilations. The MIPSISAMIPS1, MIPSISAMIPS2, and MIPSSIMABI32 symbols are defined in and should never be referenced unless this file has first been included. cc recognizes several switches (-pca, -mp, -HK, -WK, -tK, -WM, and -HM) related to multiprocessing. However; the associated programs and files are not present unless Power C has been installed. The environment variable SGI_CC may be set to any one of -cckr, -ansi, -ansiposix, or -xansi and is interpreted as an option before any other options on the command line. This enables you to conveniently set the default C compile mode. If more than one of the options -cckr, -ansi, -ansiposix, or -xansi is chosen, the last one chosen is effective and the others are ignored. Applications which provide their own exit function will not work with profiling (no profile data will be written out). One must use the exit(2) library function provided by cc -p when profiling. Page 14 Release 5.3