home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-09-05 | 148.6 KB | 3,565 lines |
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- NNAAMMEE
- gcc, g++ - GNU project C and C++ Compiler (v2.7)
-
- SSYYNNOOPPSSIISS
- ggcccc [ _o_p_t_i_o_n | _f_i_l_e_n_a_m_e ]...
- gg++++ [ _o_p_t_i_o_n | _f_i_l_e_n_a_m_e ]...
-
- WWAARRNNIINNGG
- The information in this man page is an extract from the
- full documentation of the GNU C compiler, and is limited
- to the meaning of the options.
-
- This man page is not kept up to date except when volun-
- teers want to maintain it. If you find a discrepancy
- between the man page and the software, please check the
- Info file, which is the authoritative documentation.
-
- If we find that the things in this man page that are out
- of date cause significant confusion or complaints, we will
- stop distributing the man page. The alternative, updating
- the man page when we update the Info file, is impossible
- because the rest of the work of maintaining GNU CC leaves
- us no time for that. The GNU project regards man pages as
- obsolete and should not let them take time away from other
- things.
-
- For complete and current documentation, refer to the Info
- file `ggcccc' or the manual _U_s_i_n_g _a_n_d _P_o_r_t_i_n_g _G_N_U _C_C _(_f_o_r
- _v_e_r_s_i_o_n _2_._0_). Both are made from the Texinfo source file
- ggcccc..tteexxiinnffoo.
-
- DDEESSCCRRIIPPTTIIOONN
- The C and C++ compilers are integrated. Both process
- input files through one or more of four stages: prepro-
- cessing, compilation, assembly, and linking. Source file-
- name suffixes identify the source language, but which name
- you use for the compiler governs default assumptions:
-
- ggcccc assumes preprocessed (..ii) files are C and assumes C
- style linking.
-
- gg++++ assumes preprocessed (..ii) files are C++ and assumes
- C++ style linking.
-
- Suffixes of source file names indicate the language and
- kind of processing to be done:
-
- ..cc C source; preprocess, compile, assemble
- ..CC C++ source; preprocess, compile, assemble
- ..cccc C++ source; preprocess, compile, assemble
- ..ccxxxx C++ source; preprocess, compile, assemble
- ..mm Objective-C source; preprocess, compile, assemble
- ..ii preprocessed C; compile, assemble
- ..iiii preprocessed C++; compile, assemble
-
-
-
- GNU Tools 1993/10/13 1
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- ..ss Assembler source; assemble
- ..SS Assembler source; preprocess, assemble
- ..hh Preprocessor file; not usually named on command line
-
- Files with other suffixes are passed to the linker. Com-
- mon cases include:
-
- ..oo Object file
- ..aa Archive file
-
- Linking is always the last stage unless you use one of the
- --cc, --SS, or --EE options to avoid it (or unless compilation
- errors stop the whole process). For the link stage, all
- ..oo files corresponding to source files, --ll libraries,
- unrecognized filenames (including named ..oo object files
- and ..aa archives) are passed to the linker in command-line
- order.
-
- OOPPTTIIOONNSS
- Options must be separate: `--ddrr' is quite different from
- `--dd --rr '.
-
- Most `--ff' and `--WW' options have two contrary forms: --ff_n_a_m_e
- and --ffnnoo--_n_a_m_e (or --WW_n_a_m_e and --WWnnoo--_n_a_m_e). Only the non-
- default forms are shown here.
-
- Here is a summary of all the options, grouped by type.
- Explanations are in the following sections.
-
- OOvveerraallll OOppttiioonnss
- -c -S -E -o _f_i_l_e -pipe -v -x _l_a_n_g_u_a_g_e
-
- LLaanngguuaaggee OOppttiioonnss
- -ansi -fall-virtual -fcond-mismatch
- -fdollars-in-identifiers -fenum-int-equiv
- -fexternal-templates -fno-asm -fno-builtin
- -fno-strict-prototype -fsigned-bitfields
- -fsigned-char -fthis-is-variable
- -funsigned-bitfields -funsigned-char
- -fwritable-strings -traditional -traditional-cpp
- -trigraphs
-
- WWaarrnniinngg OOppttiioonnss
- -fsyntax-only -pedantic -pedantic-errors -w -W
- -Wall -Waggregate-return -Wcast-align -Wcast-qual
- -Wchar-subscript -Wcomment -Wconversion
- -Wenum-clash -Werror -Wformat -Wid-clash-_l_e_n
- -Wimplicit -Winline -Wmissing-prototypes
- -Wmissing-declarations -Wnested-externs -Wno-import
- -Wparentheses -Wpointer-arith -Wredundant-decls
- -Wreturn-type -Wshadow -Wstrict-prototypes -Wswitch
- -Wtemplate-debugging -Wtraditional -Wtrigraphs
- -Wuninitialized -Wunused -Wwrite-strings
-
-
-
-
- GNU Tools 1993/10/13 2
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- DDeebbuuggggiinngg OOppttiioonnss
- -a -d_l_e_t_t_e_r_s -fpretend-float -g -g_l_e_v_e_l -gcoff
- -gxcoff -gxcoff+ -gdwarf -gdwarf+ -gstabs -gstabs+
- -ggdb -p -pg -save-temps -print-file-name=_l_i_b_r_a_r_y
- -print-libgcc-file-name -print-prog-name=_p_r_o_g_r_a_m
-
- OOppttiimmiizzaattiioonn OOppttiioonnss
- -fcaller-saves -fcse-follow-jumps -fcse-skip-blocks
- -fdelayed-branch -felide-constructors
- -fexpensive-optimizations -ffast-math -ffloat-store
- -fforce-addr -fforce-mem -finline-functions
- -fkeep-inline-functions -fmemoize-lookups
- -fno-default-inline -fno-defer-pop
- -fno-function-cse -fno-inline -fno-peephole
- -fomit-frame-pointer -frerun-cse-after-loop
- -fschedule-insns -fschedule-insns2
- -fstrength-reduce -fthread-jumps -funroll-all-loops
- -funroll-loops -O -O2
-
- PPrreepprroocceessssoorr OOppttiioonnss
- -A_a_s_s_e_r_t_i_o_n -C -dD -dM -dN -D_m_a_c_r_o[=_d_e_f_n] -E -H
- -idirafter _d_i_r -include _f_i_l_e -imacros _f_i_l_e -iprefix
- _f_i_l_e -iwithprefix _d_i_r -M -MD -MM -MMD -nostdinc -P
- -U_m_a_c_r_o -undef
-
- AAsssseemmbblleerr OOppttiioonn
- -Wa,_o_p_t_i_o_n
-
- LLiinnkkeerr OOppttiioonnss
- -l_l_i_b_r_a_r_y -nostartfiles -nostdlib -static -shared
- -symbolic -Xlinker _o_p_t_i_o_n -Wl,_o_p_t_i_o_n -u _s_y_m_b_o_l
-
- DDiirreeccttoorryy OOppttiioonnss
- -B_p_r_e_f_i_x -I_d_i_r -I- -L_d_i_r
-
- TTaarrggeett OOppttiioonnss
- -b _m_a_c_h_i_n_e -V _v_e_r_s_i_o_n
-
- CCoonnffiigguurraattiioonn DDeeppeennddeenntt OOppttiioonnss
- _M_6_8_0_x_0 _O_p_t_i_o_n_s
- -m68000 -m68020 -m68020-40 -m68030 -m68040 -m68881
- -mbitfield -mc68000 -mc68020 -mfpa -mnobitfield
- -mrtd -mshort -msoft-float
-
- _V_A_X _O_p_t_i_o_n_s
- -mg -mgnu -munix
-
- _S_P_A_R_C _O_p_t_i_o_n_s
- -mepilogue -mfpu -mhard-float -mno-fpu
- -mno-epilogue -msoft-float -msparclite -mv8
- -msupersparc -mcypress
-
- _C_o_n_v_e_x _O_p_t_i_o_n_s
- -margcount -mc1 -mc2 -mnoargcount
-
-
-
- GNU Tools 1993/10/13 3
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- _A_M_D_2_9_K _O_p_t_i_o_n_s
- -m29000 -m29050 -mbw -mdw -mkernel-registers
- -mlarge -mnbw -mnodw -msmall -mstack-check
- -muser-registers
-
- _M_8_8_K _O_p_t_i_o_n_s
- -m88000 -m88100 -m88110 -mbig-pic
- -mcheck-zero-division -mhandle-large-shift
- -midentify-revision -mno-check-zero-division
- -mno-ocs-debug-info -mno-ocs-frame-position
- -mno-optimize-arg-area -mno-serialize-volatile
- -mno-underscores -mocs-debug-info
- -mocs-frame-position -moptimize-arg-area
- -mserialize-volatile -mshort-data-_n_u_m -msvr3 -msvr4
- -mtrap-large-shift -muse-div-instruction
- -mversion-03.00 -mwarn-passed-structs
-
- _R_S_6_0_0_0 _O_p_t_i_o_n_s
- -mfp-in-toc -mno-fop-in-toc
-
- _R_T _O_p_t_i_o_n_s
- -mcall-lib-mul -mfp-arg-in-fpregs -mfp-arg-in-gregs
- -mfull-fp-blocks -mhc-struct-return -min-line-mul
- -mminimum-fp-blocks -mnohc-struct-return
-
- _M_I_P_S _O_p_t_i_o_n_s
- -mcpu=_c_p_u _t_y_p_e -mips2 -mips3 -mint64 -mlong64
- -mlonglong128 -mmips-as -mgas -mrnames -mno-rnames
- -mgpopt -mno-gpopt -mstats -mno-stats -mmemcpy
- -mno-memcpy -mno-mips-tfile -mmips-tfile
- -msoft-float -mhard-float -mabicalls -mno-abicalls
- -mhalf-pic -mno-half-pic -G _n_u_m -nocpp
-
- _i_3_8_6 _O_p_t_i_o_n_s
- -m486 -mno-486 -msoft-float -mno-fp-ret-in-387
-
- _H_P_P_A _O_p_t_i_o_n_s
- -mpa-risc-1-0 -mpa-risc-1-1 -mkernel -mshared-libs
- -mno-shared-libs -mlong-calls -mdisable-fpregs
- -mdisable-indexing -mtrailing-colon
-
- _i_9_6_0 _O_p_t_i_o_n_s
- -m_c_p_u_-_t_y_p_e -mnumerics -msoft-float
- -mleaf-procedures -mno-leaf-procedures -mtail-call
- -mno-tail-call -mcomplex-addr -mno-complex-addr
- -mcode-align -mno-code-align -mic-compat
- -mic2.0-compat -mic3.0-compat -masm-compat
- -mintel-asm -mstrict-align -mno-strict-align
- -mold-align -mno-old-align
-
- _D_E_C _A_l_p_h_a _O_p_t_i_o_n_s
- -mfp-regs -mno-fp-regs -mno-soft-float -msoft-float
-
- _S_y_s_t_e_m _V _O_p_t_i_o_n_s
-
-
-
- GNU Tools 1993/10/13 4
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- -G -Qy -Qn -YP,_p_a_t_h_s -Ym,_d_i_r
-
- CCooddee GGeenneerraattiioonn OOppttiioonnss
- -fcall-saved-_r_e_g -fcall-used-_r_e_g -ffixed-_r_e_g
- -finhibit-size-directive -fnonnull-objects
- -fno-common -fno-ident -fno-gnu-linker
- -fpcc-struct-return -fpic -fPIC -freg-struct-return
- -fshared-data -fshort-enums -fshort-double
- -fvolatile -fvolatile-global -fverbose-asm
-
- OOVVEERRAALLLL OOPPTTIIOONNSS
- --xx _l_a_n_g_u_a_g_e
- Specify explicitly the _l_a_n_g_u_a_g_e for the following
- input files (rather than choosing a default based
- on the file name suffix) . This option applies to
- all following input files until the next `--xx' op-
- tion. Possible values of _l_a_n_g_u_a_g_e are `cc',
- `oobbjjeeccttiivvee--cc', `cc--hheeaaddeerr', `cc++++', `ccpppp--oouuttppuutt',
- `aasssseemmbblleerr', and `aasssseemmbblleerr--wwiitthh--ccpppp'.
-
- --xx nnoonnee
- Turn off any specification of a language, so that
- subsequent files are handled according to their
- file name suffixes (as they are if `--xx' has not
- been used at all).
-
- If you want only some of the four stages (preprocess, com-
- pile, assemble, link), you can use `--xx' (or filename suf-
- fixes) to tell ggcccc where to start, and one of the options
- `--cc', `--SS', or `--EE' to say where ggcccc is to stop. Note
- that some combinations (for example, `--xx ccpppp--oouuttppuutt --EE')
- instruct ggcccc to do nothing at all.
-
- --cc Compile or assemble the source files, but do not
- link. The compiler output is an object file corre-
- sponding to each source file.
-
- By default, GCC makes the object file name for a
- source file by replacing the suffix `..cc', `..ii',
- `..ss', etc., with `..oo'. Use --oo to select another
- name.
-
- GCC ignores any unrecognized input files (those
- that do not require compilation or assembly) with
- the --cc option.
-
- --SS Stop after the stage of compilation proper; do not
- assemble. The output is an assembler code file for
- each non-assembler input file specified.
-
- By default, GCC makes the assembler file name for a
- source file by replacing the suffix `..cc', `..ii',
- etc., with `..ss'. Use --oo to select another name.
-
-
-
-
- GNU Tools 1993/10/13 5
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- GCC ignores any input files that don't require com-
- pilation.
-
- --EE Stop after the preprocessing stage; do not run the
- compiler proper. The output is preprocessed source
- code, which is sent to the standard output.
-
- GCC ignores input files which don't require prepro-
- cessing.
-
- --oo _f_i_l_e
- Place output in file _f_i_l_e. This applies regardless
- to whatever sort of output GCC is producing,
- 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 `--oo' when compiling more
- than one input file, unless you are producing an
- executable file as output.
-
- If you do not specify `--oo', the default is to put
- an executable file in `aa..oouutt', the object file for
- `_s_o_u_r_c_e.._s_u_f_f_i_x' in `_s_o_u_r_c_e..oo', its assembler file
- in `_s_o_u_r_c_e..ss', and all preprocessed C source on
- standard output.
-
- --vv Print (on standard error output) the commands exe-
- cuted to run the stages of compilation. Also print
- the version number of the compiler driver program
- and of the preprocessor and the compiler proper.
-
- --ppiippee Use pipes rather than temporary files for communi-
- cation between the various stages of compilation.
- This fails to work on some systems where the assem-
- bler cannot read from a pipe; but the GNU assembler
- has no trouble.
-
-
- LLAANNGGUUAAGGEE OOPPTTIIOONNSS
- The following options control the dialect of C that the
- compiler accepts:
-
- --aannssii Support all ANSI standard C programs.
-
- This turns off certain features of GNU C that are
- incompatible with ANSI C, such as the aassmm, iinnlliinnee
- and ttyyppeeooff keywords, and predefined macros such as
- uunniixx and vvaaxx that identify the type of system you
- are using. It also enables the undesirable and
- rarely used ANSI trigraph feature, and disallows
- `$$' as part of identifiers.
-
- The alternate keywords ____aassmm____, ____eexxtteennssiioonn____,
-
-
-
- GNU Tools 1993/10/13 6
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- ____iinnlliinnee____ and ____ttyyppeeooff____ continue to work despite
- `--aannssii'. You would not want to use them in an ANSI
- C program, of course, but it is useful to put them
- in header files that might be included in compila-
- tions done with `--aannssii'. Alternate predefined
- macros such as ____uunniixx____ and ____vvaaxx____ are also avail-
- able, with or without `--aannssii'.
-
- The `--aannssii' option does not cause non-ANSI programs
- to be rejected gratuitously. For that, `--ppeeddaannttiicc'
- is required in addition to `--aannssii'.
-
- The preprocessor predefines a macro ____SSTTRRIICCTT__AANNSSII____
- when you use the `--aannssii' option. 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.
-
- --ffnnoo--aassmm
- Do not recognize aassmm, iinnlliinnee or ttyyppeeooff as a key-
- word. These words may then be used as identifiers.
- You can use ____aassmm____, ____iinnlliinnee____ and ____ttyyppeeooff____ in-
- stead. `--aannssii' implies `--ffnnoo--aassmm'.
-
- --ffnnoo--bbuuiillttiinn
- Don't recognize built-in functions that do not be-
- gin with two leading underscores. Currently, the
- functions affected include __eexxiitt, aabboorrtt, aabbss, aalllloo--
- ccaa, ccooss, eexxiitt, ffaabbss, llaabbss, mmeemmccmmpp, mmeemmccppyy, ssiinn,
- ssqqrrtt, ssttrrccmmpp, ssttrrccppyy, and ssttrrlleenn.
-
- The `--aannssii' option prevents aallllooccaa and __eexxiitt from
- being builtin functions.
-
- --ffnnoo--ssttrriicctt--pprroottoottyyppee
- Treat a function declaration with no arguments,
- such as `iinntt ffoooo ();', as C would treat it--as say-
- ing nothing about the number of arguments or their
- types (C++ only). Normally, such a declaration in
- C++ means that the function ffoooo takes no arguments.
-
- --ttrriiggrraapphhss
- Support ANSI C trigraphs. The `--aannssii' option im-
- plies `--ttrriiggrraapphhss'.
-
- --ttrraaddiittiioonnaall
- Attempt to support some aspects of traditional C
- compilers. For details, see the GNU C Manual; the
- duplicate list here has been deleted so that we
- won't get complaints when it is out of date.
-
- But one note about C++ programs only (not C).
-
-
-
- GNU Tools 1993/10/13 7
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- `--ttrraaddiittiioonnaall' has one additional effect for C++:
- assignment to tthhiiss is permitted. This is the same
- as the effect of `--fftthhiiss--iiss--vvaarriiaabbllee'.
-
- --ttrraaddiittiioonnaall--ccpppp
- Attempt to support some aspects of traditional C
- preprocessors. This includes the items that
- specifically mention the preprocessor above, but
- none of the other effects of `--ttrraaddiittiioonnaall'.
-
- --ffddoollllaarrss--iinn--iiddeennttiiffiieerrss
- Permit the use of `$$' in identifiers (C++ only).
- You can also use `--ffnnoo--ddoollllaarrss--iinn--iiddeennttiiffiieerrss' to
- explicitly prohibit use of `$$'. (GNU C++ allows
- `$$' by default on some target systems but not oth-
- ers.)
-
- --ffeennuumm--iinntt--eeqquuiivv
- Permit implicit conversion of iinntt to enumeration
- types (C++ only). Normally GNU C++ allows conver-
- sion of eennuumm to iinntt, but not the other way around.
-
- --ffeexxtteerrnnaall--tteemmppllaatteess
- Produce smaller code for template declarations, by
- generating only a single copy of each template
- function where it is defined (C++ only). To use
- this option successfully, you must also mark all
- files that use templates with either `##pprraaggmmaa
- iimmpplleemmeennttaattiioonn' (the definition) or `##pprraaggmmaa
- iinntteerrffaaccee' (declarations).
-
- When your code is compiled with
- `--ffeexxtteerrnnaall--tteemmppllaatteess', all template instantiations
- are external. You must arrange for all necessary
- instantiations to appear in the implementation
- file; you can do this with a ttyyppeeddeeff that refer-
- ences each instantiation needed. Conversely, when
- you compile using the default option
- `--ffnnoo--eexxtteerrnnaall--tteemmppllaatteess', all template instantia-
- tions are explicitly internal.
-
- --ffaallll--vviirrttuuaall
- Treat all possible member functions as virtual, im-
- plicitly. All member functions (except for con-
- structor functions and nneeww or ddeelleettee member opera-
- tors) 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.
-
-
-
- GNU Tools 1993/10/13 8
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- --ffccoonndd--mmiissmmaattcchh
- Allow conditional expressions with mismatched types
- in the second and third arguments. The value of
- such an expression is void.
-
- --fftthhiiss--iiss--vvaarriiaabbllee
- Permit assignment to tthhiiss (C++ only). The incorpo-
- ration of user-defined free store management into
- C++ has made assignment to `tthhiiss' an anachronism.
- Therefore, by default it is invalid to assign to
- tthhiiss within a class member function. However, for
- backwards compatibility, you can make it valid with
- `--fftthhiiss--iiss--vvaarriiaabbllee'.
-
- --ffuunnssiiggnneedd--cchhaarr
- Let the type cchhaarr be unsigned, like uunnssiiggnneedd cchhaarr.
-
- Each kind of machine has a default for what cchhaarr
- should be. It is either like uunnssiiggnneedd cchhaarr by de-
- fault or like ssiiggnneedd cchhaarr by default.
-
- Ideally, a portable program should always use
- ssiiggnneedd cchhaarr or uunnssiiggnneedd cchhaarr when it depends on the
- signedness of an object. But many programs have
- been written to use plain cchhaarr 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 cchhaarr is always a distinct type from each
- of ssiiggnneedd cchhaarr and uunnssiiggnneedd cchhaarr, even though its
- behavior is always just like one of those two.
-
- --ffssiiggnneedd--cchhaarr
- Let the type cchhaarr be signed, like ssiiggnneedd cchhaarr.
-
- Note that this is equivalent to
- `--ffnnoo--uunnssiiggnneedd--cchhaarr', which is the negative form of
- `--ffuunnssiiggnneedd--cchhaarr'. Likewise, `--ffnnoo--ssiiggnneedd--cchhaarr' is
- equivalent to `--ffuunnssiiggnneedd--cchhaarr'.
-
- --ffssiiggnneedd--bbiittffiieellddss
-
- --ffuunnssiiggnneedd--bbiittffiieellddss
-
- --ffnnoo--ssiiggnneedd--bbiittffiieellddss
-
- --ffnnoo--uunnssiiggnneedd--bbiittffiieellddss
- These options control whether a bitfield is signed
- or unsigned, when declared with no explicit
- `ssiiggnneedd' or `uunnssiiggnneedd' qualifier. By default, such
- a bitfield is signed, because this is consistent:
- the basic integer types such as iinntt are signed
-
-
-
- GNU Tools 1993/10/13 9
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- types.
-
- However, when you specify `--ttrraaddiittiioonnaall', bitfields
- are all unsigned no matter what.
-
- --ffwwrriittaabbllee--ssttrriinnggss
- 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. `--ttrraaddiittiioonnaall' also has this ef-
- fect.
-
- Writing into string constants is a very bad idea;
- "constants" should be constant.
-
- PPRREEPPRROOCCEESSSSOORR OOPPTTIIOONNSS
- These options control the C preprocessor, which is run on
- each C source file before actual compilation.
-
- If you use the `--EE' option, GCC does nothing except pre-
- processing. Some of these options make sense only togeth-
- er with `--EE' because they cause the preprocessor output to
- be unsuitable for actual compilation.
-
- --iinncclluuddee _f_i_l_e
- Process _f_i_l_e as input before processing the regular
- input file. In effect, the contents of _f_i_l_e are
- compiled first. Any `--DD' and `--UU' options on the
- command line are always processed before `--iinncclluuddee
- _f_i_l_e', regardless of the order in which they are
- written. All the `--iinncclluuddee' and `--iimmaaccrrooss' options
- are processed in the order in which they are writ-
- ten.
-
- --iimmaaccrrooss _f_i_l_e
- Process _f_i_l_e as input, discarding the resulting
- output, before processing the regular input file.
- Because the output generated from _f_i_l_e is discard-
- ed, the only effect of `--iimmaaccrrooss _f_i_l_e' is to make
- the macros defined in _f_i_l_e available for use in the
- main input. The preprocessor evaluates any `--DD'
- and `--UU' options on the command line before pro-
- cessing `--iimmaaccrrooss_f_i_l_e', regardless of the order in
- which they are written. All the `--iinncclluuddee' and
- `--iimmaaccrrooss' options are processed in the order in
- which they are written.
-
- --iiddiirraafftteerr _d_i_r
- Add the directory _d_i_r to the second include path.
- The directories on the second include path are
- searched when a header file is not found in any of
- the directories in the main include path (the one
- that `--II' adds to).
-
-
-
-
- GNU Tools 1993/10/13 10
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- --iipprreeffiixx _p_r_e_f_i_x
- Specify _p_r_e_f_i_x as the prefix for subsequent
- `--iiwwiitthhpprreeffiixx' options.
-
- --iiwwiitthhpprreeffiixx _d_i_r
- Add a directory to the second include path. The
- directory's name is made by concatenating _p_r_e_f_i_x
- and _d_i_r, where _p_r_e_f_i_x was specified previously with
- `--iipprreeffiixx'.
-
- --nnoossttddiinncc
- Do not search the standard system directories for
- header files. Only the directories you have speci-
- fied with `--II' options (and the current directory,
- if appropriate) are searched.
-
- By using both `--nnoossttddiinncc' and `--II--', you can limit
- the include-file search file to only those directo-
- ries you specify explicitly.
-
- --nnoossttddiinncc++++
- Do not search for header files in the C++-specific
- standard directories, but do still search the other
- standard directories. (This option is used when
- building `lliibbgg++++'.)
-
- --uunnddeeff Do not predefine any nonstandard macros. (Includ-
- ing architecture flags).
-
- --EE Run only the C preprocessor. Preprocess all the C
- source files specified and output the results to
- standard output or to the specified output file.
-
- --CC Tell the preprocessor not to discard comments.
- Used with the `--EE' option.
-
- --PP Tell the preprocessor not to generate `##lliinnee' com-
- mands. Used with the `--EE' option.
-
- --MM [[ --MMGG ]]
- Tell the preprocessor to output a rule suitable for
- mmaakkee describing the dependencies of each object
- file. For each source file, the preprocessor out-
- puts one mmaakkee-rule whose target is the object file
- name for that source file and whose dependencies
- are all the files `##iinncclluuddee'd in it. This rule may
- be a single line or may be continued with `\\'-new-
- line if it is long. The list of rules is printed
- on standard output instead of the preprocessed C
- program.
-
- `--MM' implies `--EE'.
-
- `--MMGG' says to treat missing header files as gener-
-
-
-
- GNU Tools 1993/10/13 11
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- ated files and assume they live in the same direc-
- tory as the source file. It must be specified in
- addition to `--MM'.
-
- --MMMM [[ --MMGG ]]
- Like `--MM' but the output mentions only the user
- header files included with `##iinncclluuddee _f_i_l_e"'. Sys-
- tem header files included with `##iinncclluuddee <<_f_i_l_e>'
- are omitted.
-
- --MMDD Like `--MM' but the dependency information is written
- to files with names made by replacing `..oo' with
- `..dd' at the end of the output file names. This is
- in addition to compiling the file as
- specified--`--MMDD' does not inhibit ordinary compila-
- tion the way `--MM' does.
-
- The Mach utility `mmdd' can be used to merge the `..dd'
- files into a single dependency file suitable for
- using with the `mmaakkee' command.
-
- --MMMMDD Like `--MMDD' except mention only user header files,
- not system header files.
-
- --HH Print the name of each header file used, in addi-
- tion to other normal activities.
-
- --AA_q_u_e_s_t_i_o_n((_a_n_s_w_e_r))
- Assert the answer _a_n_s_w_e_r for _q_u_e_s_t_i_o_n, in case it
- is tested with a preprocessor conditional such as
- `##iiff ##_q_u_e_s_t_i_o_n((_a_n_s_w_e_r))'. `--AA--' disables the stan-
- dard assertions that normally describe the target
- machine.
-
- --AA_q_u_e_s_t_i_o_n
- (_a_n_s_w_e_r) Assert the answer _a_n_s_w_e_r for _q_u_e_s_t_i_o_n, in
- case it is tested with a preprocessor conditional
- such as `##iiff #_q_u_e_s_t_i_o_n(_a_n_s_w_e_r)'. `--AA--' disables
- the standard assertions that normally describe the
- target machine.
-
- --DD_m_a_c_r_o
- Define macro _m_a_c_r_o with the string `11' as its defi-
- nition.
-
- --DD_m_a_c_r_o==_d_e_f_n
- Define macro _m_a_c_r_o as _d_e_f_n. All instances of
- `--DD' on the command line are processed before any
- `--UU' options.
-
- --UU_m_a_c_r_o
- Undefine macro _m_a_c_r_o. `--UU' options are evaluated
- after all `--DD' options, but before any `--iinncclluuddee'
- and `--iimmaaccrrooss' options.
-
-
-
- GNU Tools 1993/10/13 12
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- --ddMM Tell the preprocessor to output only a list of the
- macro definitions that are in effect at the end of
- preprocessing. Used with the `--EE' option.
-
- --ddDD Tell the preprocessor to pass all macro definitions
- into the output, in their proper sequence in the
- rest of the output.
-
- --ddNN Like `--ddDD' except that the macro arguments and con-
- tents are omitted. Only `##ddeeffiinnee _n_a_m_e' is included
- in the output.
-
- AASSSSEEMMBBLLEERR OOPPTTIIOONN
- --WWaa,,_o_p_t_i_o_n
- Pass _o_p_t_i_o_n as an option to the assembler. If _o_p_-
- _t_i_o_n contains commas, it is split into multiple op-
- tions at the commas.
-
- LLIINNKKEERR OOPPTTIIOONNSS
- These options come into play when the compiler links ob-
- ject files into an executable output file. They are mean-
- ingless if the compiler is not doing a link step.
-
- _o_b_j_e_c_t_-_f_i_l_e_-_n_a_m_e
- A file name that does not end in a special recog-
- nized suffix is considered to name an object file
- or library. (Object files are distinguished from
- libraries by the linker according to the file con-
- tents.) If GCC does a link step, these object
- files are used as input to the linker.
-
- --ll_l_i_b_r_a_r_y
- Use the library named _l_i_b_r_a_r_y when linking.
-
- The linker searches a standard list of directories
- for the library, which is actually a file named
- `lliibb_l_i_b_r_a_r_y.a'. The linker then uses this file as
- if it had been specified precisely by name.
-
- The directories searched include several standard
- system directories plus any that you specify with
- `--LL'.
-
- Normally the files found this way are library
- files--archive files whose members are object
- files. The linker handles an archive file by scan-
- ning through it for members which define symbols
- that have so far been referenced but not defined.
- However, if the linker finds an ordinary object
- file rather than a library, the object file is
- linked in the usual fashion. The only difference
- between using an `--ll' option and specifying a file
- name is that `--ll' surrounds _l_i_b_r_a_r_y with `lliibb' and
- `..aa' and searches several directories.
-
-
-
- GNU Tools 1993/10/13 13
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- --lloobbjjcc You need this special case of the --ll option in or-
- der to link an Objective C program.
-
- --nnoossttaarrttffiilleess
- Do not use the standard system startup files when
- linking. The standard libraries are used normally.
-
- --nnoossttddlliibb
- Don't use the standard system libraries and startup
- files when linking. Only the files you specify
- will be passed to the linker.
-
- --ssttaattiicc
- On systems that support dynamic linking, this pre-
- vents linking with the shared libraries. On other
- systems, this option has no effect.
-
- --sshhaarreedd
- Produce a shared object which can then be linked
- with other objects to form an executable. Only a
- few systems support this option.
-
- --ssyymmbboolliicc
- Bind references to global symbols when building a
- shared object. Warn about any unresolved refer-
- ences (unless overridden by the link editor option
- `--XXlliinnkkeerr --zz --XXlliinnkkeerr ddeeffss'). Only a few systems
- support this option.
-
- --XXlliinnkkeerr _o_p_t_i_o_n
- Pass _o_p_t_i_o_n as an option to the linker. You can
- use this to supply system-specific linker options
- which GNU CC does not know how to recognize.
-
- If you want to pass an option that takes an argu-
- ment, you must use `--XXlliinnkkeerr' twice, once for the
- option and once for the argument. For example, to
- pass `--aasssseerrtt ddeeffiinniittiioonnss', you must write `--XXlliinnkk--
- eerr --aasssseerrtt --XXlliinnkkeerr ddeeffiinniittiioonnss'. It does not work
- to write `--XXlliinnkkeerr ""--aasssseerrtt ddeeffiinniittiioonnss""', because
- this passes the entire string as a single argument,
- which is not what the linker expects.
-
- --WWll,,_o_p_t_i_o_n
- Pass _o_p_t_i_o_n as an option to the linker. If _o_p_t_i_o_n
- contains commas, it is split into multiple options
- at the commas.
-
- --uu _s_y_m_b_o_l
- Pretend the symbol _s_y_m_b_o_l is undefined, to force
- linking of library modules to define it. You can
- use `--uu' multiple times with different symbols to
- force loading of additional library modules.
-
-
-
-
- GNU Tools 1993/10/13 14
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- DDIIRREECCTTOORRYY OOPPTTIIOONNSS
- These options specify directories to search for header
- files, for libraries and for parts of the compiler:
-
- --II_d_i_r Append directory _d_i_r to the list of directories
- searched for include files.
-
- --II-- Any directories you specify with `--II' options be-
- fore the `--II--' option are searched only for the
- case of `##iinncclluuddee ""_f_i_l_e""'; they are not searched
- for `##iinncclluuddee <<_f_i_l_e>'.
-
- If additional directories are specified with `--II'
- options after the `--II--', these directories are
- searched for all `##iinncclluuddee' directives. (Ordinari-
- ly _a_l_l `--II' directories are used this way.)
-
- In addition, the `--II--' option inhibits the use of
- the current directory (where the current input file
- came from) as the first search directory for `##iinn--
- cclluuddee ""_f_i_l_e""'. There is no way to override this
- effect of `--II--'. With `--II..' you can specify
- searching the directory which was current when the
- compiler was invoked. That is not exactly the same
- as what the preprocessor does by default, but it is
- often satisfactory.
-
- `--II--' does not inhibit the use of the standard sys-
- tem directories for header files. Thus, `--II--' and
- `--nnoossttddiinncc' are independent.
-
- --LL_d_i_r Add directory _d_i_r to the list of directories to be
- searched for `--ll'.
-
- --BB_p_r_e_f_i_x
- This option specifies where to find the executa-
- bles, libraries and data files of the compiler it-
- self.
-
- The compiler driver program runs one or more of the
- subprograms `ccpppp', `cccc11' (or, for C++, `cccc11pplluuss'),
- `aass' and `lldd'. It tries _p_r_e_f_i_x as a prefix for
- each program it tries to run, both with and without
- `_m_a_c_h_i_n_e//_v_e_r_s_i_o_n//'.
-
- For each subprogram to be run, the compiler driver
- first tries the `--BB' prefix, if any. If that name
- is not found, or if `--BB' was not specified, the
- driver tries two standard prefixes, which are
- `//uussrr//lliibb//ggcccc//' and `//uussrr//llooccaall//lliibb//ggcccc--lliibb//'. If
- neither of those results in a file name that is
- found, the compiler driver searches for the unmodi-
- fied program name, using the directories specified
- in your `PPAATTHH' environment variable.
-
-
-
- GNU Tools 1993/10/13 15
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- The run-time support file `lliibbggcccc..aa' is also
- searched for using the `--BB' prefix, if needed. If
- it is not found there, the two standard prefixes
- above are tried, and that is all. The file is left
- out of the link if it is not found by those means.
- Most of the time, on most machines, `lliibbggcccc..aa' is
- not actually necessary.
-
- You can get a similar result from the environment
- variable GGCCCC__EEXXEECC__PPRREEFFIIXX; if it is defined, its
- value is used as a prefix in the same way. If both
- the `--BB' option and the GGCCCC__EEXXEECC__PPRREEFFIIXX variable
- are present, the `--BB' option is used first and the
- environment variable value second.
-
- WWAARRNNIINNGG OOPPTTIIOONNSS
- Warnings are diagnostic messages that report constructions
- which are not inherently erroneous but which are risky or
- suggest there may have been an error.
-
- These options control the amount and kinds of warnings
- produced by GNU CC:
-
- --ffssyynnttaaxx--oonnllyy
- Check the code for syntax errors, but don't emit
- any output.
-
- --ww Inhibit all warning messages.
-
- --WWnnoo--iimmppoorrtt
- Inhibit warning messages about the use of ##iimmppoorrtt.
-
- --ppeeddaannttiicc
- Issue all the warnings demanded by strict ANSI
- standard C; reject all programs that use forbidden
- extensions.
-
- Valid ANSI standard C programs should compile prop-
- erly with or without this option (though a rare few
- will require `--aannssii'). However, without this op-
- tion, certain GNU extensions and traditional C fea-
- tures are supported as well. With this option,
- they are rejected. There is no reason to _u_s_e this
- option; it exists only to satisfy pedants.
-
- `--ppeeddaannttiicc' does not cause warning messages for use
- of the alternate keywords whose names begin and end
- with `____'. Pedantic warnings are also disabled in
- the expression that follows ____eexxtteennssiioonn____. Howev-
- er, only system header files should use these es-
- cape routes; application programs should avoid
- them.
-
-
-
-
-
- GNU Tools 1993/10/13 16
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- --ppeeddaannttiicc--eerrrroorrss
- Like `--ppeeddaannttiicc', except that errors are produced
- rather than warnings.
-
- --WW Print extra warning messages for these events:
-
- +o A nonvolatile automatic variable might be changed
- by a call to lloonnggjjmmpp. These warnings are possible
- only in optimizing compilation.
-
- The compiler sees only the calls to sseettjjmmpp. It
- cannot know where lloonnggjjmmpp will be called; in fact,
- a signal handler could call it at any point in the
- code. As a result, you may get a warning even when
- there is in fact no problem because lloonnggjjmmpp cannot
- in fact be called at the place which would cause a
- problem.
-
- +o A function can return either with or without a val-
- ue. (Falling off the end of the function body is
- considered returning without a value.) For exam-
- ple, this function would evoke such a warning:
-
- foo (a)
- {
- if (a > 0)
- return a;
- }
-
- Spurious warnings can occur because GNU CC does not
- realize that certain functions (including aabboorrtt and
- lloonnggjjmmpp) will never return.
-
- +o An expression-statement or the left-hand side of a
- comma expression contains no side effects. To sup-
- press the warning, cast the unused expression to
- void. For example, an expression such as `xx[[ii,,jj]]'
- will cause a warning, but `xx[[((vvooiidd))ii,,jj]]' will not.
-
- +o An unsigned value is compared against zero with `>>'
- or `<<=='.
-
-
- --WWiimmpplliicciitt
- Warn whenever a function or parameter is implicitly
- declared.
-
- --WWrreettuurrnn--ttyyppee
- Warn whenever a function is defined with a return-
- type that defaults to iinntt. Also warn about any rree--
- ttuurrnn statement with no return-value in a function
- whose return-type is not vvooiidd.
-
-
-
-
-
- GNU Tools 1993/10/13 17
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- --WWuunnuusseedd
- Warn whenever a local variable is unused aside from
- its declaration, whenever a function is declared
- static but never defined, and whenever a statement
- computes a result that is explicitly not used.
-
- --WWsswwiittcchh
- Warn whenever a sswwiittcchh statement has an index of
- enumeral type and lacks a ccaassee for one or more of
- the named codes of that enumeration. (The presence
- of a ddeeffaauulltt label prevents this warning.) ccaassee
- labels outside the enumeration range also provoke
- warnings when this option is used.
-
- --WWccoommmmeenntt
- Warn whenever a comment-start sequence `//**' appears
- in a comment.
-
- --WWttrriiggrraapphhss
- Warn if any trigraphs are encountered (assuming
- they are enabled).
-
- --WWffoorrmmaatt
- Check calls to pprriinnttff and ssccaannff, etc., to make sure
- that the arguments supplied have types appropriate
- to the format string specified.
-
- --WWcchhaarr--ssuubbssccrriippttss
- Warn if an array subscript has type cchhaarr. This is
- a common cause of error, as programmers often for-
- get that this type is signed on some machines.
-
- --WWuunniinniittiiaalliizzeedd
- An automatic variable is used without first being
- initialized.
-
- These warnings are possible only in optimizing com-
- pilation, because they require data flow informa-
- tion that is computed only when optimizing. If you
- don't specify `--OO', you simply won't get these
- warnings.
-
- These warnings occur only for variables that are
- candidates for register allocation. Therefore,
- they do not occur for a variable that is declared
- vvoollaattiillee, or whose address is taken, or whose size
- is other than 1, 2, 4 or 8 bytes. Also, they do
- not occur for structures, unions or arrays, even
- when they are in registers.
-
- Note that there may be no warning about a variable
- that is used only to compute a value that itself is
- never used, because such computations may be delet-
- ed by data flow analysis before the warnings are
-
-
-
- GNU Tools 1993/10/13 18
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- printed.
-
- These warnings are made optional because GNU CC is
- not smart enough to see all the reasons why the
- code might be correct despite appearing to have an
- error. Here is one example of how this can happen:
-
- {
- int x;
- switch (y)
- {
- case 1: x = 1;
- break;
- case 2: x = 4;
- break;
- case 3: x = 5;
- }
- foo (x);
- }
-
- If the value of yy is always 1, 2 or 3, then xx is
- always initialized, but GNU CC doesn't know this.
- Here is another common case:
-
- {
- int save_y;
- if (change_y) save_y = y, y = new_y;
- ...
- if (change_y) y = save_y;
- }
-
- This has no bug because ssaavvee__yy is used only if it
- is set.
-
- Some spurious warnings can be avoided if you de-
- clare as vvoollaattiillee all the functions you use that
- never return.
-
- --WWppaarreenntthheesseess
- Warn if parentheses are omitted in certain con-
- texts.
-
- --WWtteemmppllaattee--ddeebbuuggggiinngg
- When using templates in a C++ program, warn if de-
- bugging is not yet fully available (C++ only).
-
- --WWaallll All of the above `--WW' options combined. These are
- all the options which pertain to usage that we rec-
- ommend avoiding and that we believe is easy to
- avoid, even in conjunction with macros.
-
- The remaining `--WW......' options are not implied by `--WWaallll'
- because they warn about constructions that we consider
- reasonable to use, on occasion, in clean programs.
-
-
-
- GNU Tools 1993/10/13 19
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- --WWttrraaddiittiioonnaall
- Warn about certain constructs that behave differ-
- ently in traditional and ANSI C.
-
- +o Macro arguments occurring within string constants
- in the macro body. These would substitute the ar-
- gument in traditional C, but are part of the con-
- stant in ANSI C.
-
- +o A function declared external in one block and then
- used after the end of the block.
-
- +o A sswwiittcchh statement has an operand of type lloonngg.
-
-
- --WWsshhaaddooww
- Warn whenever a local variable shadows another lo-
- cal variable.
-
- --WWiidd--ccllaasshh--_l_e_n
- Warn whenever two distinct identifiers match in the
- first _l_e_n characters. This may help you prepare a
- program that will compile with certain obsolete,
- brain-damaged compilers.
-
- --WWppooiinntteerr--aarriitthh
- Warn about anything that depends on the "size of" a
- function type or of vvooiidd. GNU C assigns these
- types a size of 1, for convenience in calculations
- with vvooiidd ** pointers and pointers to functions.
-
- --WWccaasstt--qquuaall
- Warn whenever a pointer is cast so as to remove a
- type qualifier from the target type. For example,
- warn if a ccoonnsstt cchhaarr ** is cast to an ordinary cchhaarr
- **.
-
- --WWccaasstt--aalliiggnn
- Warn whenever a pointer is cast such that the re-
- quired alignment of the target is increased. For
- example, warn if a cchhaarr ** is cast to an iinntt ** on
- machines where integers can only be accessed at
- two- or four-byte boundaries.
-
- --WWwwrriittee--ssttrriinnggss
- Give string constants the type ccoonnsstt cchhaarr[[_l_e_n_g_t_h]]
- so that copying the address of one into a non-ccoonnsstt
- cchhaarr ** pointer will get a warning. These warnings
- will help you find at compile time code that can
- try to write into a string constant, but only if
- you have been very careful about using ccoonnsstt in
- declarations and prototypes. Otherwise, it will
- just be a nuisance; this is why we did not make
- `--WWaallll' request these warnings.
-
-
-
- GNU Tools 1993/10/13 20
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- --WWccoonnvveerrssiioonn
- Warn if a prototype causes a type conversion that
- is different from what would happen to the same ar-
- gument in the absence of a prototype. This in-
- cludes conversions of fixed point to floating and
- vice versa, and conversions changing the width or
- signedness of a fixed point argument except when
- the same as the default promotion.
-
- --WWaaggggrreeggaattee--rreettuurrnn
- Warn if any functions that return structures or
- unions are defined or called. (In languages where
- you can return an array, this also elicits a warn-
- ing.)
-
- --WWssttrriicctt--pprroottoottyyppeess
- Warn if a function is declared or defined without
- specifying the argument types. (An old-style func-
- tion definition is permitted without a warning if
- preceded by a declaration which specifies the argu-
- ment types.)
-
- --WWmmiissssiinngg--pprroottoottyyppeess
- Warn if a global function is defined without a pre-
- vious prototype declaration. This warning is is-
- sued even if the definition itself provides a pro-
- totype. The aim is to detect global functions that
- fail to be declared in header files.
-
- --WWmmiissssiinngg--ddeeccllaarraattiioonnss
- Warn if a global function is defined without a pre-
- vious declaration. Do so even if the definition
- itself provides a prototype. Use this option to
- detect global functions that are not declared in
- header files.
-
- --WWrreedduunnddaanntt--ddeeccllss
- Warn if anything is declared more than once in the
- same scope, even in cases where multiple declara-
- tion is valid and changes nothing.
-
- --WWnneesstteedd--eexxtteerrnnss
- Warn if an eexxtteerrnn declaration is encountered within
- an function.
-
- --WWeennuumm--ccllaasshh
- Warn about conversion between different enumeration
- types (C++ only).
-
- --WWoovveerrllooaaddeedd--vviirrttuuaall
- (C++ only.) In a derived class, the definitions of
- virtual functions must match the type signature of
- a virtual function declared in the base class. Use
- this option to request warnings when a derived
-
-
-
- GNU Tools 1993/10/13 21
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- class declares a function that may be an erroneous
- attempt to define a virtual function: that is, warn
- when a function with the same name as a virtual
- function in the base class, but with a type signa-
- ture that doesn't match any virtual functions from
- the base class.
-
- --WWiinnlliinnee
- Warn if a function can not be inlined, and either
- it was declared as inline, or else the --ffiinn--
- lliinnee--ffuunnccttiioonnss option was given.
-
- --WWeerrrroorr
- Treat warnings as errors; abort compilation after
- any warning.
-
- DDEEBBUUGGGGIINNGG OOPPTTIIOONNSS
- GNU CC has various special options that are used for de-
- bugging either your program or GCC:
-
- --gg Produce debugging information in the operating sys-
- tem's native format (stabs, COFF, XCOFF, or DWARF).
- GDB can work with this debugging information.
-
- On most systems that use stabs format, `--gg' enables
- use of extra debugging information that only GDB
- can use; this extra information makes debugging
- work better in GDB but will probably make other de-
- buggers crash or refuse to read the program. If
- you want to control for certain whether to generate
- the extra information, use `--ggssttaabbss++', `--ggssttaabbss',
- `--ggxxccooffff++', `--ggxxccooffff', `--ggddwwaarrff++', or `--ggddwwaarrff'
- (see below).
-
- Unlike most other C compilers, GNU CC allows you to
- use `--gg' with `--OO'. The shortcuts taken by opti-
- mized code may occasionally produce surprising re-
- sults: some variables you declared may not exist at
- all; flow of control may briefly move where you did
- not expect it; some statements may not be executed
- because they compute constant results or their val-
- ues were already at hand; some statements may exe-
- cute in different places because they were moved
- out of loops.
-
- Nevertheless it proves possible to debug optimized
- output. This makes it reasonable to use the opti-
- mizer for programs that might have bugs.
-
- The following options are useful when GNU CC is generated
- with the capability for more than one debugging format.
-
- --ggggddbb Produce debugging information in the native format
- (if that is supported), including GDB extensions if
-
-
-
- GNU Tools 1993/10/13 22
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- at all possible.
-
- --ggssttaabbss
- Produce debugging information in stabs format (if
- that is supported), without GDB extensions. This
- is the format used by DBX on most BSD systems.
-
- --ggssttaabbss++
- Produce debugging information in stabs format (if
- that is supported), using GNU extensions understood
- only by the GNU debugger (GDB). The use of these
- extensions is likely to make other debuggers crash
- or refuse to read the program.
-
- --ggccooffff Produce debugging information in COFF format (if
- that is supported). This is the format used by SDB
- on most System V systems prior to System V Release
- 4.
-
- --ggxxccooffff
- Produce debugging information in XCOFF format (if
- that is supported). This is the format used by the
- DBX debugger on IBM RS/6000 systems.
-
- --ggxxccooffff++
- Produce debugging information in XCOFF format (if
- that is supported), using GNU extensions understood
- only by the GNU debugger (GDB). The use of these
- extensions is likely to make other debuggers crash
- or refuse to read the program.
-
- --ggddwwaarrff
- Produce debugging information in DWARF format (if
- that is supported). This is the format used by SDB
- on most System V Release 4 systems.
-
- --ggddwwaarrff++
- Produce debugging information in DWARF format (if
- that is supported), using GNU extensions understood
- only by the GNU debugger (GDB). The use of these
- extensions is likely to make other debuggers crash
- or refuse to read the program.
-
- --gg_l_e_v_e_l
- --ggggddbb_l_e_v_e_l
- --ggssttaabbss_l_e_v_e_l
- --ggccooffff_l_e_v_e_l --ggxxccooffff_l_e_v_e_l
-
- --ggddwwaarrff_l_e_v_e_l
- Request debugging information and also use _l_e_v_e_l to
- specify how much information. The default level is
- 2.
-
- Level 1 produces minimal information, enough for
-
-
-
- GNU Tools 1993/10/13 23
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- making backtraces in parts of the program that you
- don't plan to debug. This includes descriptions of
- functions and external variables, but no informa-
- tion about local variables and no line numbers.
-
- Level 3 includes extra information, such as all the
- macro definitions present in the program. Some de-
- buggers support macro expansion when you use `--gg33'.
-
- --pp Generate extra code to write profile information
- suitable for the analysis program pprrooff.
-
- --ppgg Generate extra code to write profile information
- suitable for the analysis program ggpprrooff.
-
- --aa Generate extra code to write profile information
- for basic blocks, which will record the number of
- times each basic block is executed. This data
- could be analyzed by a program like ttccoovv. Note,
- however, that the format of the data is not what
- ttccoovv expects. Eventually GNU ggpprrooff should be ex-
- tended to process this data.
-
- --dd_l_e_t_t_e_r_s
- Says to make debugging dumps during compilation at
- times specified by _l_e_t_t_e_r_s. This is used for de-
- bugging the compiler. The file names for most of
- the dumps are made by appending a word to the
- source file name (e.g. `ffoooo..cc..rrttll' or
- `ffoooo..cc..jjuummpp').
-
- --ddMM Dump all macro definitions, at the end of prepro-
- cessing, and write no output.
-
- --ddNN Dump all macro names, at the end of preprocessing.
-
- --ddDD Dump all macro definitions, at the end of prepro-
- cessing, in addition to normal output.
-
- --ddyy Dump debugging information during parsing, to stan-
- dard error.
-
- --ddrr Dump after RTL generation, to `_f_i_l_e..rrttll'.
-
- --ddxx Just generate RTL for a function instead of compil-
- ing it. Usually used with `rr'.
-
- --ddjj Dump after first jump optimization, to `_f_i_l_e..jjuummpp'.
-
- --ddss Dump after CSE (including the jump optimization
- that sometimes follows CSE), to `_f_i_l_e..ccssee'.
-
- --ddLL Dump after loop optimization, to `_f_i_l_e..lloooopp'.
-
-
-
-
- GNU Tools 1993/10/13 24
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- --ddtt Dump after the second CSE pass (including the jump
- optimization that sometimes follows CSE), to
- `_f_i_l_e..ccssee22'.
-
- --ddff Dump after flow analysis, to `_f_i_l_e..ffllooww'.
-
- --ddcc Dump after instruction combination, to
- `_f_i_l_e..ccoommbbiinnee'.
-
- --ddSS Dump after the first instruction scheduling pass,
- to `_f_i_l_e..sscchheedd'.
-
- --ddll Dump after local register allocation, to
- `_f_i_l_e..llrreegg'.
-
- --ddgg Dump after global register allocation, to
- `_f_i_l_e..ggrreegg'.
-
- --ddRR Dump after the second instruction scheduling pass,
- to `_f_i_l_e..sscchheedd22'.
-
- --ddJJ Dump after last jump optimization, to `_f_i_l_e..jjuummpp22'.
-
- --dddd Dump after delayed branch scheduling, to
- `_f_i_l_e..ddbbrr'.
-
- --ddkk Dump after conversion from registers to stack, to
- `_f_i_l_e..ssttaacckk'.
-
- --ddaa Produce all the dumps listed above.
-
- --ddmm Print statistics on memory usage, at the end of the
- run, to standard error.
-
- --ddpp Annotate the assembler output with a comment indi-
- cating which pattern and alternative was used.
-
- --ffpprreetteenndd--ffllooaatt
- When running a cross-compiler, pretend that the
- target machine uses the same floating point format
- as the host machine. This causes incorrect output
- of the actual floating constants, but the actual
- instruction sequence will probably be the same as
- GNU CC would make when running on the target ma-
- chine.
-
- --ssaavvee--tteemmppss
- Store the usual "temporary" intermediate files per-
- manently; place them in the current directory and
- name them based on the source file. Thus, compil-
- ing `ffoooo..cc' with `--cc --ssaavvee--tteemmppss' would produce
- files `ffoooo..ccpppp' and `ffoooo..ss', as well as `ffoooo..oo'.
-
-
-
-
-
- GNU Tools 1993/10/13 25
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- --pprriinntt--ffiillee--nnaammee==_l_i_b_r_a_r_y
- Print the full absolute name of the library file
- _l_i_b_r_a_r_y that would be used when linking--and do
- not do anything else. With this option, GNU CC
- does not compile or link anything; it just prints
- the file name.
-
- --pprriinntt--lliibbggcccc--ffiillee--nnaammee
- Same as `--pprriinntt--ffiillee--nnaammee==lliibbggcccc..aa'.
-
- --pprriinntt--pprroogg--nnaammee==_p_r_o_g_r_a_m
- Like `--pprriinntt--ffiillee--nnaammee', but searches for a program
- such as `cpp'.
-
- OOPPTTIIMMIIZZAATTIIOONN OOPPTTIIOONNSS
- These options control various sorts of optimizations:
-
- --OO
-
- --OO11 Optimize. Optimizing compilation takes somewhat
- more time, and a lot more memory for a large func-
- tion.
-
- Without `--OO', the compiler's goal is to reduce the
- cost of compilation and to make debugging produce
- the expected results. Statements are independent:
- if you stop the program with a breakpoint between
- statements, you can then assign a new value to any
- variable or change the program counter to any other
- statement in the function and get exactly the re-
- sults you would expect from the source code.
-
- Without `--OO', only variables declared rreeggiisstteerr are
- allocated in registers. The resulting compiled
- code is a little worse than produced by PCC without
- `--OO'.
-
- With `--OO', the compiler tries to reduce code size
- and execution time.
-
- When you specify `--OO', the two options
- `--fftthhrreeaadd--jjuummppss' and `--ffddeeffeerr--ppoopp' are turned on.
- On machines that have delay slots, the
- `--ffddeellaayyeedd--bbrraanncchh' option is turned on. For those
- machines that can support debugging even without a
- frame pointer, the `--ffoommiitt--ffrraammee--ppooiinntteerr' option is
- turned on. On some machines other flags may also
- be turned on.
-
- --OO22 Optimize even more. Nearly all supported optimiza-
- tions that do not involve a space-speed tradeoff
- are performed. Loop unrolling and function inlin-
- ing are not done, for example. As compared to --OO,
- this option increases both compilation time and the
-
-
-
- GNU Tools 1993/10/13 26
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- performance of the generated code.
-
- --OO33 Optimize yet more. This turns on everything --OO22
- does, along with also turning on --ffiinn--
- lliinnee--ffuunnccttiioonnss..
-
- --OO00 Do not optimize.
-
- If you use multiple --OO options, with or without
- level numbers, the last such option is the one that
- is effective.
-
- Options of the form `--ff_f_l_a_g' specify machine-independent
- flags. Most flags have both positive and negative forms;
- the negative form of `--ffffoooo' would be `--ffnnoo--ffoooo'. The
- following list shows only one form--the one which is not
- the default. You can figure out the other form by either
- removing `nnoo--' or adding it.
-
- --ffffllooaatt--ssttoorree
- Do not store floating point variables in registers.
- This prevents undesirable excess precision on ma-
- chines such as the 68000 where the floating regis-
- ters (of the 68881) keep more precision than a ddoouu--
- bbllee is supposed to have.
-
- For most programs, the excess precision does only
- good, but a few programs rely on the precise defi-
- nition of IEEE floating point. Use `--ffffllooaatt--ssttoorree'
- for such programs.
-
- --ffmmeemmooiizzee--llooookkuuppss
-
- --ffssaavvee--mmeemmooiizzeedd
- Use heuristics to compile faster (C++ only). 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
-
- cout << "This " << p << " has " << n << "
-
-
-
- GNU Tools 1993/10/13 27
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- legs.\n";
-
- makes six passes through all three steps. By using
- a software cache, a "hit" significantly reduces
- this cost. Unfortunately, using the cache intro-
- duces another layer of mechanisms which must be im-
- plemented, and so incurs its own overhead.
- `--ffmmeemmooiizzee--llooookkuuppss' enables the software cache.
-
- Because access privileges (visibility) to members
- and member functions may differ from one function
- context to the next, gg++++ may need to flush the
- cache. With the `--ffmmeemmooiizzee--llooookkuuppss' flag, the
- cache is flushed after every function that is com-
- piled. The `-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 privi-
- leges as every other, and the cache need not be
- flushed.
-
- --ffnnoo--ddeeffaauulltt--iinnlliinnee
- Don't make member functions inline by default mere-
- ly because they are defined inside the class scope
- (C++ only).
-
- --ffnnoo--ddeeffeerr--ppoopp
- Always pop the arguments to each function call as
- soon as that function returns. For machines which
- must pop arguments after a function call, the com-
- piler normally lets arguments accumulate on the
- stack for several function calls and pops them all
- at once.
-
- --ffffoorrccee--mmeemm
- Force memory operands to be copied into registers
- before doing arithmetic on them. This may produce
- better code by making all memory references poten-
- tial common subexpressions. When they are not com-
- mon subexpressions, instruction combination should
- eliminate the separate register-load. I am inter-
- ested in hearing about the difference this makes.
-
- --ffffoorrccee--aaddddrr
- Force memory address constants to be copied into
- registers before doing arithmetic on them. This
- may produce better code just as `--ffffoorrccee--mmeemm' may.
- I am interested in hearing about the difference
- this makes.
-
-
-
- GNU Tools 1993/10/13 28
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- --ffoommiitt--ffrraammee--ppooiinntteerr
- Don't keep the frame pointer in a register for
- functions that don't need one. This avoids the in-
- structions to save, set up and restore frame point-
- ers; it also makes an extra register available in
- many functions. _I_t _a_l_s_o _m_a_k_e_s _d_e_b_u_g_g_i_n_g _i_m_p_o_s_s_i_b_l_e
- _o_n _m_o_s_t _m_a_c_h_i_n_e_s.
-
- On some machines, such as the Vax, this flag has no
- effect, because the standard calling sequence auto-
- matically handles the frame pointer and nothing is
- saved by pretending it doesn't exist. The machine-
- description macro FFRRAAMMEE__PPOOIINNTTEERR__RREEQQUUIIRREEDD controls
- whether a target machine supports this flag.
-
- --ffiinnlliinnee--ffuunnccttiioonnss
- Integrate all simple functions into their callers.
- The compiler heuristically decides which functions
- are simple enough to be worth integrating in this
- way.
-
- If all calls to a given function are integrated,
- and the function is declared ssttaattiicc, then GCC nor-
- mally does not output the function as assembler
- code in its own right.
-
- --ffccaalllleerr--ssaavveess
- Enable values to be allocated in registers that
- will be clobbered by function calls, by emitting
- extra instructions to save and restore the regis-
- ters around such calls. Such allocation is done
- only when it seems to result in better code than
- would otherwise be produced.
-
- This option is enabled by default on certain ma-
- chines, usually those which have no call-preserved
- registers to use instead.
-
- --ffkkeeeepp--iinnlliinnee--ffuunnccttiioonnss
- Even if all calls to a given function are integrat-
- ed, and the function is declared ssttaattiicc, neverthe-
- less output a separate run-time callable version of
- the function.
-
- --ffnnoo--ffuunnccttiioonn--ccssee
- Do not put function addresses in registers; make
- each instruction that calls a constant function
- contain the function's address explicitly.
-
- This option results in less efficient code, but
- some strange hacks that alter the assembler output
- may be confused by the optimizations performed when
- this option is not used.
-
-
-
-
- GNU Tools 1993/10/13 29
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- --ffnnoo--ppeeeepphhoollee
- Disable any machine-specific peephole optimiza-
- tions.
-
- --ffffaasstt--mmaatthh
- This option allows GCC to violate some ANSI or IEEE
- rules/specifications in the interest of optimizing
- code for speed. For example, it allows the compil-
- er to assume arguments to the ssqqrrtt function are
- non-negative numbers.
-
- This option should never be turned on by any `--OO'
- option since it can result in incorrect output for
- programs which depend on an exact implementation of
- IEEE or ANSI rules/specifications for math func-
- tions.
-
- The following options control specific optimizations. The
- `--OO22' option turns on all of these optimizations except
- `--ffuunnrroollll--llooooppss' and `--ffuunnrroollll--aallll--llooooppss'.
-
- The `--OO' option usually turns on the `--fftthhrreeaadd--jjuummppss' and
- `--ffddeellaayyeedd--bbrraanncchh' options, but specific machines may
- change the default optimizations.
-
- You can use the following flags in the rare cases when
- "fine-tuning" of optimizations to be performed is desired.
-
- --ffssttrreennggtthh--rreedduuccee
- Perform the optimizations of loop strength reduc-
- tion and elimination of iteration variables.
-
- --fftthhrreeaadd--jjuummppss
- Perform optimizations where we check to see if a
- jump branches to a location where another compari-
- son subsumed by the first is found. If so, the
- first branch is redirected to either the destina-
- tion of the second branch or a point immediately
- following it, depending on whether the condition is
- known to be true or false.
-
- --ffuunnrroollll--llooooppss
- Perform the optimization of loop unrolling. This
- is only done for loops whose number of iterations
- can be determined at compile time or run time.
-
- --ffuunnrroollll--aallll--llooooppss
- Perform the optimization of loop unrolling. This
- is done for all loops. This usually makes programs
- run more slowly.
-
- --ffccssee--ffoollllooww--jjuummppss
- In common subexpression elimination, scan through
- jump instructions when the target of the jump is
-
-
-
- GNU Tools 1993/10/13 30
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- not reached by any other path. For example, when
- CSE encounters an iiff statement with an eellssee clause,
- CSE will follow the jump when the condition tested
- is false.
-
- --ffccssee--sskkiipp--bblloocckkss
- This is similar to `--ffccssee--ffoollllooww--jjuummppss', but causes
- CSE to follow jumps which conditionally skip over
- blocks. When CSE encounters a simple iiff statement
- with no else clause, `--ffccssee--sskkiipp--bblloocckkss' causes CSE
- to follow the jump around the body of the iiff.
-
- --ffrreerruunn--ccssee--aafftteerr--lloooopp
- Re-run common subexpression elimination after loop
- optimizations has been performed.
-
- --ffeelliiddee--ccoonnssttrruuccttoorrss
- Elide constructors when this seems plausible (C++
- only). With this flag, GNU C++ initializes yy di-
- rectly from the call to ffoooo without going through a
- temporary in the following code:
-
- A foo (); A y = foo ();
-
- Without this option, GNU C++ first initializes yy by
- calling the appropriate constructor for type AA;
- then assigns the result of ffoooo to a temporary; and,
- finally, replaces the initial value of `yy' with the
- temporary.
-
- The default behavior (`--ffnnoo--eelliiddee--ccoonnssttrruuccttoorrss') is
- specified by the draft ANSI C++ standard. If your
- program's constructors have side effects, using
- `--ffeelliiddee--ccoonnssttrruuccttoorrss' can make your program act
- differently, since some constructor calls may be
- omitted.
-
- --ffeexxppeennssiivvee--ooppttiimmiizzaattiioonnss
- Perform a number of minor optimizations that are
- relatively expensive.
-
- --ffddeellaayyeedd--bbrraanncchh
- If supported for the target machine, attempt to re-
- order instructions to exploit instruction slots
- available after delayed branch instructions.
-
- --ffsscchheedduullee--iinnssnnss
- If supported for the target machine, attempt to re-
- order instructions to eliminate execution stalls
- due to required data being unavailable. This helps
- machines that have slow floating point or memory
- load instructions by allowing other instructions to
- be issued until the result of the load or floating
- point instruction is required.
-
-
-
- GNU Tools 1993/10/13 31
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- --ffsscchheedduullee--iinnssnnss22
- Similar to `--ffsscchheedduullee--iinnssnnss', but requests an ad-
- ditional pass of instruction scheduling after reg-
- ister allocation has been done. This is especially
- useful on machines with a relatively small number
- of registers and where memory load instructions
- take more than one cycle.
-
- TTAARRGGEETT OOPPTTIIOONNSS
- By default, GNU CC compiles code for the same type of ma-
- chine that you are using. However, it can also be in-
- stalled as a cross-compiler, to compile for some other
- type of machine. In fact, several different configura-
- tions of GNU CC, for different target machines, can be in-
- stalled side by side. Then you specify which one to use
- with the `--bb' option.
-
- In addition, older and newer versions of GNU CC can be in-
- stalled side by side. One of them (probably the newest)
- will be the default, but you may sometimes wish to use an-
- other.
-
- --bb _m_a_c_h_i_n_e
- The argument _m_a_c_h_i_n_e specifies the target machine
- for compilation. This is useful when you have in-
- stalled GNU CC as a cross-compiler.
-
- The value to use for _m_a_c_h_i_n_e is the same as was
- specified as the machine type when configuring GNU
- CC as a cross-compiler. For example, if a cross-
- compiler was configured with `ccoonnffiigguurree i386v',
- meaning to compile for an 80386 running System V,
- then you would specify `--bb ii338866vv' to run that cross
- compiler.
-
- When you do not specify `--bb', it normally means to
- compile for the same type of machine that you are
- using.
-
- --VV _v_e_r_s_i_o_n
- The argument _v_e_r_s_i_o_n specifies which version of GNU
- CC to run. This is useful when multiple versions
- are installed. For example, _v_e_r_s_i_o_n might be
- `22..00', meaning to run GNU CC version 2.0.
-
- The default version, when you do not specify `--VV',
- is controlled by the way GNU CC is installed. Nor-
- mally, it will be a version that is recommended for
- general use.
-
- MMAACCHHIINNEE DDEEPPEENNDDEENNTT OOPPTTIIOONNSS
- Each of the target machine types can have its own special
- options, starting with `--mm', to choose among various hard-
- ware models or configurations--for example, 68010 vs
-
-
-
- GNU Tools 1993/10/13 32
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- 68020, floating coprocessor or none. A single installed
- version of the compiler can compile for any model or con-
- figuration, according to the options specified.
-
- Some configurations of the compiler also support addition-
- al special options, usually for command-line compatibility
- with other compilers on the same platform.
-
- These are the `--mm' options defined for the 68000 series:
-
- --mm6688000000
-
- --mmcc6688000000
- Generate output for a 68000. This is the default
- when the compiler is configured for 68000-based
- systems.
-
- --mm6688002200
-
- --mmcc6688002200
- Generate output for a 68020 (rather than a 68000).
- This is the default when the compiler is configured
- for 68020-based systems.
-
- --mm6688888811
- Generate output containing 68881 instructions for
- floating point. This is the default for most
- 68020-based systems unless --nnffpp was specified when
- the compiler was configured.
-
- --mm6688003300
- Generate output for a 68030. This is the default
- when the compiler is configured for 68030-based
- systems.
-
- --mm6688004400
- Generate output for a 68040. This is the default
- when the compiler is configured for 68040-based
- systems.
-
- --mm6688002200--4400
- 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.
-
- --mmffppaa Generate output containing Sun FPA instructions for
- floating point.
-
- --mmssoofftt--ffllooaatt
- Generate output containing library calls for float-
- ing point. _W_A_R_N_I_N_G_: 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
-
-
-
- GNU Tools 1993/10/13 33
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- be done directly in cross-compilation. You must
- make your own arrangements to provide suitable li-
- brary functions for cross-compilation.
-
- --mmsshhoorrtt
- Consider type iinntt to be 16 bits wide, like sshhoorrtt
- iinntt.
-
- --mmnnoobbiittffiieelldd
- Do not use the bit-field instructions. `--mm6688000000'
- implies `--mmnnoobbiittffiieelldd'.
-
- --mmbbiittffiieelldd
- Do use the bit-field instructions. `--mm6688002200' im-
- plies `--mmbbiittffiieelldd'. This is the default if you use
- the unmodified sources.
-
- --mmrrttdd Use a different function-calling convention, in
- which functions that take a fixed number of argu-
- ments return with the rrttdd 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 pprriinnttff); 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 rrttdd instruction is supported by the 68010 and
- 68020 processors, but not by the 68000.
-
- These `--mm' options are defined for the Vax:
-
- --mmuunniixx Do not output certain jump instructions (aaoobblleeqq and
- so on) that the Unix assembler for the Vax cannot
- handle across long ranges.
-
- --mmggnnuu Do output those jump instructions, on the assump-
- tion that you will assemble with the GNU assembler.
-
- --mmgg Output code for g-format floating point numbers in-
- stead of d-format.
-
- These `--mm' switches are supported on the SPARC:
-
-
-
- GNU Tools 1993/10/13 34
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- --mmffppuu
-
- --mmhhaarrdd--ffllooaatt
- Generate output containing floating point instruc-
- tions. This is the default.
-
- --mmnnoo--ffppuu
-
- --mmssoofftt--ffllooaatt
- Generate output containing library calls for float-
- ing point. _W_a_r_n_i_n_g_: there is no GNU floating-point
- library for SPARC. Normally the facilities of the
- machine's usual C compiler are used, but this can-
- not be done directly in cross-compilation. You
- must make your own arrangements to provide suitable
- library functions for cross-compilation.
-
- --mmssoofftt--ffllooaatt changes the calling convention in the
- output file; therefore, it is only useful if you
- compile _a_l_l of a program with this option.
-
- --mmnnoo--eeppiilloogguuee
-
- --mmeeppiilloogguuee
- With --mmeeppiilloogguuee (the default), the compiler always
- emits code for function exit at the end of each
- function. Any function exit in the middle of the
- function (such as a return statement in C) will
- generate a jump to the exit code at the end of the
- function.
-
- With --mmnnoo--eeppiilloogguuee, the compiler tries to emit exit
- code inline at every function exit.
-
- --mmnnoo--vv88
-
- --mmvv88
-
- --mmssppaarrcclliittee
- These three options select variations on the SPARC
- architecture.
-
- By default (unless specifically configured for the
- Fujitsu SPARClite), GCC generates code for the v7
- variant of the SPARC architecture.
-
- --mmvv88 will give you SPARC v8 code. The only differ-
- ence from v7 code is that the compiler emits the
- integer multiply and integer divide instructions
- which exist in SPARC v8 but not in SPARC v7.
-
- --mmssppaarrcclliittee will give you SPARClite code. This
- adds the integer multiply, integer divide step and
- scan (ffs) instructions which exist in SPARClite
-
-
-
- GNU Tools 1993/10/13 35
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- but not in SPARC v7.
-
- --mmccyypprreessss
-
- --mmssuuppeerrssppaarrcc
- These two options select the processor for which
- the code is optimised.
-
- With --mmccyypprreessss (the default), the compiler optimis-
- es code for the Cypress CY7C602 chip, as used in
- the SparcStation/SparcServer 3xx series. This is
- also appropriate for the older SparcStation 1, 2,
- IPX etc.
-
- With --mmssuuppeerrssppaarrcc the compiler optimises code for
- the SuperSparc cpu, as used in the SparcStation 10,
- 1000 and 2000 series. This flag also enables use of
- the full SPARC v8 instruction set.
-
- These `--mm' options are defined for the Convex:
-
- --mmcc11 Generate output for a C1. This is the default when
- the compiler is configured for a C1.
-
- --mmcc22 Generate output for a C2. This is the default when
- the compiler is configured for a C2.
-
- --mmaarrggccoouunntt
- Generate code which puts an argument count in the
- word preceding each argument list. Some non-
- portable Convex and Vax programs need this word.
- (Debuggers don't, except for functions with vari-
- able-length argument lists; this info is in the
- symbol table.)
-
- --mmnnooaarrggccoouunntt
- Omit the argument count word. This is the default
- if you use the unmodified sources.
-
- These `--mm' options are defined for the AMD Am29000:
-
- --mmddww Generate code that assumes the DW bit is set, i.e.,
- that byte and halfword operations are directly sup-
- ported by the hardware. This is the default.
-
- --mmnnooddww Generate code that assumes the DW bit is not set.
-
- --mmbbww Generate code that assumes the system supports byte
- and halfword write operations. This is the de-
- fault.
-
- --mmnnbbww Generate code that assumes the systems does not
- support byte and halfword write operations. This
- implies `--mmnnooddww'.
-
-
-
- GNU Tools 1993/10/13 36
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- --mmssmmaallll
- Use a small memory model that assumes that all
- function addresses are either within a single 256
- KB segment or at an absolute address of less than
- 256K. This allows the ccaallll instruction to be used
- instead of a ccoonnsstt, ccoonnsstthh, ccaallllii sequence.
-
- --mmllaarrggee
- Do not assume that the ccaallll instruction can be
- used; this is the default.
-
- --mm2299005500
- Generate code for the Am29050.
-
- --mm2299000000
- Generate code for the Am29000. This is the de-
- fault.
-
- --mmkkeerrnneell--rreeggiisstteerrss
- Generate references to registers ggrr6644--ggrr9955 instead
- of ggrr9966--ggrr112277. This option can be used when com-
- piling kernel code that wants a set of global reg-
- isters disjoint from that used by user-mode code.
-
- Note that when this option is used, register names
- in `--ff' flags must use the normal, user-mode,
- names.
-
- --mmuusseerr--rreeggiisstteerrss
- Use the normal set of global registers, ggrr9966--ggrr112277.
- This is the default.
-
- --mmssttaacckk--cchheecckk
- Insert a call to ____mmsspp__cchheecckk after each stack ad-
- justment. This is often used for kernel code.
-
- These `--mm' options are defined for Motorola 88K architec-
- tures:
-
- --mm8888000000
- Generate code that works well on both the m88100
- and the m88110.
-
- --mm8888110000
- Generate code that works best for the m88100, but
- that also runs on the m88110.
-
- --mm8888111100
- Generate code that works best for the m88110, and
- may not run on the m88100.
-
- --mmiiddeennttiiffyy--rreevviissiioonn
- Include an iiddeenntt directive in the assembler output
- recording the source file name, compiler name and
-
-
-
- GNU Tools 1993/10/13 37
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- version, timestamp, and compilation flags used.
-
- --mmnnoo--uunnddeerrssccoorreess
- In assembler output, emit symbol names without
- adding an underscore character at the beginning of
- each name. The default is to use an underscore as
- prefix on each name.
-
- --mmnnoo--cchheecckk--zzeerroo--ddiivviissiioonn
-
- --mmcchheecckk--zzeerroo--ddiivviissiioonn
- Early models of the 88K architecture had problems
- with division by zero; in particular, many of them
- didn't trap. Use these options to avoid including
- (or to include explicitly) additional code to de-
- tect division by zero and signal an exception. All
- GCC configurations for the 88K use
- `--mmcchheecckk--zzeerroo--ddiivviissiioonn' by default.
-
- --mmooccss--ddeebbuugg--iinnffoo
-
- --mmnnoo--ooccss--ddeebbuugg--iinnffoo
- Include (or omit) additional debugging information
- (about registers used in each stack frame) as spec-
- ified in the 88Open Object Compatibility Standard,
- "OCS". This extra information is not needed by
- GDB. The default for DG/UX, SVr4, and Delta 88
- SVr3.2 is to include this information; other 88k
- configurations omit this information by default.
-
- --mmooccss--ffrraammee--ppoossiittiioonn
-
- --mmnnoo--ooccss--ffrraammee--ppoossiittiioonn
- Force (or do not require) register values to be
- stored in a particular place in stack frames, as
- specified in OCS. The DG/UX, Delta88 SVr3.2, and
- BCS configurations use `--mmooccss--ffrraammee--ppoossiittiioonn'; oth-
- er 88k configurations have the default
- `--mmnnoo--ooccss--ffrraammee--ppoossiittiioonn'.
-
- --mmooppttiimmiizzee--aarrgg--aarreeaa
-
- --mmnnoo--ooppttiimmiizzee--aarrgg--aarreeaa
- Control how to store function arguments in stack
- frames. `--mmooppttiimmiizzee--aarrgg--aarreeaa' saves space, but may
- break some debuggers (not GDB).
- `--mmnnoo--ooppttiimmiizzee--aarrgg--aarreeaa' conforms better to stan-
- dards. By default GCC does not optimize the argu-
- ment area.
-
- --mmsshhoorrtt--ddaattaa--_n_u_m
- _n_u_m Generate smaller data references by making them
- relative to rr00, which allows loading a value using
- a single instruction (rather than the usual two).
-
-
-
- GNU Tools 1993/10/13 38
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- You control which data references are affected by
- specifying _n_u_m with this option. For example, if
- you specify `--mmsshhoorrtt--ddaattaa--551122', then the data ref-
- erences affected are those involving displacements
- of less than 512 bytes. `--mmsshhoorrtt--ddaattaa--_n_u_m' is not
- effective for _n_u_m greater than 64K.
-
- --mmsseerriiaalliizzee--vvoollaattiillee
-
- --mmnnoo--sseerriiaalliizzee--vvoollaattiillee
- Do, or do not, generate code to guarantee sequen-
- tial consistency of volatile memory references.
-
- GNU CC always guarantees consistency by default,
- for the preferred processor submodel. How this is
- done depends on the submodel.
-
- The m88100 processor does not reorder memory refer-
- ences and so always provides sequential consisten-
- cy. If you use `--mm8888110000', GNU CC does not generate
- any special instructions for sequential consisten-
- cy.
-
- The order of memory references made by the m88110
- processor does not always match the order of the
- instructions requesting those references. In par-
- ticular, a load instruction may execute before a
- preceding store instruction. Such reordering vio-
- lates sequential consistency of volatile memory
- references, when there are multiple processors.
- When you use `--mm8888000000' or `--mm8888111100', GNU CC gener-
- ates special instructions when appropriate, to
- force execution in the proper order.
-
- The extra code generated to guarantee consistency
- may affect the performance of your application. If
- you know that you can safely forgo this guarantee,
- you may use the option `--mmnnoo--sseerriiaalliizzee--vvoollaattiillee'.
-
- If you use the `--mm8888110000' option but require sequen-
- tial consistency when running on the m88110 proces-
- sor, you should use `--mmsseerriiaalliizzee--vvoollaattiillee'.
-
- --mmssvvrr44
-
- --mmssvvrr33 Turn on (`--mmssvvrr44') or off (`--mmssvvrr33') compiler ex-
- tensions related to System V release 4 (SVr4).
- This controls the following:
-
- +o Which variant of the assembler syntax to emit
- (which you can select independently using
- `--mmvveerrssiioonn--0033..0000').
-
- +o `--mmssvvrr44' makes the C preprocessor recognize `##pprraagg--
-
-
-
- GNU Tools 1993/10/13 39
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- mmaa wweeaakk'
-
- +o `--mmssvvrr44' makes GCC issue additional declaration di-
- rectives used in SVr4.
-
- `--mmssvvrr33' is the default for all m88K configurations except
- the SVr4 configuration.
-
- --mmttrraapp--llaarrggee--sshhiifftt
-
- --mmhhaannddllee--llaarrggee--sshhiifftt
- Include code to detect bit-shifts of more than 31
- bits; respectively, trap such shifts or emit code
- to handle them properly. By default GCC makes no
- special provision for large bit shifts.
-
- --mmuussee--ddiivv--iinnssttrruuccttiioonn
- Very early models of the 88K architecture didn't
- have a divide instruction, so GCC avoids that in-
- struction by default. Use this option to specify
- that it's safe to use the divide instruction.
-
- --mmvveerrssiioonn--0033..0000
- In the DG/UX configuration, there are two flavors
- of SVr4. This option modifies --mmssvvrr44 to select
- whether the hybrid-COFF or real-ELF flavor is used.
- All other configurations ignore this option.
-
- --mmwwaarrnn--ppaasssseedd--ssttrruuccttss
- Warn when a function passes a struct as an argument
- or result. Structure-passing conventions have
- changed during the evolution of the C language, and
- are often the source of portability problems. By
- default, GCC issues no such warning.
-
- These options are defined for the IBM RS6000:
-
- --mmffpp--iinn--ttoocc
-
- --mmnnoo--ffpp--iinn--ttoocc
- Control whether or not floating-point constants go
- in the Table of Contents (TOC), a table of all
- global variable and function addresses. By default
- GCC puts floating-point constants there; if the TOC
- overflows, `--mmnnoo--ffpp--iinn--ttoocc' will reduce the size of
- the TOC, which may avoid the overflow.
-
- These `--mm' options are defined for the IBM RT PC:
-
- --mmiinn--lliinnee--mmuull
- Use an in-line code sequence for integer multi-
- plies. This is the default.
-
-
-
-
-
- GNU Tools 1993/10/13 40
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- --mmccaallll--lliibb--mmuull
- Call llmmuull$$$$ for integer multiples.
-
- --mmffuullll--ffpp--bblloocckkss
- Generate full-size floating point data blocks, in-
- cluding the minimum amount of scratch space recom-
- mended by IBM. This is the default.
-
- --mmmmiinniimmuumm--ffpp--bblloocckkss
- Do not include extra scratch space in floating
- point data blocks. This results in smaller code,
- but slower execution, since scratch space must be
- allocated dynamically.
-
- --mmffpp--aarrgg--iinn--ffpprreeggss
- Use a calling sequence incompatible with the IBM
- calling convention in which floating point argu-
- ments are passed in floating point registers. Note
- that vvaarraarrggss..hh and ssttddaarrggss..hh will not work with
- floating point operands if this option is speci-
- fied.
-
- --mmffpp--aarrgg--iinn--ggrreeggss
- Use the normal calling convention for floating
- point arguments. This is the default.
-
- --mmhhcc--ssttrruucctt--rreettuurrnn
- Return structures of more than one word in memory,
- rather than in a register. This provides compati-
- bility with the MetaWare HighC (hc) compiler. Use
- `--ffppcccc--ssttrruucctt--rreettuurrnn' for compatibility with the
- Portable C Compiler (pcc).
-
- --mmnnoohhcc--ssttrruucctt--rreettuurrnn
- Return some structures of more than one word in
- registers, when convenient. This is the default.
- For compatibility with the IBM-supplied compilers,
- use either `--ffppcccc--ssttrruucctt--rreettuurrnn' or
- `--mmhhcc--ssttrruucctt--rreettuurrnn'.
-
- These `--mm' options are defined for the MIPS family of com-
- puters:
-
- --mmccppuu==_c_p_u_-_t_y_p_e
- Assume the defaults for the machine type _c_p_u_-_t_y_p_e
- when scheduling instructions. The default _c_p_u_-_t_y_p_e
- is ddeeffaauulltt, which picks the longest cycles times
- for any of the machines, in order that the code run
- at reasonable rates on all MIPS cpu's. Other
- choices for _c_p_u_-_t_y_p_e are rr22000000, rr33000000, rr44000000, and
- rr66000000. While picking a specific _c_p_u_-_t_y_p_e will
- schedule things appropriately for that particular
- chip, the compiler will not generate any code that
- does not meet level 1 of the MIPS ISA (instruction
-
-
-
- GNU Tools 1993/10/13 41
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- set architecture) without the --mmiippss22 or --mmiippss33
- switches being used.
-
- --mmiippss22 Issue instructions from level 2 of the MIPS ISA
- (branch likely, square root instructions). The
- --mmccppuu==rr44000000 or --mmccppuu==rr66000000 switch must be used in
- conjunction with --mmiippss22.
-
- --mmiippss33 Issue instructions from level 3 of the MIPS ISA (64
- bit instructions). The --mmccppuu==rr44000000 switch must be
- used in conjunction with --mmiippss22.
-
- --mmiinntt6644
-
- --mmlloonngg6644
-
- --mmlloonngglloonngg112288
- These options don't work at present.
-
- --mmmmiippss--aass
- Generate code for the MIPS assembler, and invoke
- mmiippss--ttffiillee to add normal debug information. This
- is the default for all platforms except for the
- OSF/1 reference platform, using the OSF/rose object
- format. If any of the --ggggddbb, --ggssttaabbss, or --ggssttaabbss++
- switches are used, the mmiippss--ttffiillee program will en-
- capsulate the stabs within MIPS ECOFF.
-
- --mmggaass Generate code for the GNU assembler. This is the
- default on the OSF/1 reference platform, using the
- OSF/rose object format.
-
- --mmrrnnaammeess
-
- --mmnnoo--rrnnaammeess
- The --mmrrnnaammeess switch says to output code using the
- MIPS software names for the registers, instead of
- the hardware names (ie, aa00 instead of $$44). The GNU
- assembler does not support the --mmrrnnaammeess switch, and
- the MIPS assembler will be instructed to run the
- MIPS C preprocessor over the source file. The
- --mmnnoo--rrnnaammeess switch is default.
-
- --mmggppoopptt
-
- --mmnnoo--ggppoopptt
- The --mmggppoopptt switch says to write all of the data
- declarations before the instructions in the text
- section, to all the MIPS assembler to generate one
- word memory references instead of using two words
- for short global or static data items. This is on
- by default if optimization is selected.
-
-
-
-
-
- GNU Tools 1993/10/13 42
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- --mmssttaattss
-
- --mmnnoo--ssttaattss
- For each non-inline function processed, the --mmssttaattss
- switch causes the compiler to emit one line to the
- standard error file to print statistics about the
- program (number of registers saved, stack size,
- etc.).
-
- --mmmmeemmccppyy
-
- --mmnnoo--mmeemmccppyy
- The --mmmmeemmccppyy switch makes all block moves call the
- appropriate string function (mmeemmccppyy or bbccooppyy) in-
- stead of possibly generating inline code.
-
- --mmmmiippss--ttffiillee
-
- --mmnnoo--mmiippss--ttffiillee
- The --mmnnoo--mmiippss--ttffiillee switch causes the compiler not
- postprocess the object file with the mmiippss--ttffiillee
- program, after the MIPS assembler has generated it
- to add debug support. If mmiippss--ttffiillee is not run,
- then no local variables will be available to the
- debugger. In addition, ssttaaggee22 and ssttaaggee33 objects
- will have the temporary file names passed to the
- assembler embedded in the object file, which means
- the objects will not compare the same.
-
- --mmssoofftt--ffllooaatt
- Generate output containing library calls for float-
- ing point. _W_A_R_N_I_N_G_: 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 li-
- brary functions for cross-compilation.
-
- --mmhhaarrdd--ffllooaatt
- Generate output containing floating point instruc-
- tions. This is the default if you use the unmodi-
- fied sources.
-
- --mmffpp6644 Assume that the FFRR bit in the status word is on,
- and that there are 32 64-bit floating point regis-
- ters, instead of 32 32-bit floating point regis-
- ters. You must also specify the --mmccppuu==rr44000000 and
- --mmiippss33 switches.
-
- --mmffpp3322 Assume that there are 32 32-bit floating point reg-
- isters. This is the default.
-
- --mmaabbiiccaallllss
-
-
-
-
- GNU Tools 1993/10/13 43
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- --mmnnoo--aabbiiccaallllss
- Emit (or do not emit) the ..aabbiiccaallllss, ..ccppllooaadd, and
- ..ccpprreessttoorree pseudo operations that some System V.4
- ports use for position independent code.
-
- --mmhhaallff--ppiicc
-
- --mmnnoo--hhaallff--ppiicc
- The --mmhhaallff--ppiicc switch says to put pointers to ex-
- tern references into the data section and load them
- up, rather than put the references in the text sec-
- tion. This option does not work at present. --GG_n_u_m
- Put global and static items less than or equal to
- _n_u_m bytes into the small data or bss sections in-
- stead of the normal data or bss section. This al-
- lows the assembler to emit one word memory refer-
- ence instructions based on the global pointer (ggpp
- or $$2288), instead of the normal two words used. By
- default, _n_u_m is 8 when the MIPS assembler is used,
- and 0 when the GNU assembler is used. The --GG_n_u_m
- switch is also passed to the assembler and linker.
- All modules should be compiled with the same --GG_n_u_m
- value.
-
- --nnooccpppp Tell the MIPS assembler to not run it's preproces-
- sor over user assembler files (with a `..ss' suffix)
- when assembling them.
-
- These `--mm' options are defined for the Intel 80386 family
- of computers: --mm448866
-
- --mmnnoo--448866
- Control whether or not code is optimized for a 486
- instead of an 386. Code generated for a 486 will
- run on a 386 and vice versa.
-
- --mmssoofftt--ffllooaatt
- Generate output containing library calls for float-
- ing point. _W_a_r_n_i_n_g_: 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 li-
- brary functions for cross-compilation.
-
- On machines where a function returns floating point
- results in the 80387 register stack, some floating
- point opcodes may be emitted even if `--mmssoofftt--ffllooaatt'
- is used.
-
- --mmnnoo--ffpp--rreett--iinn--338877
- Do not use the FPU registers for return values of
- functions.
-
-
-
-
- GNU Tools 1993/10/13 44
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- The usual calling convention has functions return
- values of types ffllooaatt and ddoouubbllee in an FPU regis-
- ter, even if there is no FPU. The idea is that the
- operating system should emulate an FPU.
-
- The option `--mmnnoo--ffpp--rreett--iinn--338877' causes such values
- to be returned in ordinary CPU registers instead.
-
- These `--mm' options are defined for the HPPA family of com-
- puters:
-
- --mmppaa--rriisscc--11--00
- Generate code for a PA 1.0 processor.
-
- --mmppaa--rriisscc--11--11
- Generate code for a PA 1.1 processor.
-
- --mmkkeerrnneell
- Generate code which is suitable for use in kernels.
- Specifically, avoid aadddd instructions in which one
- of the arguments is the DP register; generate aaddddiill
- instructions instead. This avoids a rather serious
- bug in the HP-UX linker.
-
- --mmsshhaarreedd--lliibbss
- Generate code that can be linked against HP-UX
- shared libraries. This option is not fully func-
- tion yet, and is not on by default for any PA tar-
- get. Using this option can cause incorrect code to
- be generated by the compiler.
-
- --mmnnoo--sshhaarreedd--lliibbss
- Don't generate code that will be linked against
- shared libraries. This is the default for all PA
- targets.
-
- --mmlloonngg--ccaallllss
- Generate code which allows calls to functions
- greater than 256K away from the caller when the
- caller and callee are in the same source file. Do
- not turn this option on unless code refuses to link
- with "branch out of range errors from the linker.
-
- --mmddiissaabbllee--ffpprreeggss
- Prevent floating point registers from being used in
- any manner. This is necessary for compiling ker-
- nels which perform lazy context switching of float-
- ing point registers. If you use this option and
- attempt to perform floating point operations, the
- compiler will abort.
-
- --mmddiissaabbllee--iinnddeexxiinngg
- Prevent the compiler from using indexing address
- modes. This avoids some rather obscure problems
-
-
-
- GNU Tools 1993/10/13 45
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- when compiling MIG generated code under MACH.
-
- --mmttrraaiilliinngg--ccoolloonn
- Add a colon to the end of label definitions (for
- ELF assemblers).
-
- These `--mm' options are defined for the Intel 80960 family
- of computers:
-
- --mm_c_p_u_-_t_y_p_e
- Assume the defaults for the machine type _c_p_u_-_t_y_p_e
- for instruction and addressing-mode availability
- and alignment. The default _c_p_u_-_t_y_p_e is kkbb; other
- choices are kkaa, mmcc, ccaa, ccff, ssaa, and ssbb.
-
- --mmnnuummeerriiccss
-
- --mmssoofftt--ffllooaatt
- The --mmnnuummeerriiccss option indicates that the processor
- does support floating-point instructions. The
- --mmssoofftt--ffllooaatt option indicates that floating-point
- support should not be assumed.
-
- --mmlleeaaff--pprroocceedduurreess
-
- --mmnnoo--lleeaaff--pprroocceedduurreess
- Do (or do not) attempt to alter leaf procedures to
- be callable with the _b_a_l instruction as well as
- _c_a_l_l. This will result in more efficient code for
- explicit calls when the _b_a_l instruction can be sub-
- stituted by the assembler or linker, but less effi-
- cient code in other cases, such as calls via func-
- tion pointers, or using a linker that doesn't sup-
- port this optimization.
-
- --mmttaaiill--ccaallll
-
- --mmnnoo--ttaaiill--ccaallll
- Do (or do not) make additional attempts (beyond
- those of the machine-independent portions of the
- compiler) to optimize tail-recursive calls into
- branches. You may not want to do this because the
- detection of cases where this is not valid is not
- totally complete. The default is --mmnnoo--ttaaiill--ccaallll.
-
- --mmccoommpplleexx--aaddddrr
-
- --mmnnoo--ccoommpplleexx--aaddddrr
- Assume (or do not assume) that the use of a complex
- addressing mode is a win on this implementation of
- the i960. Complex addressing modes may not be
- worthwhile on the K-series, but they definitely are
- on the C-series. The default is currently --mmccoomm--
- pplleexx--aaddddrr for all processors except the CB and CC.
-
-
-
- GNU Tools 1993/10/13 46
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- --mmccooddee--aalliiggnn
-
- --mmnnoo--ccooddee--aalliiggnn
- Align code to 8-byte boundaries for faster fetching
- (or don't bother). Currently turned on by default
- for C-series implementations only.
-
- --mmiicc--ccoommppaatt
-
- --mmiicc22..00--ccoommppaatt
-
- --mmiicc33..00--ccoommppaatt
- Enable compatibility with iC960 v2.0 or v3.0.
-
- --mmaassmm--ccoommppaatt
-
- --mmiinntteell--aassmm
- Enable compatibility with the iC960 assembler.
-
- --mmssttrriicctt--aalliiggnn
-
- --mmnnoo--ssttrriicctt--aalliiggnn
- Do not permit (do permit) unaligned accesses.
-
- --mmoolldd--aalliiggnn
- Enable structure-alignment compatibility with In-
- tel's gcc release version 1.3 (based on gcc 1.37).
- Currently this is buggy in that ##pprraaggmmaa aalliiggnn 11 is
- always assumed as well, and cannot be turned off.
-
- These `--mm' options are defined for the DEC Alpha implemen-
- tations:
-
- --mmnnoo--ssoofftt--ffllooaatt
-
- --mmssoofftt--ffllooaatt
- Use (do not use) the hardware floating-point in-
- structions for floating-point operations. When
- --mmssoofftt--ffllooaatt is specified, functions in `lliibbggcccc11..cc'
- will be used to perform floating-point operations.
- Unless they are replaced by routines that emulate
- the floating-point operations, or compiled in such
- a way as to call such emulations routines, these
- routines will issue floating-point operations. If
- you are compiling for an Alpha without floating-
- point operations, you must ensure that the library
- is built so as not to call them.
-
- Note that Alpha implementations without floating-
- point operations are required to have floating-
- point registers.
-
- --mmffpp--rreegg
-
-
-
-
- GNU Tools 1993/10/13 47
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- --mmnnoo--ffpp--rreeggss
- Generate code that uses (does not use) the float-
- ing-point register set. --mmnnoo--ffpp--rreeggss implies
- --mmssoofftt--ffllooaatt. If the floating-point register set
- is not used, floating point operands are passed in
- integer registers as if they were integers and
- floating-point results are passed in $0 instead of
- $f0. This is a non-standard calling sequence, so
- any function with a floating-point argument or re-
- turn value called by code compiled with --mmnnoo--ffpp--
- rreeggss must also be compiled with that option.
-
- A typical use of this option is building a kernel
- that does not use, and hence need not save and re-
- store, any floating-point registers.
-
- These additional options are available on System V Release
- 4 for compatibility with other compilers on those systems:
-
- --GG On SVr4 systems, ggcccc accepts the option `--GG' (and
- passes it to the system linker), for compatibility
- with other compilers. However, we suggest you use
- `--ssyymmbboolliicc' or `--sshhaarreedd' as appropriate, instead of
- supplying linker options on the ggcccc command line.
-
- --QQyy Identify the versions of each tool used by the com-
- piler, in a ..iiddeenntt assembler directive in the out-
- put.
-
- --QQnn Refrain from adding ..iiddeenntt directives to the output
- file (this is the default).
-
- --YYPP,,_d_i_r_s
- Search the directories _d_i_r_s, and no others, for li-
- braries specified with `--ll'. You can separate di-
- rectory entries in _d_i_r_s from one another with
- colons.
-
- --YYmm,,_d_i_r
- Look in the directory _d_i_r to find the M4 preproces-
- sor. The assembler uses this option.
-
- CCOODDEE GGEENNEERRAATTIIOONN OOPPTTIIOONNSS
- These machine-independent options control the interface
- conventions used in code generation.
-
- Most of them begin with `-f'. These options have both
- positive and negative forms; the negative form of `--ffffoooo'
- would be `--ffnnoo--ffoooo'. In the table below, only one of the
- forms is listed--the one which is not the default. You
- can figure out the other form by either removing `nnoo--' or
- adding it.
-
-
-
-
-
- GNU Tools 1993/10/13 48
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- --ffnnoonnnnuullll--oobbjjeeccttss
- Assume that objects reached through references are
- not null (C++ only).
-
- Normally, GNU C++ makes conservative assumptions
- about objects reached through references. For ex-
- ample, the compiler must check that aa is not null
- in code like the following:
-
- obj &a = g (); a.f (2);
-
- Checking that references of this sort have non-null
- values requires extra code, however, and it is un-
- necessary for many programs. You can use
- `--ffnnoonnnnuullll--oobbjjeeccttss' to omit the checks for null, if
- your program doesn't require checking.
-
- --ffppcccc--ssttrruucctt--rreettuurrnn
- Use the same convention for returning ssttrruucctt and
- uunniioonn values that is used by the usual C compiler
- on your system. This convention is less efficient
- for small structures, and on many machines it fails
- to be reentrant; but it has the advantage of allow-
- ing intercallability between GCC-compiled code and
- PCC-compiled code.
-
- --ffrreegg--ssttrruucctt--rreettuurrnn
- Use the convention that ssttrruucctt and uunniioonn values are
- returned in registers when possible. This is more
- efficient for small structures than
- --ffppcccc--ssttrruucctt--rreettuurrnn.
-
- If you specify neither --ffppcccc--ssttrruucctt--rreettuurrnn nor
- --ffrreegg--ssttrruucctt--rreettuurrnn, GNU CC defaults to whichever
- convention is standard for the target. If there is
- no standard convention, GNU CC defaults to
- --ffppcccc--ssttrruucctt--rreettuurrnn.
-
- --ffsshhoorrtt--eennuummss
- Allocate to an eennuumm type only as many bytes as it
- needs for the declared range of possible values.
- Specifically, the eennuumm type will be equivalent to
- the smallest integer type which has enough room.
-
- --ffsshhoorrtt--ddoouubbllee
- Use the same size for ddoouubbllee as for ffllooaatt .
-
- --ffsshhaarreedd--ddaattaa
- Requests that the data and non-ccoonnsstt variables of
- this compilation be shared data rather than private
- data. The distinction makes sense only on certain
- operating systems, where shared data is shared be-
- tween processes running the same program, while
- private data exists in one copy per process.
-
-
-
- GNU Tools 1993/10/13 49
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- --ffnnoo--ccoommmmoonn
- Allocate even uninitialized global variables in the
- bss section of the object file, rather than gener-
- ating them as common blocks. This has the effect
- that if the same variable is declared (without eexx--
- tteerrnn) in two different compilations, you will get
- an error when you link them. The only reason this
- might be useful is if you wish to verify that the
- program will work on other systems which always
- work this way.
-
- --ffnnoo--iiddeenntt
- Ignore the `##iiddeenntt' directive.
-
- --ffnnoo--ggnnuu--lliinnkkeerr
- Do not output global initializations (such as C++
- constructors and destructors) in the form used by
- the GNU linker (on systems where the GNU linker is
- the standard method of handling them). Use this
- option when you want to use a non-GNU linker, which
- also requires using the ccoolllleecctt22 program to make
- sure the system linker includes constructors and
- destructors. (ccoolllleecctt22 is included in the GNU CC
- distribution.) For systems which _m_u_s_t use ccooll--
- lleecctt22, the compiler driver ggcccc is configured to do
- this automatically.
-
- --ffiinnhhiibbiitt--ssiizzee--ddiirreeccttiivvee
- Don't output a ..ssiizzee assembler directive, or any-
- thing else that would cause trouble if the function
- is split in the middle, and the two halves are
- placed at locations far apart in memory. This op-
- tion is used when compiling `ccrrttssttuuffff..cc'; you
- should not need to use it for anything else.
-
- --ffvveerrbboossee--aassmm
- Put extra commentary information in the generated
- assembly code to make it more readable. This op-
- tion is generally only of use to those who actually
- need to read the generated assembly code (perhaps
- while debugging the compiler itself).
-
- --ffvvoollaattiillee
- Consider all memory references through pointers to
- be volatile.
-
- --ffvvoollaattiillee--gglloobbaall
- Consider all memory references to extern and global
- data items to be volatile.
-
- --ffppiicc If supported for the target machines, generate po-
- sition-independent code, suitable for use in a
- shared library.
-
-
-
-
- GNU Tools 1993/10/13 50
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- --ffPPIICC If supported for the target machine, emit position-
- independent code, suitable for dynamic linking,
- even if branches need large displacements.
-
- --ffffiixxeedd--_r_e_g
- Treat the register named _r_e_g as a fixed register;
- generated code should never refer to it (except
- perhaps as a stack pointer, frame pointer or in
- some other fixed role).
-
- _r_e_g must be the name of a register. The register
- names accepted are machine-specific and are defined
- in the RREEGGIISSTTEERR__NNAAMMEESS macro in the machine descrip-
- tion macro file.
-
- This flag does not have a negative form, because it
- specifies a three-way choice.
-
- --ffccaallll--uusseedd--_r_e_g
- Treat the register named _r_e_g as an allocatable reg-
- ister that is clobbered by function calls. It may
- be allocated for temporaries or variables that do
- not live across a call. Functions compiled this
- way will not save and restore the register _r_e_g.
-
- Use of this flag for a register that has a fixed
- pervasive role in the machine's execution model,
- such as the stack pointer or frame pointer, will
- produce disastrous results.
-
- This flag does not have a negative form, because it
- specifies a three-way choice.
-
- --ffccaallll--ssaavveedd--_r_e_g
- Treat the register named _r_e_g as an allocatable reg-
- ister saved by functions. It may be allocated even
- for temporaries or variables that live across a
- call. Functions compiled this way will save and
- restore the register _r_e_g if they use it.
-
- Use of this flag for a register that has a fixed
- pervasive role in the machine's execution model,
- such as the stack pointer or frame pointer, will
- produce disastrous results.
-
- A different sort of disaster will result from the
- use of this flag for a register in which function
- values may be returned.
-
- This flag does not have a negative form, because it
- specifies a three-way choice.
-
- PPRRAAGGMMAASS
- Two `##pprraaggmmaa' directives are supported for GNU C++, to
-
-
-
- GNU Tools 1993/10/13 51
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- permit using the same header file for two purposes: as a
- definition of interfaces to a given object class, and as
- the full definition of the contents of that object class.
-
- ##pprraaggmmaa iinntteerrffaaccee
- (C++ only.) Use this directive in header files
- that define object classes, to save space in most
- of the object files that use those classes. Nor-
- mally, local copies of certain information (backup
- copies of inline member functions, debugging infor-
- mation, and the internal tables that implement vir-
- tual functions) must be kept in each object file
- that includes class definitions. You can use this
- pragma to avoid such duplication. When a header
- file containing `##pprraaggmmaa iinntteerrffaaccee' is included in
- a compilation, this auxiliary information will not
- be generated (unless the main input source file it-
- self uses `##pprraaggmmaa iimmpplleemmeennttaattiioonn'). Instead, the
- object files will contain references to be resolved
- at link time.
-
- ##pprraaggmmaa iimmpplleemmeennttaattiioonn
-
- ##pprraaggmmaa iimmpplleemmeennttaattiioonn ""_o_b_j_e_c_t_s..hh""
- (C++ only.) Use this pragma in a main input file,
- when you want full output from included header
- files to be generated (and made globally visible).
- The included header file, in turn, should use
- `##pprraaggmmaa iinntteerrffaaccee'. Backup copies of inline mem-
- ber functions, debugging information, and the in-
- ternal tables used to implement virtual functions
- are all generated in implementation files.
-
- If you use `##pprraaggmmaa iimmpplleemmeennttaattiioonn' with no argu-
- ment, it applies to an include file with the same
- basename as your source file; for example, in
- `aallllccllaassss..cccc', `##pprraaggmmaa iimmpplleemmeennttaattiioonn' by itself
- is equivalent to `##pprraaggmmaa iimmpplleemmeennttaattiioonn
- ""aallllccllaassss..hh""'. Use the string argument if you want
- a single implementation file to include code from
- multiple header files.
-
- There is no way to split up the contents of a sin-
- gle header file into multiple implementation files.
-
- FFIILLEESS
- file.c C source file
- file.h C header (preprocessor) file
- file.i preprocessed C source file
- file.C C++ source file
- file.cc C++ source file
- file.cxx C++ source file
- file.m Objective-C source file
- file.s assembly language file
-
-
-
- GNU Tools 1993/10/13 52
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- file.o object file
- a.out link edited output
- _T_M_P_D_I_R/cc* temporary files
- _L_I_B_D_I_R/cpp preprocessor
- _L_I_B_D_I_R/cc1 compiler for C
- _L_I_B_D_I_R/cc1plus compiler for C++
- _L_I_B_D_I_R/collect linker front end needed on some machines
- _L_I_B_D_I_R/libgcc.a GCC subroutine library
- /lib/crt[01n].o start-up routine
- _L_I_B_D_I_R/ccrt0 additional start-up routine for C++
- /lib/libc.a standard C library, see
- _i_n_t_r_o(3)
- /usr/include standard directory for ##iinncclluuddee files
- _L_I_B_D_I_R/include standard gcc directory for ##iinncclluuddee files
- _L_I_B_D_I_R/g++-include additional g++ directory for ##iinncclluuddee
-
- _L_I_B_D_I_R is usually //uussrr//llooccaall//lliibb//_m_a_c_h_i_n_e/_v_e_r_s_i_o_n.
- _T_M_P_D_I_R comes from the environment variable TTMMPPDDIIRR (default
- //uussrr//ttmmpp if available, else //ttmmpp).
-
- SSEEEE AALLSSOO
- cpp(1), as(1), ld(1), gdb(1), adb(1), dbx(1), sdb(1).
- `ggcccc', `ccpppp', `aass', `lldd', and `ggddbb' entries in iinnffoo.
- _U_s_i_n_g _a_n_d _P_o_r_t_i_n_g _G_N_U _C_C _(_f_o_r _v_e_r_s_i_o_n _2_._0_), Richard M.
- Stallman; _T_h_e _C _P_r_e_p_r_o_c_e_s_s_o_r, Richard M. Stallman; _D_e_b_u_g_-
- _g_i_n_g _w_i_t_h _G_D_B_: _t_h_e _G_N_U _S_o_u_r_c_e_-_L_e_v_e_l _D_e_b_u_g_g_e_r, Richard M.
- Stallman and Roland H. Pesch; _U_s_i_n_g _a_s_: _t_h_e _G_N_U _A_s_s_e_m_b_l_e_r,
- Dean Elsner, Jay Fenlason & friends; _l_d_: _t_h_e _G_N_U _l_i_n_k_e_r,
- Steve Chamberlain and Roland Pesch.
-
- BBUUGGSS
- For instructions on reporting bugs, see the GCC manual.
-
- CCOOPPYYIINNGG
- Copyright 1991, 1992, 1993 Free Software Foundation, Inc.
-
- Permission is granted to make and distribute verbatim
- copies of this manual provided the copyright notice and
- this permission notice are preserved on all copies.
-
- Permission is granted to copy and distribute modified ver-
- sions of this manual under the conditions for verbatim
- copying, provided that the entire resulting derived work
- is distributed under the terms of a permission notice
- identical to this one.
-
- Permission is granted to copy and distribute translations
- of this manual into another language, under the above con-
- ditions for modified versions, except that this permission
- notice may be included in translations approved by the
- Free Software Foundation instead of in the original En-
- glish.
-
-
-
-
-
- GNU Tools 1993/10/13 53
-
-
-
-
-
- GCC(1) GNU Tools GCC(1)
-
-
- AAUUTTHHOORRSS
- See the GNU CC Manual for the contributors to GNU CC.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- GNU Tools 1993/10/13 54
-
-
-