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 intrinsic  library 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