File:  [Apple XNU] / GNUtools / cc / invoke.rtf
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:45:37 2018 UTC (8 years, 2 months ago) by root
Branches: MAIN, Apple
CVS tags: HEAD, GNUtools33
GNU tools for NeXTSTEP 3.3

{\rtf0\ansi{\fonttbl\f0\fnil Times-Roman;\f1\fmodern Courier;\f3\ftech Symbol;\f2\fmodern Ohlfs;\f4\fswiss Helvetica;}
\f0\fs28 {\info{\comment build from /build/cc_proj/cc/cc/invoke.texi}}
\
{{\NeXTHelpMarker \markername Invoking GCC;}
,}{\fs88 {\f4 1}\i\
GNU CC Command Options}\
\
When you invoke GNU CC, it normally does preprocessing, 
compilation, assembly and linking. The ``overall options'' allow you to stop 
this process at an intermediate stage. For example, the {\f4\fs24 -c} option says not to 
run the linker. Then the output consists of object files output by the 
assembler. \
Other options are passed on to one stage of processing. Some 
options control the preprocessor and others the compiler itself. Yet other 
options control the assembler and linker; most of these are not documented 
here, since you rarely need to use any of them. \
Most of the command line 
options that you can use with GNU CC are useful for C programs; when an option 
is only useful with another language (usually C++), the explanation says so 
explicitly. If the description for a particular option does not mention a 
source language, you can use that option with all supported languages. \
{See `Compiling C++ Programs' {\NeXTHelpLink \markername ;\linkFilename /build/cc_proj/cc/cc/invoke.rtf;\linkMarkername {Invoking G++;}
,}., for a 
summary of special options for compiling C++ programs. \
The {\f1\fs24 gcc} program accepts 
options and file names as operands. Many options have multiletter names; 
therefore multiple single-letter options may {\i not} be grouped: {\f4\fs24 -dr} is very 
different from {\f4\fs24 -d -r}. \
You can mix options and other arguments. For the most 
part, the order you use doesn't matter. Order does matter when you use several 
options of the same kind; for example, if you specify {\f4\fs24 -L} more than once, the 
directories are searched in the order specified. \
Many options have long names 
starting with {\f4\fs24 -f} or with {\f4\fs24 -W}---for example, {\f4\fs24 -fforce-mem}, {\f4\fs24 -fstrength-reduce}, {\f4\fs24 
-Wformat} and so on. Most of these have both positive and negative forms; the 
negative form of {\f4\fs24 -ffoo} would be {\f4\fs24 -fno-foo}. This manual documents only one of 
these two forms, whichever one is not the default. \
 \
{{\NeXTHelpMarker \markername Option Summary;}
,}{\b\fs48\f4 1.1 Option Summary}\
\
Here is a 
summary of all the options, grouped by type. Explanations are in the following 
sections. \
\
{\i Overall Options} {See `Options Controlling the Kind of Output' {\NeXTHelpLink \markername ;\linkFilename /build/cc_proj/cc/cc/invoke.rtf;\linkMarkername {Overall Options;}
,}.. {\f1\fs24 -c  -S  -E  -o {\i file}  -pipe  -v  -x {\i language}  }\
\
\
{\i C 
Language Options} {See `Options Controlling C Dialect' {\NeXTHelpLink \markername ;\linkFilename /build/cc_proj/cc/cc/invoke.rtf;\linkMarkername {C Dialect Options;}
,}.. {\f1\fs24 -ansi  -fcond-mismatch  -fno-asm  -fno-builtin }\
{\f1\fs24 
-fsigned-bitfields  -fsigned-char  }\
{\f1\fs24 
-funsigned-bitfields  -funsigned-char  -fwritable-strings }\
{\f1\fs24 
-traditional  -traditional-cpp  -trigraphs }\
\
\
{\i C++ Language Options} {See `Options Controlling C++ Dialect' {\NeXTHelpLink \markername ;\linkFilename /build/cc_proj/cc/cc/invoke.rtf;\linkMarkername {C++ Dialect Options;}
,}.. {\f1\fs24 
-fall-virtual  -fdollars-in-identifiers }\
{\f1\fs24 -felide-constructors  -fenum-int-equiv }\
{\f1\fs24 
-fexternal-templates  -fmemoize-lookups }\
{\f1\fs24 
-fno-strict-prototype  -fnonnull-objects }\
{\f1\fs24 -fthis-is-variable  -nostdinc++ }\
\
\
{\i 
Warning Options} {See `Options to Request or Suppress Warnings' {\NeXTHelpLink \markername ;\linkFilename /build/cc_proj/cc/cc/invoke.rtf;\linkMarkername {Warning Options;}
,}.. {\f1\fs24 -fsyntax-only  -pedantic  -pedantic-errors }\
{\f1\fs24 
-w  -W  -Wall  -Waggregate-return  -Wcast-align   }\
{\f1\fs24 
-Wcast-qual  -Wchar-subscript  -Wcomment  -Wconversion }\
{\f1\fs24 
-Wenum-clash  -Werror  -Wformat  -Wid-clash-{\i len} }\
{\f1\fs24 
-Wimplicit  -Wimport  -Winline  -Wmissing-prototypes }\
{\f1\fs24 
-Wnested-externs  -Woverloaded-virtual  -Wparentheses }\
{\f1\fs24 
-Wpointer-arith  -Wredundant-decls  -Wreturn-type }\
{\f1\fs24 
-Wshadow  -Wstrict-prototypes  -Wswitch }\
{\f1\fs24 
-Wtemplate-debugging  -Wtraditional  -Wtrigraphs }\
{\f1\fs24 
-Wuninitialized  -Wunused  -Wwrite-strings }\
\
\
{\i Debugging Options} {See `Options for Debugging Your Program or GCC' {\NeXTHelpLink \markername ;\linkFilename /build/cc_proj/cc/cc/invoke.rtf;\linkMarkername {Debugging Options;}
,}.. {\f1\fs24 -a  -d{\i letters}
  -fpretend-float  }\
{\f1\fs24 -g  -g{\i level} -ggdb  -gdwarf -gdwarf+ }\
{\f1\fs24 
-gstabs  -gstabs+  -gcoff -gxcoff  -gxcoff+ }\
{\f1\fs24 
-p  -pg  -save-temps  -print-libgcc-file-name }\
\
\
{\i Optimization Options} {See `Options that Control Optimization' {\NeXTHelpLink \markername ;\linkFilename /build/cc_proj/cc/cc/invoke.rtf;\linkMarkername {Optimize Options;}
,}.. {\f1\fs24 
-fcaller-saves  -fcse-follow-jumps  -fcse-skip-blocks }\
{\f1\fs24 
-fdelayed-branch   -fexpensive-optimizations   }\
{\f1\fs24 
-ffast-math  -ffloat-store  -fforce-addr  -fforce-mem }\
{\f1\fs24 
-finline-functions  -fkeep-inline-functions   }\
{\f1\fs24 
-fno-default-inline  -fno-defer-pop  -fno-function-cse }\
{\f1\fs24 
-fno-inline  -fno-peephole  -fomit-frame-pointer   }\
{\f1\fs24 
-frerun-cse-after-loop  -fschedule-insns   }\
{\f1\fs24 
-fschedule-insns2  -fstrength-reduce  -fthread-jumps  }\
{\f1\fs24 
-funroll-all-loops  -funroll-loops }\
{\f1\fs24 -O  -O2 }\
\
\
{\i Preprocessor Options} {See `Options Controlling the Preprocessor' {\NeXTHelpLink \markername ;\linkFilename /build/cc_proj/cc/cc/invoke.rtf;\linkMarkername {Preprocessor Options;}
,}.. {\f1\fs24 -A{\i assertion}
  -C  -dD  -dM  -dN }\
{\f1\fs24 -D{\i macro}={\i defn}  -E  -H }\
{\f1\fs24 -idirafter {\i dir} }\
{\f1\fs24 -include {\i file}
  -imacros {\i file} }\
{\f1\fs24 -iprefix {\i file}  -iwithprefix {\i dir} }\
{\f1\fs24 -iwithprefixbefore {\i dir} }\
{\f1\fs24 
-M  -MD  -MM  -MMD  -nostdinc  -P  -trigraphs  -U{\i macro} }\
\
\
{\i Assembler Option} {See `Passing Options to the Assembler' {\NeXTHelpLink \markername ;\linkFilename /build/cc_proj/cc/cc/invoke.rtf;\linkMarkername {Assembler Options;}
,}.. {\f1\fs24 -Wa,{\i 
option} }\
\
\
{\i Linker Options} {See `Options for Linking' {\NeXTHelpLink \markername ;\linkFilename /build/cc_proj/cc/cc/invoke.rtf;\linkMarkername {Link Options;}
,}.. {\f1\fs24 {\i object-file-name} }\
{\f1\fs24 -l{\i library}  -nostartfiles  -nostdlib   }\
{\f1\fs24 
-static  -shared  -symbolic   }\
{\f1\fs24 -Wl,{\i option}  -Xlinker {\i option} }\
{\f1\fs24 -u {\i symbol} }\
\
\
{\i Directory 
Options} {See `Options for Directory Search' {\NeXTHelpLink \markername ;\linkFilename /build/cc_proj/cc/cc/invoke.rtf;\linkMarkername {Directory Options;}
,}.. {\f1\fs24 -B{\i prefix}  -I{\i dir}  -I-  -L{\i dir} }\
\
\
{\i Target Options} {See `' {\NeXTHelpLink \markername ;\linkFilename .
is way to avoid overfull hbox. -- rms
sor}.
.
are
pes.

;\linkMarkername {Target Options;}
,}.. {\f1\fs24 -b {\i machine}  -V {\i version} }\
\
\
{\i 
Machine Dependent Options} {See `Hardware Models and Configurations' {\NeXTHelpLink \markername ;\linkFilename /build/cc_proj/cc/cc/invoke.rtf;\linkMarkername {Submodel Options;}
,}.. {\f1\fs24 {\i M680x0 Options} }\
{\f1\fs24 
-m68000  -m68020  -m68020-40  -m68030  -m68040  -m68881   }\
{\f1\fs24 
-mbitfield  -mc68000  -mc68020  -mfpa  -mnobitfield   }\
{\f1\fs24 
-mrtd  -mshort  -msoft-float  }\
\
{\f1\fs24 {\i VAX Options} }\
{\f1\fs24 -mg  -mgnu  -munix }\
\
{\f1\fs24 {\i SPARC Options} }\
{\f1\fs24 
-mepilogue  -mfpu  -mhard-float }\
{\f1\fs24 -mno-fpu  -mno-epilogue  -msoft-float }\
{\f1\fs24 
-msparclite  -mv8 }\
\
{\f1\fs24 {\i Convex Options} }\
{\f1\fs24 -mc1  -mc2  -mc32  -mc34  -mc38 }\
{\f1\fs24 
-margcount  -mnoargcount }\
{\f1\fs24 -mlong32  -mlong64 }\
{\f1\fs24 
-mbolatile-cache  -mvolatile-nocache }\
\
{\f1\fs24 {\i AMD29K Options}  }\
{\f1\fs24 
-m29000  -m29050  -mbw  -mdw  -mkernel-registers }\
{\f1\fs24 
-mlarge  -mnbw  -mnodw  -mnormal  -msmall  -mstack-check }\
{\f1\fs24 -muser-registers }\
\
{\f1\fs24 {\i 
M88K Options} }\
{\f1\fs24 -m88000  -m88100  -m88110  -mbig-pic   }\
{\f1\fs24 
-mcheck-zero-division  -mhandle-large-shift  }\
{\f1\fs24 
-midentify-revision  -mno-check-zero-division  }\
{\f1\fs24 
-mno-ocs-debug-info  -mno-ocs-frame-position  }\
{\f1\fs24 
-mno-optimize-arg-area  -mno-serialize-volatile }\
{\f1\fs24 
-mno-underscores  -mocs-debug-info }\
{\f1\fs24 -mocs-frame-position  -moptimize-arg-area }\
{\f1\fs24 
-mserialize-volatile  -mshort-data-{\i num}  -msvr3  }\
{\f1\fs24 
-msvr4  -mtrap-large-shift  -muse-div-instruction  }\
{\f1\fs24 
-mversion-03.00  -mwarn-passed-structs }\
\
{\f1\fs24 {\i RS/6000 Options and PowerPC} }\
{\f1\fs24 -mcpu={\i 
cpu type} }\
{\f1\fs24 -mpower -mno-power -mpower2 -pno-power2 }\
{\f1\fs24 
-mpowerpc -mno-powerpc -mpowerpcsqr -mno-powerpcsqr }\
{\f1\fs24 -mpowerpc64 -mno-powerpc64 }\
{\f1\fs24 
-mnew-mnemonics -mno-new-mnemonics }\
{\f1\fs24 
-mnormal-toc   -mminimal-toc  -mno-fop-in-toc }\
\
{\f1\fs24 {\i RT Options} }\
{\f1\fs24 
-mcall-lib-mul  -mfp-arg-in-fpregs  -mfp-arg-in-gregs }\
{\f1\fs24 
-mfull-fp-blocks  -mhc-struct-return  -min-line-mul }\
{\f1\fs24 
-mminimum-fp-blocks  -mnohc-struct-return }\
\
{\f1\fs24 {\i MIPS Options} }\
{\f1\fs24 -mcpu={\i cpu  type}
  -mips2  -mips3  -mint64 }\
{\f1\fs24 -mlong64  -mlonglong128  -mmips-as  -mgas  -mrnames }\
{\f1\fs24 
-mno-rnames  -mgpopt  -mno-gpopt  -mstats  -mno-stats }\
{\f1\fs24 
-mmemcpy  -mno-memcpy  -mno-mips-tfile  -mmips-tfile }\
{\f1\fs24 
-msoft-float  -mhard-float  -mabicalls  -mno-abicalls }\
{\f1\fs24 
-mhalf-pic  -mno-half-pic -mlong-calls -mno-long-calls }\
{\f1\fs24 -G  {\i num}  -nocpp }\
\
{\f1\fs24 {\i 
i386 Options} }\
{\f1\fs24 -m486  -mno-486  -msoft-float  -msvr3-shlib  -mieee-fp }\
{\f1\fs24 
-mno-fp-ret-in-387 }\
\
{\f1\fs24 {\i HPPA Options} }\
{\f1\fs24 -mpa-risc-1-0 }\
{\f1\fs24 -mpa-risc-1-1 }\
{\f1\fs24 -mlong-calls }\
{\f1\fs24 
-mdisable-fpregs }\
{\f1\fs24 -mdisable-indexing }\
{\f1\fs24 -mtrailing-colon }\
\
{\f1\fs24 {\i Intel 960 Options} }\
{\f1\fs24 -m{\i 
cpu type} }\
{\f1\fs24 -mnumerics  -msoft-float }\
{\f1\fs24 -mcode-align  -mno-code-align }\
{\f1\fs24 
-mleaf-procedures  -mno-leaf-procedures }\
{\f1\fs24 -mtail-call  -mno-tail-call }\
{\f1\fs24 
-mcomplex-addr  -mno-complex-addr }\
{\f1\fs24 -mclean-linkage  -mno-clean-linkage }\
{\f1\fs24 
-mic-compat  -mic2.0-compat  -mic3.0-compat }\
{\f1\fs24 -masm-compat  -mintel-asm }\
{\f1\fs24 
-mstrict-align  -mno-strict-align }\
{\f1\fs24 -mold-align  -mno-old-align }\
\
{\f1\fs24 {\i 
DEC Alpha Options} }\
{\f1\fs24 -mfp-regs  -mno-fp-regs  -mno-soft-float }\
{\f1\fs24 -msoft-float }\
\
{\f1\fs24 {\i 
Clipper Options} }\
{\f1\fs24 -mc300 -mc400 }\
\
{\f1\fs24 {\i System V Options} }\
{\f1\fs24 -G  -Qy  -Qn  -YP,{\i paths}  -Ym,{\i 
dir} }\
\
\
{\i Code Generation Options} {See `Options for Code Generation Conventions' {\NeXTHelpLink \markername ;\linkFilename /build/cc_proj/cc/cc/invoke.rtf;\linkMarkername {Code Gen Options;}
,}.. {\f1\fs24 -fcall-saved-{\i reg}  -fcall-used-{\i reg}  }\
{\f1\fs24 -ffixed-{\i reg}
  -finhibit-size-directive  }\
{\f1\fs24 -fno-common  -fno-ident }\
{\f1\fs24 
-fno-gnu-linker  -fpcc-struct-return  -fpic  -fPIC  }\
{\f1\fs24 
-freg-struct-return  -fshared-data  -fshort-enums }\
{\f1\fs24 
-fshort-double  -fvolatile  -fvolatile-global }\
{\f1\fs24 -fverbose-asm }\
\
\
 \
{{\NeXTHelpMarker \markername Overall Options;}
,}{\b\fs48\f4 1.2 Options 
Controlling the Kind of Output}\
\
Compilation can involve up to four stages: 
preprocessing, compilation proper, assembly and linking, always in that order. 
The first three stages apply to an individual source file, and end by 
producing an object file; linking combines all the object files (those newly 
compiled, and those specified as input) into an executable file. \
For any given 
input file, the file name suffix determines what kind of compilation is done: \
\
{\f1\fs24 {\i 
file}.c} C source code which must be preprocessed. \
\
{\f1\fs24 {\i file}.i} C source code which 
should not be preprocessed. \
\
{\f1\fs24 {\i file}.ii} C++ source code which should not be 
preprocessed. \
\
{\f1\fs24 {\i file}.m} Objective-C source code. Note that you must link with the 
library `{\f1\fs24 libobjc.a}' to make an Objective-C program work. \
\
{\f1\fs24 {\i file}.h} C header file 
(not to be compiled or linked). \
\
{\f1\fs24 {\i file}.cc} \
{\f1\fs24 {\i file}.cxx} \
{\f1\fs24 {\i file}.C} C++ source code which 
must be preprocessed. Note that in {\f4\fs24 .cxx}, the last two letters must both be 
literally {\f4\fs24 x}. Likewise, {\f4\fs24 .C} refers to a literal capital C. \
\
{\f1\fs24 {\i file}.s} Assembler 
code. \
\
{\f1\fs24 {\i file}.S} Assembler code which must be preprocessed. \
\
{\f1\fs24 {\i other}} An object file 
to be fed straight into linking. Any file name with no recognized suffix is 
treated this way. \
\
You can specify the input language explicitly with the {\f4\fs24 -x} 
option: \
\
{\f1\fs24 -x {\i language}} Specify explicitly the {\i language} for the following input 
files (rather than letting the compiler choose a default based on the file 
name suffix). This option applies to all following input files until the next {\f4\fs24 
-x} option. Possible values for {\i language} are: {\f1\fs24 c  objective-c  c++ }\
{\f1\fs24 
c-header  cpp-output  c++-cpp-output }\
{\f1\fs24 assembler  assembler-with-cpp }\
\
\
{\f1\fs24 -x none} 
Turn off any specification of a language, so that subsequent files are handled 
according to their file name suffixes (as they are if {\f4\fs24 -x} has not been used at 
all). \
\
If you only want some of the stages of compilation, you can use {\f4\fs24 -x} (or 
filename suffixes) to tell {\f1\fs24 gcc} where to start, and one of the options {\f4\fs24 -c}, {\f4\fs24 -S}, 
or {\f4\fs24 -E} to say where {\f1\fs24 gcc} is to stop. Note that some combinations (for example, {\f4\fs24 
-x cpp-output -E} instruct {\f1\fs24 gcc} to do nothing at all. \
\
{\f1\fs24 -c} Compile or assemble the 
source files, but do not link. The linking stage simply is not done. The 
ultimate output is in the form of an object file for each source file. \
By 
default, the object file name for a source file is made by replacing the 
suffix {\f4\fs24 .c}, {\f4\fs24 .i}, {\f4\fs24 .s}, etc., with {\f4\fs24 .o}. \
Unrecognized input files, not requiring 
compilation or assembly, are ignored. \
\
{\f1\fs24 -S} Stop after the stage of compilation 
proper; do not assemble. The output is in the form of an assembler code file 
for each non-assembler input file specified. \
By default, the assembler file 
name for a source file is made by replacing the suffix {\f4\fs24 .c}, {\f4\fs24 .i}, etc., with {\f4\fs24 .s}. \

Input files that don't require compilation are ignored. \
\
{\f1\fs24 -E} Stop after the 
preprocessing stage; do not run the compiler proper. The output is in the form 
of preprocessed source code, which is sent to the standard output. \
Input files 
which don't require preprocessing are ignored. \
\
{\f1\fs24 -o {\i file}} Place output in file {\i 
file}. This applies regardless to whatever sort of output is being produced, 
whether it be an executable file, an object file, an assembler file or 
preprocessed C code. \
Since only one output file can be specified, it does not 
make sense to use {\f4\fs24 -o} when compiling more than one input file, unless you are 
producing an executable file as output. \
If {\f4\fs24 -o} is not specified, the default is 
to put an executable file in `{\f1\fs24 a.out}', the object file for `{\f1\fs24 {\i source}.{\i suffix}}' in `{\f1\fs24 {\i 
source}.o}', its assembler file in `{\f1\fs24 {\i source}.s}', and all preprocessed C source on 
standard output. \
\
{\f1\fs24 -v} Print (on standard error output) the commands executed to 
run the stages of compilation. Also print the version number of the compiler 
driver program and of the preprocessor and the compiler proper. \
\
{\f1\fs24 -pipe} Use 
pipes rather than temporary files for communication between the various stages 
of compilation. This fails to work on some systems where the assembler is 
unable to read from a pipe; but the GNU assembler has no trouble. \
\
{{\NeXTHelpMarker \markername Invoking G++;}
,}{\b\fs48\f4 1.3 Compiling 
C++ Programs}\
\
C++ source files conventionally use one of the suffixes {\f4\fs24 .C}, {\f4\fs24 .cc}, 
or {\f4\fs24 .cxx}; preprocessed C++ files use the suffix {\f4\fs24 .ii}. GNU CC recognizes files 
with these names and compiles them as C++ programs even if you call the 
compiler the same way as for compiling C programs (usually with the name {\f1\fs24 gcc}). \

However, C++ programs often require class libraries as well as a compiler that 
understands the C++ language---and under some circumstances, you might want to 
compile programs from standard input, or otherwise without a suffix that flags 
them as C++ programs. {\f1\fs24 g++} is a shell script that calls GNU CC with the default 
language set to C++, and automatically specifies linking against the GNU class 
library libg++. {\fs18 Prior to release 2 of the compiler, there was a separate {\f1\fs24 g++} 
compiler. That version was based on GNU CC, but not integrated with it. 
Versions of {\f1\fs24 g++} with a {\f4\fs24 1.{\i xx}} version number---for example, {\f1\fs24 g++} version 1.37 or 
1.42---are much less reliable than the versions integrated with GCC 2. 
Moreover, combining G++ {\f4\fs24 1.{\i xx}} with a version 2 GCC will simply not work.} On 
many systems, the script {\f1\fs24 g++} is also installed with the name {\f1\fs24 c++}. \
When you 
compile C++ programs, you may specify many of the same command-line options 
that you use for compiling programs in any language; or command-line options 
meaningful for C and related languages; or options that are meaningful only 
for C++ programs. {See `Options Controlling C Dialect' {\NeXTHelpLink \markername ;\linkFilename /build/cc_proj/cc/cc/invoke.rtf;\linkMarkername {C Dialect Options;}
,}., for explanations of options for languages related to C. {See `Options Controlling C++ Dialect' {\NeXTHelpLink \markername ;\linkFilename /build/cc_proj/cc/cc/invoke.rtf;\linkMarkername {C++ Dialect Options;}
,}., 
for explanations of options that are meaningful only for C++ programs. \
{{\NeXTHelpMarker \markername C Dialect Options;}
,}{\b\fs48\f4 1.4 Options 
Controlling C Dialect}\
\
The following options control the dialect of C (or 
languages derived from C, such as C++ and Objective C) that the compiler 
accepts: \
\
{\f1\fs24 -ansi} Support all ANSI standard C programs. \
This turns off certain 
features of GNU C that are incompatible with ANSI C, such as the {\f1\fs24 asm}, {\f1\fs24 inline} 
and {\f1\fs24 typeof} keywords, and predefined macros such as {\f1\fs24 unix} and {\f1\fs24 vax} that identify 
the type of system you are using. It also enables the undesirable and rarely 
used ANSI trigraph feature, and disallows {\f4\fs24 $} as part of identifiers. \
The 
alternate keywords {\f1\fs24 __asm__}, {\f1\fs24 __extension__}, {\f1\fs24 __inline__} and {\f1\fs24 __typeof__} continue 
to work despite {\f4\fs24 -ansi}. You would not want to use them in an ANSI C program, of 
course, but it useful to put them in header files that might be included in 
compilations done with {\f4\fs24 -ansi}. Alternate predefined macros such as {\f1\fs24 __unix__} and {\f1\fs24 
__vax__} are also available, with or without {\f4\fs24 -ansi}. \
The {\f4\fs24 -ansi} option does not 
cause non-ANSI programs to be rejected gratuitously. For that, {\f4\fs24 -pedantic} is 
required in addition to {\f4\fs24 -ansi}. {See `' {\NeXTHelpLink \markername ;\linkFilename .
is required in
h or
d
g++} compiler.  That version was based on GNU
CC;\linkMarkername {Warning Options;}
,}.. \
The macro {\f1\fs24 __STRICT_ANSI__} is predefined when 
the {\f4\fs24 -ansi} option is used. Some header files may notice this macro and refrain 
from declaring certain functions or defining certain macros that the ANSI 
standard doesn't call for; this is to avoid interfering with any programs that 
might use these names for other things. \
The functions {\f1\fs24 alloca}, {\f1\fs24 abort}, {\f1\fs24 exit}, and {\f1\fs24 
_exit} are not builtin functions when {\f4\fs24 -ansi} is used. \
\
{\f1\fs24 -fno-asm} Do not recognize {\f1\fs24 
asm}, {\f1\fs24 inline} or {\f1\fs24 typeof} as a keyword. These words may then be used as 
identifiers. You can use the keywords {\f1\fs24 __asm__}, {\f1\fs24 __inline__} and {\f1\fs24 __typeof__} 
instead. {\f4\fs24 -ansi} implies {\f4\fs24 -fno-asm}. \
\
{\f1\fs24 -fno-builtin} Don't recognize builtin 
functions that do not begin with two leading underscores. Currently, the 
functions affected include {\f1\fs24 abort}, {\f1\fs24 abs}, {\f1\fs24 alloca}, {\f1\fs24 cos}, {\f1\fs24 exit}, {\f1\fs24 fabs}, {\f1\fs24 ffs}, {\f1\fs24 labs}, {\f1\fs24 
memcmp}, {\f1\fs24 memcpy}, {\f1\fs24 sin}, {\f1\fs24 sqrt}, {\f1\fs24 strcmp}, {\f1\fs24 strcpy}, and {\f1\fs24 strlen}. \
GCC normally generates 
special code to handle certain builtin functions more efficiently; for 
instance, calls to {\f1\fs24 alloca} may become single instructions that adjust the stack 
directly, and calls to {\f1\fs24 memcpy} may become inline copy loops. The resulting code 
is often both smaller and faster, but since the function calls no longer 
appear as such, you cannot set a breakpoint on those calls, nor can you change 
the behavior of the functions by linking with a different library. \
The {\f4\fs24 -ansi} 
option prevents {\f1\fs24 alloca} and {\f1\fs24 ffs} from being builtin functions, since these 
functions do not have an ANSI standard meaning. \
\
{\f1\fs24 -trigraphs} Support ANSI C 
trigraphs. You don't want to know about this brain-damage. The {\f4\fs24 -ansi} option 
implies {\f4\fs24 -trigraphs}. \
\
{\f1\fs24 -traditional} Attempt to support some aspects of 
traditional C compilers. Specifically: \
All {\f1\fs24 extern} declarations take effect 
globally even if they are written inside of a function definition. This 
includes implicit declarations of functions. \
The newer keywords {\f1\fs24 typeof}, {\f1\fs24 inline}
, {\f1\fs24 signed}, {\f1\fs24 const} and {\f1\fs24 volatile} are not recognized. (You can still use the 
alternative keywords such as {\f1\fs24 __typeof__}, {\f1\fs24 __inline__}, and so on.) \
Comparisons 
between pointers and integers are always allowed. \
Integer types {\f1\fs24 unsigned short} 
and {\f1\fs24 unsigned char} promote to {\f1\fs24 unsigned int}. \
Out-of-range floating point 
literals are not an error. \
Certain constructs which ANSI regards as a single 
invalid preprocessing number, such as {\f4\fs24 0xe-0xd}, are treated as expressions 
instead. \
String ``constants'' are not necessarily constant; they are stored in 
writable space, and identical looking constants are allocated separately. 
(This is the same as the effect of {\f4\fs24 -fwritable-strings}.) \
All automatic 
variables not declared {\f1\fs24 register} are preserved by {\f1\fs24 longjmp}. Ordinarily, GNU C 
follows ANSI C: automatic variables not declared {\f1\fs24 volatile} may be clobbered. \
In 
the preprocessor, comments convert to nothing at all, rather than to a space. 
This allows traditional token concatenation. \
In the preprocessor, macro 
arguments are recognized within string constants in a macro definition (and 
their values are stringified, though without additional quote marks, when they 
appear in such a context). The preprocessor always considers a string constant 
to end at a newline. \
The predefined macro {\f1\fs24 __STDC__} is not defined when you use {\f4\fs24 
-traditional}, but {\f1\fs24 __GNUC__} is (since the GNU extensions which {\f1\fs24 __GNUC__} 
indicates are not affected by {\f4\fs24 -traditional}). If you need to write header files 
that work differently depending on whether {\f4\fs24 -traditional} is in use, by testing 
both of these predefined macros you can distinguish four situations: GNU C, 
traditional GNU C, other ANSI C compilers, and other old C compilers. {See `Standard Predefined
Macros,cpp.info,The C Preprocessor' {\NeXTHelpLink \markername ;\linkFilename /build/cc_proj/cc/cc/invoke.rtf;\linkMarkername {Standard Predefined;}
,}., for 
more discussion of these and other predefined macros. \
The preprocessor 
considers a string constant to end at a newline (unless the newline is escaped 
with {\f4\fs24 \\}). (Without {\f4\fs24 -traditional}, string constants can contain the newline 
character as typed.) \
The character escape sequences {\f4\fs24 \\x} and {\f4\fs24 \\a} evaluate as 
the literal characters {\f4\fs24 x} and {\f4\fs24 a} respectively. Without {\f4\fs24 -traditional}, {\f4\fs24 \\x} is a 
prefix for the hexadecimal representation of a character, and {\f4\fs24 \\a} produces a 
bell. \
In C++ programs, assignment to {\f1\fs24 this} is permitted with {\f4\fs24 -traditional}. (The 
option {\f4\fs24 -fthis-is-variable} also has this effect.) \
\
You may wish to use {\f4\fs24 
-fno-builtin} as well as {\f4\fs24 -traditional} if your program uses names that are 
normally GNU C builtin functions for other purposes of its own. \
\
{\f1\fs24 
-traditional-cpp} Attempt to support some aspects of traditional C 
preprocessors. This includes the last three items in the table immediately 
above, but none of the other effects of {\f4\fs24 -traditional}. \
\
{\f1\fs24 -fcond-mismatch} Allow 
conditional expressions with mismatched types in the second and third 
arguments. The value of such an expression is void. \
\
{\f1\fs24 -funsigned-char} Let the 
type {\f1\fs24 char} be unsigned, like {\f1\fs24 unsigned char}. \
Each kind of machine has a default 
for what {\f1\fs24 char} should be. It is either like {\f1\fs24 unsigned char} by default or like {\f1\fs24 
signed char} by default. \
Ideally, a portable program should always use {\f1\fs24 signed 
char} or {\f1\fs24 unsigned char} when it depends on the signedness of an object. But many 
programs have been written to use plain {\f1\fs24 char} and expect it to be signed, or 
expect it to be unsigned, depending on the machines they were written for. 
This option, and its inverse, let you make such a program work with the 
opposite default. \
The type {\f1\fs24 char} is always a distinct type from each of {\f1\fs24 signed 
char} or {\f1\fs24 unsigned char}, even though its behavior is always just like one of 
those two. \
\
{\f1\fs24 -fsigned-char} Let the type {\f1\fs24 char} be signed, like {\f1\fs24 signed char}. \
Note 
that this is equivalent to {\f4\fs24 -fno-unsigned-char}, which is the negative form of {\f4\fs24 
-funsigned-char}. Likewise, the option {\f4\fs24 -fno-signed-char} is equivalent to {\f4\fs24 
-funsigned-char}. \
\
{\f1\fs24 -fsigned-bitfields} \
{\f1\fs24 -funsigned-bitfields} \
{\f1\fs24 -fno-signed-bitfields} \
{\f1\fs24 
-fno-unsigned-bitfields} These options control whether a bitfield is signed or 
unsigned, when the declaration does not use either {\f1\fs24 signed} or {\f1\fs24 unsigned}. By 
default, such a bitfield is signed, because this is consistent: the basic 
integer types such as {\f1\fs24 int} are signed types. \
However, when {\f4\fs24 -traditional} is 
used, bitfields are all unsigned no matter what. \
\
{\f1\fs24 -fwritable-strings} Store 
string constants in the writable data segment and don't uniquize them. This is 
for compatibility with old programs which assume they can write into string 
constants. The option {\f4\fs24 -traditional} also has this effect. \
Writing into string 
constants is a very bad idea; ``constants'' should be constant. \
\
{\f1\fs24 
-fallow-single-precision} Do not promote single precision math operations to 
double precision, even when compiling with {\f4\fs24 -traditional}. \
Traditional K&R C 
promotes all floating point operations to double precision, regardless of the 
sizes of the operands. On the architecture for which you are compiling, single 
precision may be faster than double precision. If you must use {\f4\fs24 -traditional}, 
but want to use single precision operations when the operands are single 
precision, use this option. This option has no effect when compiling with ANSI 
or GNU C conventions (the default). \
\
\
{{\NeXTHelpMarker \markername C++ Dialect Options;}
,}{\b\fs48\f4 1.5 Options Controlling C++ Dialect}\
\
This 
section describes the command-line options that are only meaningful for C++ 
programs; but you can also use most of the GNU compiler options regardless of 
what language your program is in. For example, you might compile a file {\f1\fs24 
firstClass.C} like this: \
{\f1\fs24 g++ -g -felide-constructors -O -c firstClass.C }\
\
 In 
this example, only {\f4\fs24 -felide-constructors} is an option meant only for C++ 
programs; you can use the other options with any language supported by GNU CC. \

Here is a list of options that are {\i only} for compiling C++ programs: \
\
{\f1\fs24 
-fall-virtual} Treat all possible member functions as virtual, implicitly. All 
member functions (except for constructor functions and {\f1\fs24 new} or {\f1\fs24 delete} member 
operators) are treated as virtual functions of the class where they appear. \

This does not mean that all calls to these member functions will be made 
through the internal table of virtual functions. Under some circumstances, the 
compiler can determine that a call to a given virtual function can be made 
directly; in these cases the calls are direct in any case. \
\
{\f1\fs24 
-fdollars-in-identifiers} Accept {\f4\fs24 $} in identifiers. You can also explicitly 
prohibit use of {\f4\fs24 $} with the option {\f4\fs24 -fno-dollars-in-identifiers}. (GNU C++ allows {\f4\fs24 
$} by default on some target systems but not others.) Traditional C allowed the 
character {\f4\fs24 $} to form part of identifiers. However, ANSI C and C++ forbid {\f4\fs24 $} in 
identifiers. \
\
{\f1\fs24 -felide-constructors} Elide constructors when this seems 
plausible. With this option, GNU C++ initializes {\f1\fs24 y} directly from the call to {\f1\fs24 
foo} without going through a temporary in the following code: \
{\f1\fs24 A foo (); }\
{\f1\fs24 
A y = foo (); }\
\
Without this option, GNU C++ (1) initializes {\f1\fs24 y} by calling the 
appropriate constructor for type {\f1\fs24 A}; (2) assigns the result of {\f1\fs24 foo} to a 
temporary; and, finally, (3) replaces the initial value of {\f1\fs24 y} with the 
temporary. \
The default behavior ({\f4\fs24 -fno-elide-constructors}) is specified by the 
draft ANSI C++ standard. If your program's constructors have side effects, {\f4\fs24 
-felide-constructors} can change your program's behavior, since some 
constructor calls may be omitted. \
\
{\f1\fs24 -fenum-int-equiv} Permit implicit conversion 
of {\f1\fs24 int} to enumeration types. Normally GNU C++ allows conversion of {\f1\fs24 enum} to {\f1\fs24 int}
, but not the other way around. \
\
{\f1\fs24 -fexternal-templates} Produce smaller code for 
template declarations, by generating only a single copy of each template 
function where it is defined. To use this option successfully, you must also 
mark all files that use templates with either {\f4\fs24 #pragma implementation} (the 
definition) or {\f4\fs24 #pragma interface} (declarations). {See `Declarations and Definitions in One Header' {\NeXTHelpLink \markername ;\linkFilename /build/cc_proj/cc/cc/invoke.rtf;\linkMarkername {C++
Interface;}
,}., for more discussion of 
these pragmas. \
When your code is compiled with {\f4\fs24 -fexternal-templates}, all 
template instantiations are external. You must arrange for all necessary 
instantiations to appear in the implementation file; you can do this with a {\f1\fs24 
typedef} that references each instantiation needed. Conversely, when you 
compile using the default option {\f4\fs24 -fno-external-templates}, all template 
instantiations are explicitly internal. \
You do not need to specify {\f4\fs24 
-fexternal-templates} when compiling a file that does not define and 
instantiate templates used in other files, even if your file {\i uses} templates 
defined in other files that are compiled with {\f4\fs24 -fexternal-templates}. The only 
side effect is an increase in object size for each file that you compile 
without {\f4\fs24 -fexternal-templates}. \
\
{\f1\fs24 -fmemoize-lookups} \
{\f1\fs24 -fsave-memoized} Use heuristics 
to compile faster. These heuristics are not enabled by default, since they are 
only effective for certain input files. Other input files compile more slowly. \

The first time the compiler must build a call to a member function (or 
reference to a data member), it must (1) determine whether the class 
implements member functions of that name; (2) resolve which member function to 
call (which involves figuring out what sorts of type conversions need to be 
made); and (3) check the visibility of the member function to the caller. All 
of this adds up to slower compilation. Normally, the second time a call is 
made to that member function (or reference to that data member), it must go 
through the same lengthy process again. This means that code like this: \
{\f1\fs24 
cout << "This " << p << " has " << n << " legs.\\n"; }\
\
 makes six passes through 
all three steps. By using a software cache, a ``hit'' significantly reduces 
this cost. Unfortunately, using the cache introduces another layer of 
mechanisms which must be implemented, and so incurs its own overhead. {\f4\fs24 
-fmemoize-lookups} enables the software cache. \
Because access privileges 
(visibility) to members and member functions may differ from one function 
context to the next, G++ may need to flush the cache. With the {\f4\fs24 
-fmemoize-lookups} flag, the cache is flushed after every function that is 
compiled. The {\f4\fs24 -fsave-memoized} flag enables the same software cache, but when 
the compiler determines that the context of the last function compiled would 
yield the same access privileges of the next function to compile, it preserves 
the cache. This is most helpful when defining many member functions for the 
same class: with the exception of member functions which are friends of other 
classes, each member function has exactly the same access privileges as every 
other, and the cache need not be flushed. \
\
{\f1\fs24 -fno-strict-prototype} Treat a 
function declaration with no arguments, such as {\f4\fs24 int foo ();}, as C would treat 
it---as saying nothing about the number of arguments or their types. Normally, 
such a declaration in C++ means that the function {\f1\fs24 foo} takes no arguments. \
\
{\f1\fs24 
-fnonnull-objects} Assume that objects reached through references are not null. \

Normally, GNU C++ makes conservative assumptions about objects reached through 
references. For example, the compiler must check that {\f1\fs24 a} is not null in code 
like the following: \
{\f1\fs24 obj &a = g (); }\
{\f1\fs24 a.f (2); }\
\
Checking that references of this 
sort have non-null values requires extra code, however, and it is unnecessary 
for many programs. You can use {\f4\fs24 -fnonnull-objects} to omit the checks for null, 
if your program doesn't require checking. \
\
{\f1\fs24 -fthis-is-variable} Permit assignment 
to {\f1\fs24 this}. The incorporation of user-defined free store management into C++ has 
made assignment to {\f4\fs24 this} an anachronism. Therefore, by default it is invalid to 
assign to {\f1\fs24 this} within a class member function; that is, GNU C++ treats the 
type of {\f4\fs24 this} in a member function of class {\f1\fs24 X} to be {\f4\fs24 X *const}. However, for 
backwards compatibility, you can make it valid with {\f4\fs24 -fthis-is-variable}. \
\
{\f1\fs24 
-nostdinc++} Do not search for header files in the standard directories 
specific to C++, but do still search the other standard directories. (This 
option is used when building libg++.) \
\
{\f1\fs24 -traditional} For C++ programs (in 
addition to the effects that apply to both C and C++), this has the same 
effect as {\f4\fs24 -fthis-is-variable}. {See ` Options Controlling C Dialect' {\NeXTHelpLink \markername ;\linkFilename /build/cc_proj/cc/cc/invoke.rtf;\linkMarkername {C Dialect Options;}
,}.. \
\
In addition, these optimization, warning, and 
code generation options have meanings only for C++ programs: \
\
{\f1\fs24 
-fno-default-inline} Do not assume {\f4\fs24 inline} for functions defined inside a class 
scope. {See `Options That Control Optimization' {\NeXTHelpLink \markername ;\linkFilename /build/cc_proj/cc/cc/invoke.rtf;\linkMarkername {Optimize Options;}
,}.. \
\
{\f1\fs24 -Wenum-clash} \
{\f1\fs24 -Woverloaded-virtual} \
{\f1\fs24 -Wtemplate-debugging} Warnings that 
apply only to C++ programs. {See `Options to Request or Suppress Warnings' {\NeXTHelpLink \markername ;\linkFilename /build/cc_proj/cc/cc/invoke.rtf;\linkMarkername {Warning
Options;}
,}.. \
\
{\f1\fs24 +e{\i n}} Control how virtual function definitions are 
used, in a fashion compatible with {\f1\fs24 cfront} 1.x. {See `Options for
Code Generation Conventions' {\NeXTHelpLink \markername ;\linkFilename /build/cc_proj/cc/cc/invoke.rtf;\linkMarkername {Code Gen Options;}
,}.. \
\
{{\NeXTHelpMarker \markername Warning Options;}
,}{\b\fs48\f4 1.6 Options to Request or 
Suppress Warnings}\
\
Warnings are diagnostic messages that report constructions 
which are not inherently erroneous but which are risky or suggest there may 
have been an error. \
You can request many specific warnings with options 
beginning {\f4\fs24 -W}, for example {\f4\fs24 -Wimplicit} to request warnings on implicit 
declarations. Each of these specific warning options also has a negative form 
beginning {\f4\fs24 -Wno-} to turn off warnings; for example, {\f4\fs24 -Wno-implicit}. This manual 
lists only one of the two forms, whichever is not the default. \
These options 
control the amount and kinds of warnings produced by GNU CC: \
\
{\f1\fs24 -fsyntax-only} 
Check the code for syntax errors, but don't do anything beyond that. \
\
{\f1\fs24 -w} 
Inhibit all warning messages. \
\
{\f1\fs24 -Wno-import} Inhibit warning messages about the 
use of {\f4\fs24 #import}. \
\
{\f1\fs24 -pedantic} Issue all the warnings demanded by strict ANSI 
standard C; reject all programs that use forbidden extensions. \
Valid ANSI 
standard C programs should compile properly with or without this option 
(though a rare few will require {\f4\fs24 -ansi}). However, without this option, certain 
GNU extensions and traditional C features are supported as well. With this 
option, they are rejected. \
{\f4\fs24 -pedantic} does not cause warning messages for use 
of the alternate keywords whose names begin and end with {\f4\fs24 __}. Pedantic warnings 
are also disabled in the expression that follows {\f1\fs24 __extension__}. However, only 
system header files should use these escape routes; application programs 
should avoid them. {See `' {\NeXTHelpLink \markername ;\linkFilename .
ation programs should avoid them.
ld use
ic
;\linkMarkername {Alternate Keywords;}
,}.. \
This option is not intended to be ; it exists only to 
satisfy \
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
{{\NeXTHelpMarker \markername M680x0 Options;}
,}{\b\fs32\f4 M680x0 Options}\
\
These are the {\f4\fs24 -m} options defined for the 68000 series. 
The default values for these options depends on which style of 68000 was 
selected when the compiler was configured; the defaults for the most common 
choices are given below. \
\
{\f1\fs24 -m68000} \
{\f1\fs24 -mc68000} Generate output for a 68000. This is 
the default when the compiler is configured for 68000-based systems. \
\
{\f1\fs24 -m68020} \
{\f1\fs24 
-mc68020} Generate output for a 68020. This is the default when the compiler is 
configured for 68020-based systems. \
\
{\f1\fs24 -m68881} Generate output containing 68881 
instructions for floating point. This is the default for most 68020 systems 
unless {\f4\fs24 -nfp} was specified when the compiler was configured. \
\
{\f1\fs24 -m68030} Generate 
output for a 68030. This is the default when the compiler is configured for 
68030-based systems. \
\
{\f1\fs24 -m68040} Generate output for a 68040. This is the default 
when the compiler is configured for 68040-based systems. \
This option inhibits 
the use of 68881/68882 instructions that have to be emulated by software on 
the 68040. If your 68040 does not have code to emulate those instructions, use {\f4\fs24 
-m68040}. \
\
{\f1\fs24 -m68020-40} Generate output for a 68040, without using any of the new 
instructions. This results in code which can run relatively efficiently on 
either a 68020/68881 or a 68030 or a 68040. The generated code does use the 
68881 instructions that are emulated on the 68040. \
\
{\f1\fs24 -mfpa} Generate output 
containing Sun FPA instructions for floating point. \
\
{\f1\fs24 -msoft-float} Generate 
output containing library calls for floating point. {\b Warning:} the requisite 
libraries are not part of GNU CC. Normally the facilities of the machine's 
usual C compiler are used, but this can't be done directly in 
cross-compilation. You must make your own arrangements to provide suitable 
library functions for cross-compilation. \
\
{\f1\fs24 -mshort} Consider type {\f1\fs24 int} to be 16 
bits wide, like {\f1\fs24 short int}. \
\
{\f1\fs24 -mnobitfield} Do not use the bit-field instructions. 
The {\f4\fs24 -m68000} option implies {\f4\fs24 -mnobitfield}. \
\
{\f1\fs24 -mbitfield} Do use the bit-field 
instructions. The {\f4\fs24 -m68020} option implies {\f4\fs24 -mbitfield}. This is the default if 
you use a configuration designed for a 68020. \
\
{\f1\fs24 -mrtd} Use a different 
function-calling convention, in which functions that take a fixed number of 
arguments return with the {\f1\fs24 rtd} instruction, which pops their arguments while 
returning. This saves one instruction in the caller since there is no need to 
pop the arguments there. \
This calling convention is incompatible with the one 
normally used on Unix, so you cannot use it if you need to call libraries 
compiled with the Unix compiler. \
Also, you must provide function prototypes 
for all functions that take variable numbers of arguments (including {\f1\fs24 printf}); 
otherwise incorrect code will be generated for calls to those functions. \
In 
addition, seriously incorrect code will result if you call a function with too 
many arguments. (Normally, extra arguments are harmlessly ignored.) \
The {\f1\fs24 rtd} 
instruction is supported by the 68010 and 68020 processors, but not by the 
68000. \
\
{{\NeXTHelpMarker \markername VAX Options;}
,}{\b\fs32\f4 VAX Options}\
\
These {\f4\fs24 -m} options are defined for the Vax: \
\
{\f1\fs24 -munix} Do not 
output certain jump instructions ({\f1\fs24 aobleq} and so on) that the Unix assembler 
for the Vax cannot handle across long ranges. \
\
{\f1\fs24 -mgnu} Do output those jump 
instructions, on the assumption that you will assemble with the GNU assembler. \
\
{\f1\fs24 
-mg} Output code for g-format floating point numbers instead of d-format. \
\
{{\NeXTHelpMarker \markername SPARC Options;}
,}{\b\fs32\f4 SPARC 
Options}\
\
These {\f4\fs24 -m} switches are supported on the SPARC: \
\
{\f1\fs24 -mfpu} \
{\f1\fs24 -mhard-float} 
Generate output containing floating point instructions. This is the default. \
\
{\f1\fs24 
-mno-fpu} \
{\f1\fs24 -msoft-float} Generate output containing library calls for floating 
point. {\b Warning:} there is no GNU floating-point library for SPARC. Normally the 
facilities of the machine's usual C compiler are used, but this cannot be done 
directly in cross-compilation. You must make your own arrangements to provide 
suitable library functions for cross-compilation. \
{\f4\fs24 -msoft-float} changes the 
calling convention in the output file; therefore, it is only useful if you 
compile {\i all} of a program with this option. In particular, you need to compile `{\f1\fs24 
libgcc.a}', the library that comes with GNU CC, with {\f4\fs24 -msoft-float} in order for 
this to work. \
 \
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.