home *** CD-ROM | disk | FTP | other *** search
/ The CDPD Public Domain Collection for CDTV 3 / CDPDIII.bin / pd / programming / gnuc / unix / usr / share / man / cat1 / gcc.0 < prev    next >
Encoding:
Text File  |  1992-12-28  |  115.5 KB  |  2,773 lines

  1.  
  2.  
  3.  
  4. GCC(1)                      GNU Tools                      GCC(1)
  5.  
  6.  
  7. NNAAMMEE
  8.        gcc, g++ - GNU project C and C++ Compiler (v2 preliminary)
  9.  
  10. SSYYNNOOPPSSIISS
  11.        gcc [[_o_p_t_i_o_n | _f_i_l_e_n_a_m_e ]...
  12.        g++ [[_o_p_t_i_o_n | _f_i_l_e_n_a_m_e ]...
  13.  
  14. WWAARRNNIINNGG
  15.        The information in this man page is an  extract  from  the
  16.        full  documentation  of the GNU C compiler, and is limited
  17.        to the meaning of the options.  This man page is not  kept
  18.        up to date except when volunteers want to maintain it.
  19.  
  20.        For  complete and current documentation, refer to the Info
  21.        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
  22.        _v_e_r_s_i_o_n  _2_._0_).  Both are made from the Texinfo source file
  23.        ggcccc..tteexxiinnffoo.
  24.  
  25. DDEESSCCRRIIPPTTIIOONN
  26.        The C and C++  compilers  are  integrated.   Both  process
  27.        input  files  through  one or more of four stages: prepro-
  28.        cessing, compilation, assembly, and linking.  Source file-
  29.        name suffixes identify the source language, but which name
  30.        you use for the compiler governs default assumptions:
  31.  
  32.        ggcccc    assumes preprocessed (..ii) files are C and assumes C
  33.               style linking.
  34.  
  35.        gg++++    assumes preprocessed (..ii) files are C++ and assumes
  36.               C++ style linking.
  37.  
  38.        Suffixes of source file names indicate  the  language  and
  39.        kind of processing to be done:
  40.  
  41.        ..cc     C source; preprocess, compile, assemble
  42.        ..CC     C++ source; preprocess, compile, assemble
  43.        ..cccc     C++ source; preprocess, compile, assemble
  44.        ..ccxxxx     C++ source; preprocess, compile, assemble
  45.        ..mm     Objective-C source; preprocess, compile, assemble
  46.        ..ii     preprocessed C; compile, assemble
  47.        ..iiii     preprocessed C++; compile, assemble
  48.        ..ss     Assembler source; assemble
  49.        ..SS     Assembler source; preprocess, assemble
  50.        ..hh     Preprocessor  file;  not  usually  named on command
  51.        line
  52.  
  53.        _?_?     Other (unrecognized) files passed to linker.
  54.             Common cases:
  55.        ..oo     Object file
  56.        ..aa     Archive file
  57.  
  58.        Linking is always the last stage unless you use one of the
  59.        --cc,  --SS,  or --EE options to avoid it (or unless compilation
  60.        errors stop the whole process).  For the link  stage,  all
  61.  
  62.  
  63.  
  64. GNU Tools                   28may1992                           1
  65.  
  66.  
  67.  
  68.  
  69.  
  70. GCC(1)                      GNU Tools                      GCC(1)
  71.  
  72.  
  73.        ..oo  files  corresponding  to  source  files, --ll libraries,
  74.        unrecognized filenames (including named  ..oo  object  files
  75.        and  ..aa archives) are passed to the linker in command-line
  76.        order.
  77.  
  78.  
  79. OOPPTTIIOONNSS
  80.        Options must be separate: `--ddrr' is  quite  different  from
  81.        `--dd --rr '.
  82.  
  83.        Most `--ff' and `--WW' options have two contrary forms: --ff_n_a_m_e
  84.        and --ffnnoo--_n_a_m_e (or --WW_n_a_m_e and  --WWnnoo--_n_a_m_e).  Only  the  non-
  85.        default forms are shown here.
  86.  
  87.        Here  is  a  summary  of all the options, grouped by type.
  88.        Explanations are in the following sections.
  89.  
  90.  
  91.        OOvveerraallll OOppttiioonnss
  92.               -c -S -E -o _f_i_l_e -pipe -v -x _l_a_n_g_u_a_g_e
  93.  
  94.  
  95.        LLaanngguuaaggee OOppttiioonnss
  96.               -ansi -fall-virtual -fcond-mismatch
  97.               -fdollars-in-identifiers -fenum-int-equiv -fno-asm
  98.               -fno-builtin -fno-strict-prototype
  99.               -fsigned-bitfields -fsigned-char -fthis-is-variable
  100.               -funsigned-bitfields -funsigned-char
  101.               -fwritable-strings -traditional -traditional-cpp
  102.               -trigraphs
  103.  
  104.  
  105.        WWaarrnniinngg OOppttiioonnss
  106.               -fsyntax-only -pedantic -pedantic-errors -w -W
  107.               -Wall -Waggregate-return -Wcast-align -Wcast-qual
  108.               -Wcomment -Wconversion -Wenum-clash -Werror
  109.               -Wformat -Wid-clash-_l_e_n -Wimplicit -Winline
  110.               -Wmissing-prototypes -Wparentheses -Wpointer-arith
  111.               -Wreturn-type -Wshadow -Wstrict-prototypes -Wswitch
  112.               -Wtraditional -Wtrigraphs -Wuninitialized -Wunused
  113.               -Wwrite-strings
  114.  
  115.  
  116.        DDeebbuuggggiinngg OOppttiioonnss
  117.               -a -d_l_e_t_t_e_r_s -fpretend-float -g -gstabs -gdwarf
  118.               -ggdb -gsdb -p -pg -save-temps
  119.  
  120.  
  121.        OOppttiimmiizzaattiioonn OOppttiioonnss
  122.               -fcaller-saves -fcse-follow-jumps -fdelayed-branch
  123.               -felide-constructors -fexpensive-optimizations
  124.               -ffloat-store -fforce-addr -fforce-mem -finline
  125.               -finline-functions -fkeep-inline-functions
  126.               -fmemoize-lookups -fno-default-inline
  127.  
  128.  
  129.  
  130. GNU Tools                   28may1992                           2
  131.  
  132.  
  133.  
  134.  
  135.  
  136. GCC(1)                      GNU Tools                      GCC(1)
  137.  
  138.  
  139.               -fno-defer-pop -fno-function-cse
  140.               -fomit-frame-pointer -frerun-cse-after-loop
  141.               -fschedule-insns -fschedule-insns2
  142.               -fstrength-reduce -fthread-jumps -funroll-all-loops
  143.               -funroll-loops -O -O2
  144.  
  145.  
  146.        PPrreepprroocceessssoorr OOppttiioonnss
  147.               -C -dD -dM -dN -D_m_a_c_r_o[=_d_e_f_n] -E -H -i _f_i_l_e -M -MD
  148.               -MM -MMD -nostdinc -P -U_m_a_c_r_o -undef
  149.  
  150.  
  151.        LLiinnkkeerr OOppttiioonnss
  152.               -l_l_i_b_r_a_r_y -nostdlib -static
  153.  
  154.  
  155.        DDiirreeccttoorryy OOppttiioonnss
  156.               -B_p_r_e_f_i_x -I_d_i_r -I- -L_d_i_r
  157.  
  158.  
  159.        TTaarrggeett OOppttiioonnss
  160.               -b  _m_a_c_h_i_n_e -V _v_e_r_s_i_o_n
  161.  
  162.  
  163.        MMaacchhiinnee DDeeppeennddeenntt OOppttiioonnss
  164.               _M_6_8_0_x_0 _O_p_t_i_o_n_s
  165.               -m68000 -m68020 -m68881 -mbitfield -mc68000
  166.               -mc68020 -mfpa -mnobitfield -mrtd -mshort
  167.               -msoft-float
  168.  
  169.               _V_A_X _O_p_t_i_o_n_s
  170.               -mg -mgnu -munix
  171.  
  172.               _S_P_A_R_C _O_p_t_i_o_n_s
  173.               -mfpu -mno-epilogue
  174.  
  175.               _C_o_n_v_e_x _O_p_t_i_o_n_s
  176.               -margcount -mc1 -mc2 -mnoargcount
  177.  
  178.               _A_M_D_2_9_K _O_p_t_i_o_n_s
  179.               -m29000 -m29050 -mbw -mdw -mkernel-registers
  180.               -mlarge -mnbw -mnodw -msmall -mstack-check
  181.               -muser-registers
  182.  
  183.               _M_8_8_K _O_p_t_i_o_n_s
  184.               -mbig-pic -mcheck-zero-division
  185.               -mhandle-large-shift -midentify-revision
  186.               -mno-check-zero-division -mno-ocs-debug-info
  187.               -mno-ocs-frame-position -mno-optimize-arg-area
  188.               -mno-underscores -mocs-debug-info
  189.               -mocs-frame-position -moptimize-arg-area
  190.               -mshort-data-_n_u_m -msvr3 -msvr4 -mtrap-large-shift
  191.               -muse-div-instruction -mversion-03.00
  192.               -mwarn-passed-structs
  193.  
  194.  
  195.  
  196. GNU Tools                   28may1992                           3
  197.  
  198.  
  199.  
  200.  
  201.  
  202. GCC(1)                      GNU Tools                      GCC(1)
  203.  
  204.  
  205.               _R_S_6_0_0_0 _O_p_t_i_o_n_s
  206.               -mfp-in-toc -mno-fop-in-toc
  207.  
  208.               _R_T _O_p_t_i_o_n_s
  209.               -mcall-lib-mul -mfp-arg-in-fpregs -mfp-arg-in-gregs
  210.               -mfull-fp-blocks -mhc-struct-return -min-line-mul
  211.               -mminimum-fp-blocks -mnohc-struct-return
  212.  
  213.               _M_I_P_S _O_p_t_i_o_n_s
  214.               -mcpu=_c_p_u _t_y_p_e -mips2 -mips3 -mint64 -mlong64
  215.               -mlonglong128 -mmips-as -mgas -mrnames -mno-rnames
  216.               -mgpopt -mno-gpopt -mstats -mno-stats -mmemcpy
  217.               -mno-memcpy -mno-mips-tfile -mmips-tfile
  218.               -msoft-float -mhard-float -mabicalls -mno-abicalls
  219.               -mhalf-pic -mno-half-pic -G _n_u_m
  220.  
  221.               _i_3_8_6 _O_p_t_i_o_n_s
  222.               -m486 -mno486 -msoft-float
  223.  
  224.  
  225.        CCooddee GGeenneerraattiioonn OOppttiioonnss
  226.               +e_N -fcall-saved-_r_e_g -fcall-used-_r_e_g -ffixed-_r_e_g
  227.               -fno-common -fno-gnu-binutils -fnonnull-objects
  228.               -fpcc-struct-return -fpic -fPIC -fshared-data
  229.               -fshort-enums -fshort-double -fvolatile
  230.  
  231.  
  232. OOVVEERRAALLLL OOPPTTIIOONNSS
  233.        --xx _l_a_n_g_u_a_g_e
  234.               Specify explicitly the _l_a_n_g_u_a_g_e for  the  following
  235.               input  files  (rather than choosing a default based
  236.               on the file name suffix) .  This option applies  to
  237.               all  following  input files until the next `--xx' op-
  238.               tion.   Possible  values  of  _l_a_n_g_u_a_g_e   are   `cc',
  239.               `oobbjjeeccttiivvee--cc',   `cc--hheeaaddeerr',  `cc++++',  `ccpppp--oouuttppuutt',
  240.               `aasssseemmbblleerr', and `aasssseemmbblleerr--wwiitthh--ccpppp'.
  241.  
  242.        --xx nnoonnee
  243.               Turn off any specification of a language,  so  that
  244.               subsequent  files  are  handled  according to their
  245.               file name suffixes (as they are  if  `--xx'  has  not
  246.               been used at all).
  247.  
  248.  
  249.        If you want only some of the four stages (preprocess, com-
  250.        pile, assemble, link), you can use `--xx' (or filename  suf-
  251.        fixes)  to tell ggcccc where to start, and one of the options
  252.        `--cc', `--SS', or `--EE' to say where ggcccc  is  to  stop.   Note
  253.        that  some  combinations (for example, `--xx ccpppp--oouuttppuutt --EE')
  254.        instruct ggcccc to do nothing at all.
  255.  
  256.        --cc     Compile or assemble the source files,  but  do  not
  257.               link.  The compiler output is an object file corre-
  258.               sponding to each source file.
  259.  
  260.  
  261.  
  262. GNU Tools                   28may1992                           4
  263.  
  264.  
  265.  
  266.  
  267.  
  268. GCC(1)                      GNU Tools                      GCC(1)
  269.  
  270.  
  271.               By default, GCC makes the object file  name  for  a
  272.               source  file  by  replacing  the suffix `..cc', `..ii',
  273.               `..ss', etc., with `..oo'.  Use --oo  to  select  another
  274.               name.
  275.  
  276.               GCC  ignores  any  unrecognized  input files (those
  277.               that do not require compilation or  assembly)  with
  278.               the --cc option.
  279.  
  280.        --SS     Stop  after the stage of compilation proper; do not
  281.               assemble.  The output is an assembler code file for
  282.               each non-assembler input file specified.
  283.  
  284.               By default, GCC makes the assembler file name for a
  285.               source file by replacing  the  suffix  `..cc',  `..ii',
  286.               etc., with `..ss'.  Use --oo to select another name.
  287.  
  288.  
  289.               GCC ignores any input files that don't require com-
  290.               pilation.
  291.  
  292.        --EE     Stop after the preprocessing stage; do not run  the
  293.               compiler proper.  The output is preprocessed source
  294.               code, which is sent to the standard output.
  295.  
  296.               GCC ignores input files which don't require prepro-
  297.               cessing.
  298.  
  299.        --oo _f_i_l_e
  300.                 Place  output in file _f_i_l_e.  This applies regard-
  301.               less to whatever sort of output GCC  is  producing,
  302.               whether  it  be an executable file, an object file,
  303.               an assembler file or preprocessed C code.
  304.  
  305.               Since only one output file  can  be  specified,  it
  306.               does not make sense to use `--oo' when compiling more
  307.               than one input file, unless you  are  producing  an
  308.               executable file as output.
  309.  
  310.               If  you  do not specify `--oo', the default is to put
  311.               an executable file in `aa..oouutt', the object file  for
  312.               `_s_o_u_r_c_e._s_u_f_f_i_x'  in  `_s_o_u_r_c_e.o', its assembler file
  313.               in `_s_o_u_r_c_e.s', and all  preprocessed  C  source  on
  314.               standard output.
  315.  
  316.        --vv     Print  (on standard error output) the commands exe-
  317.               cuted to run the stages of compilation.  Also print
  318.               the  version  number of the compiler driver program
  319.               and of the preprocessor and the compiler proper.
  320.  
  321.        --ppiippee  Use pipes rather than temporary files for  communi-
  322.               cation  between  the various stages of compilation.
  323.               This fails to work on some systems where the assem-
  324.               bler cannot read from a pipe; but the GNU assembler
  325.  
  326.  
  327.  
  328. GNU Tools                   28may1992                           5
  329.  
  330.  
  331.  
  332.  
  333.  
  334. GCC(1)                      GNU Tools                      GCC(1)
  335.  
  336.  
  337.               has no trouble.
  338.  
  339.  
  340.  
  341. LLAANNGGUUAAGGEE OOPPTTIIOONNSS
  342.        The following options control the dialect of  C  that  the
  343.        compiler accepts:
  344.  
  345.        --aannssii  _S_u_p_p_o_r_t _a_l_l _A_N_S_I _s_t_a_n_d_a_r_d _C _p_r_o_g_r_a_m_s_.
  346.  
  347.               _T_h_i_s  _t_u_r_n_s  _o_f_f _c_e_r_t_a_i_n _f_e_a_t_u_r_e_s _o_f _G_N_U _C _t_h_a_t _a_r_e
  348.               _i_n_c_o_m_p_a_t_i_b_l_e _w_i_t_h ANSI C, such as the  aassmm,  iinnlliinnee
  349.               and  ttyyppeeooff keywords, and predefined macros such as
  350.               uunniixx and vvaaxx that identify the type of  system  you
  351.               are  using.   It  also  enables the undesirable and
  352.               rarely used ANSI trigraph feature,  and  makes  the
  353.               preprocessor accept `$$' as part of identifiers.
  354.  
  355.               The   alternate  keywords  ____aassmm____,  ____eexxtteennssiioonn____,
  356.               ____iinnlliinnee____ and ____ttyyppeeooff____ continue to work  despite
  357.               `--aannssii'.  You would not want to use them in an ANSI
  358.               C program, of course, but it is useful to put  them
  359.               in  header files that might be included in compila-
  360.               tions  done  with  `--aannssii'.   Alternate  predefined
  361.               macros such as ____uunniixx____ and ____vvaaxx____ are also avail-
  362.               able, with or without `--aannssii'.
  363.  
  364.               The `--aannssii' option does not cause non-ANSI programs
  365.               to be rejected gratuitously.  For that, `--ppeeddaannttiicc'
  366.               is required in addition to `--aannssii'.
  367.  
  368.               The preprocessor predefines a macro ____SSTTRRIICCTT__AANNSSII____
  369.               when you use the `--aannssii' option.  Some header files
  370.               may notice this macro and  refrain  from  declaring
  371.               certain  functions  or defining certain macros that
  372.               the ANSI standard doesn't  call  for;  this  is  to
  373.               avoid  interfering with any programs that might use
  374.               these names for other things.
  375.  
  376.        --ffnnoo--aassmm
  377.               Do not recognize aassmm, iinnlliinnee or ttyyppeeooff  as  a  key-
  378.               word.  These words may then be used as identifiers.
  379.               You can use ____aassmm____, ____iinnlliinnee____ and ____ttyyppeeooff____  in-
  380.               stead.  `--aannssii' implies `--ffnnoo--aassmm'.
  381.  
  382.        --ffnnoo--bbuuiillttiinn
  383.               _(_I_g_n_o_r_e_d _f_o_r _C_+_+_._)  Don't recognize non-ANSI built-
  384.               in functions.  `--aannssii' also has this  effect.  Cur-
  385.               rently, the only function affected is aallllooccaa.
  386.  
  387.        --ffnnoo--ssttrriicctt--pprroottoottyyppee
  388.               _(_C_+_+  _o_n_l_y_._)  Consider the declaration iinntt ffoooo (());;.
  389.               In C++, this means that the function ffoooo  takes  no
  390.               arguments.    In  ANSI  C,  this  is  declared  iinntt
  391.  
  392.  
  393.  
  394. GNU Tools                   28may1992                           6
  395.  
  396.  
  397.  
  398.  
  399.  
  400. GCC(1)                      GNU Tools                      GCC(1)
  401.  
  402.  
  403.               ffoooo((vvooiidd));;.  With the flag `--ffnnoo--ssttrriicctt--pprroottoottyyppee',
  404.               declaring functions with no arguments is equivalent
  405.               to declaring its argument list to be untyped, i.e.,
  406.               iinntt ffoooo (());; is equivalent to saying iinntt ffoooo ((......));;.
  407.  
  408.        --ttrriiggrraapphhss
  409.               Support ANSI C trigraphs.  The `--aannssii'  option  im-
  410.               plies `--ttrriiggrraapphhss'.
  411.  
  412.        --ttrraaddiittiioonnaall
  413.               Attempt  to  support  some aspects of traditional C
  414.               compilers.  For details, see the GNU C Manual;  the
  415.               duplicate  list  here  has  been deleted so that we
  416.               won't get complaints when it is out of date.
  417.  
  418.               But one note  about  C++  programs  only  (not  C).
  419.               `--ttrraaddiittiioonnaall'  has  one additional effect for C++:
  420.               assignment to tthhiiss is permitted.  This is the  same
  421.               as the effect of `--fftthhiiss--iiss--vvaarriiaabbllee'.
  422.  
  423.        --ttrraaddiittiioonnaall--ccpppp
  424.               Attempt  to  support  some aspects of traditional C
  425.               preprocessors.   This  includes  the   items   that
  426.               specifically  mention  the  preprocessor above, but
  427.               none of the other effects of `--ttrraaddiittiioonnaall'.
  428.  
  429.        --ffddoollllaarrss--iinn--iiddeennttiiffiieerrss
  430.               _(_C_+_+ _o_n_l_y_._)  Permit the use of `$$' in  identifiers.
  431.               (For GNU C, this is the default, and you can forbid
  432.               it with `--aannssii'.)  Traditional C allowed the  char-
  433.               acter  `$$' to form part of identifiers; by default,
  434.               GNU C also allows this.  However,  ANSI  C  forbids
  435.               `$$'  in identifiers, and GNU C++ also forbids it by
  436.               default on most platforms (though on some platforms
  437.               it's enabled by default for GNU C++ as well).
  438.  
  439.        --ffeennuumm--iinntt--eeqquuiivv
  440.               _(_C_+_+  _o_n_l_y_._)  Normally GNU C++ allows conversion of
  441.               eennuumm to iinntt, but not the  other  way  around.   Use
  442.               this option if you want GNU C++ to allow conversion
  443.               of iinntt to eennuumm as well.
  444.  
  445.        --ffaallll--vviirrttuuaall
  446.               _(_C_+_+ _o_n_l_y_._)  When you use the `--ffaallll--vviirrttuuaall',  all
  447.               member  functions (except for constructor functions
  448.               and new/delete member operators)  declared  in  the
  449.               same  class  with a ``method-call'' operator method
  450.               are treated  as  virtual  functions  of  the  given
  451.               class.   In  effect,  all  of  these methods become
  452.               ``implicitly virtual.''
  453.  
  454.               This does _n_o_t mean that all calls to these  methods
  455.               will  be made through the internal table of virtual
  456.               functions.   There  are  some  circumstances  under
  457.  
  458.  
  459.  
  460. GNU Tools                   28may1992                           7
  461.  
  462.  
  463.  
  464.  
  465.  
  466. GCC(1)                      GNU Tools                      GCC(1)
  467.  
  468.  
  469.               which  it is obvious that a call to a given virtual
  470.               function can be made directly, and in  these  cases
  471.               the calls still go direct.
  472.  
  473.               The  effect of making all methods of a class with a
  474.               declared `ooppeerraattoorr-->>(())(())' implicitly virtual  using
  475.               `--ffaallll--vviirrttuuaall' extends also to all non-constructor
  476.               methods of any class derived from such a class.
  477.  
  478.        --ffccoonndd--mmiissmmaattcchh
  479.               Allow conditional expressions with mismatched types
  480.               in  the  second  and third arguments.  The value of
  481.               such an expression is void.
  482.  
  483.        --fftthhiiss--iiss--vvaarriiaabbllee
  484.               _(_C_+_+ _o_n_l_y_._)  The incorporation of user-defined free
  485.               store  management  into  C++ has made assignment to
  486.               tthhiiss an anachronism.  Therefore, by default GNU C++
  487.               treats  the  type  of  tthhiiss in a member function of
  488.               ccllaassss XX to be XX **ccoonnsstt.  In other words, it is  il-
  489.               legal to assign to tthhiiss within a class member func-
  490.               tion.  However, for  backwards  compatibility,  you
  491.               can    invoke    the    old   behavior   by   using
  492.               `--fftthhiiss--iiss--vvaarriiaabbllee'.
  493.  
  494.        --ffuunnssiiggnneedd--cchhaarr
  495.               Let the type cchhaarr be unsigned, like uunnssiiggnneedd  cchhaarr.
  496.  
  497.               Each  kind  of  machine has a default for what cchhaarr
  498.               should be.  It is either like uunnssiiggnneedd cchhaarr by  de-
  499.               fault or like ssiiggnneedd cchhaarr by default.
  500.  
  501.               Ideally,  a  portable  program  should  always  use
  502.               ssiiggnneedd cchhaarr or uunnssiiggnneedd cchhaarr when it depends on the
  503.               signedness  of  an  object.  But many programs have
  504.               been written to use plain cchhaarr and expect it to  be
  505.               signed,  or  expect it to be unsigned, depending on
  506.               the machines they were written for.   This  option,
  507.               and  its  inverse, let you make such a program work
  508.               with the opposite default.
  509.  
  510.               The type cchhaarr is always a distinct type  from  each
  511.               of  ssiiggnneedd  cchhaarr and uunnssiiggnneedd cchhaarr, even though its
  512.               behavior is always just like one of those two.
  513.  
  514.  
  515.        --ffssiiggnneedd--cchhaarr
  516.               Let the type cchhaarr be signed, like ssiiggnneedd cchhaarr.
  517.  
  518.               Note     that     this     is     equivalent     to
  519.               `--ffnnoo--uunnssiiggnneedd--cchhaarr', which is the negative form of
  520.               `--ffuunnssiiggnneedd--cchhaarr'.  Likewise, `--ffnnoo--ssiiggnneedd--cchhaarr' is
  521.               equivalent to `--ffuunnssiiggnneedd--cchhaarr'.
  522.  
  523.  
  524.  
  525.  
  526. GNU Tools                   28may1992                           8
  527.  
  528.  
  529.  
  530.  
  531.  
  532. GCC(1)                      GNU Tools                      GCC(1)
  533.  
  534.  
  535.        --ffssiiggnneedd--bbiittffiieellddss
  536.  
  537.        --ffuunnssiiggnneedd--bbiittffiieellddss
  538.  
  539.        --ffnnoo--ssiiggnneedd--bbiittffiieellddss
  540.  
  541.        --ffnnoo--uunnssiiggnneedd--bbiittffiieellddss
  542.               These  options control whether a bitfield is signed
  543.               or  unsigned,  when  declared  with   no   explicit
  544.               `ssiiggnneedd' or `uunnssiiggnneedd' qualifier.  By default, such
  545.               a bitfield is signed, because this  is  consistent:
  546.               the  basic  integer  types  such  as iinntt are signed
  547.               types.
  548.  
  549.               However, when you specify `--ttrraaddiittiioonnaall', bitfields
  550.               are all unsigned no matter what.
  551.  
  552.        --ffwwrriittaabbllee--ssttrriinnggss
  553.               Store string constants in the writable data segment
  554.               and don't uniquize them.  This is for compatibility
  555.               with  old programs which assume they can write into
  556.               string constants.  `--ttrraaddiittiioonnaall' also has this ef-
  557.               fect.
  558.  
  559.               Writing  into  string constants is a very bad idea;
  560.               ``constants'' should be constant.
  561.  
  562.  
  563.  
  564. PPRREEPPRROOCCEESSSSOORR OOPPTTIIOONNSS
  565.        These options control the C preprocessor, which is run  on
  566.        each C source file before actual compilation.
  567.  
  568.        If  you  use the `--EE' option, GCC does nothing except pre-
  569.        processing.  Some of these options make sense only togeth-
  570.        er with `--EE' because they cause the preprocessor output to
  571.        be unsuitable for actual compilation.
  572.  
  573.        --ii _f_i_l_e
  574.                Process _f_i_l_e as input,  discarding  the  resulting
  575.               output,  before  processing the regular input file.
  576.               Because the output generated from _f_i_l_e is  discard-
  577.               ed,  the  only  effect  of `--ii _f_i_l_e' is to make the
  578.               macros defined in _f_i_l_e available  for  use  in  the
  579.               main  input.   The  preprocessor evaluates any `--DD'
  580.               and `--UU' options on the command  line  before  pro-
  581.               cessing `--ii' _f_i_l_e.
  582.  
  583.        --nnoossttddiinncc
  584.               Do  not  search the standard system directories for
  585.               header files.  Only the directories you have speci-
  586.               fied  with `--II' options (and the current directory,
  587.               if appropriate) are searched.
  588.  
  589.  
  590.  
  591.  
  592. GNU Tools                   28may1992                           9
  593.  
  594.  
  595.  
  596.  
  597.  
  598. GCC(1)                      GNU Tools                      GCC(1)
  599.  
  600.  
  601.               By using both `--nnoossttddiinncc' and `--II--', you can  limit
  602.               the include-file search file to only those directo-
  603.               ries you specify explicitly.
  604.  
  605.        --uunnddeeff Do not predefine any nonstandard macros.   (Includ-
  606.               ing architecture flags).
  607.  
  608.        --EE     Run  only the C preprocessor.  Preprocess all the C
  609.               source files specified and output  the  results  to
  610.               standard output or to the specified output file.
  611.  
  612.        --CC     Tell  the  preprocessor  not  to  discard comments.
  613.               Used with the `--EE' option.
  614.  
  615.        --PP     Tell the preprocessor not to generate `##lliinnee'  com-
  616.               mands.  Used with the `--EE' option.
  617.  
  618.        --MM     Tell the preprocessor to output a rule suitable for
  619.               mmaakkee describing the  dependencies  of  each  object
  620.               file.   For each source file, the preprocessor out-
  621.               puts one mmaakkee-rule whose target is the object  file
  622.               name  for  that  source file and whose dependencies
  623.               are all the files `##iinncclluuddee'd in it.  This rule may
  624.               be  a single line or may be continued with `\\'-new-
  625.               line if it is long.  The list of rules  is  printed
  626.               on  standard  output  instead of the preprocessed C
  627.               program.
  628.  
  629.               `--MM' implies `--EE'.
  630.  
  631.        --MMMM    Like `--MM' but the output  mentions  only  the  user
  632.               header  files included with `##iinncclluuddee _f_i_l_e"'.  Sys-
  633.               tem header files included  with  `##iinncclluuddee  <<_f_i_l_e>'
  634.               are omitted.
  635.  
  636.        --MMDD    Like `--MM' but the dependency information is written
  637.               to files with names made  by  replacing  `..cc'  with
  638.               `..dd'  at  the end of the input file names.  This is
  639.               in   addition   to   compiling    the    file    as
  640.               specified--`--MMDD' does not inhibit ordinary compila-
  641.               tion the way `--MM' does.
  642.  
  643.               The Mach utility `mmdd' can be used to merge the `..dd'
  644.               files  into  a  single dependency file suitable for
  645.               using with the `mmaakkee' command.
  646.  
  647.        --MMMMDD   Like `--MMDD' except mention only user  header  files,
  648.               not system header files.
  649.  
  650.        --HH     Print  the  name of each header file used, in addi-
  651.               tion to other normal activities.
  652.  
  653.        --DD_m_a_c_r_o
  654.               Define macro _m_a_c_r_o with the string `11' as its defi-
  655.  
  656.  
  657.  
  658. GNU Tools                   28may1992                          10
  659.  
  660.  
  661.  
  662.  
  663.  
  664. GCC(1)                      GNU Tools                      GCC(1)
  665.  
  666.  
  667.               nition.
  668.  
  669.        --DD_m_a_c_r_o==_d_e_f_n
  670.               Define  macro  _m_a_c_r_o  as  _d_e_f_n.    All instances of
  671.               `--DD' on the command line are processed  before  any
  672.               `--UU' or `--ii' options.
  673.  
  674.        --UU_m_a_c_r_o
  675.               Undefine  macro  _m_a_c_r_o.  `--UU' options are evaluated
  676.               after all `--DD' options, but  before  any  `--ii'  op-
  677.               tions.
  678.  
  679.        --ddMM    Tell  the preprocessor to output only a list of the
  680.               macro definitions that are in effect at the end  of
  681.               preprocessing.  Used with the `--EE' option.
  682.  
  683.        --ddDD    Tell  the  preprocessing  to pass all macro defini-
  684.               tions into the output, in their proper sequence  in
  685.               the rest of the output.
  686.  
  687.        --ddNN    Like `--ddDD' except that the macro arguments and con-
  688.               tents are omitted.  Only `##ddeeffiinnee _n_a_m_e' is included
  689.               in the output.
  690.  
  691.  
  692.  
  693. LLIINNKKEERR OOPPTTIIOONNSS
  694.        These  options  come into play when the compiler links ob-
  695.        ject files into an executable output file.  They are mean-
  696.        ingless if the compiler is not doing a link step.
  697.  
  698.        _o_b_j_e_c_t_-_f_i_l_e_-_n_a_m_e
  699.               A  file  name that does not end in a special recog-
  700.               nized suffix is considered to name an  object  file
  701.               or  library.   (Object files are distinguished from
  702.               libraries by the linker according to the file  con-
  703.               tents.)   If  GCC  does  a  link step, these object
  704.               files are used as input to the linker.
  705.  
  706.        --ll_l_i_b_r_a_r_y
  707.                Use the library named _l_i_b_r_a_r_y when linking.
  708.  
  709.               The linker searches a standard list of  directories
  710.               for  the  library,  which  is actually a file named
  711.               `lliibb_l_i_b_r_a_r_y.a'.  The linker then uses this file  as
  712.               if it had been specified precisely by name.
  713.  
  714.               The  directories  searched include several standard
  715.               system directories plus any that you  specify  with
  716.               `--LL'.
  717.  
  718.               Normally  the  files  found  this  way  are library
  719.               files--archive  files  whose  members  are   object
  720.               files.  The linker handles an archive file by scan-
  721.  
  722.  
  723.  
  724. GNU Tools                   28may1992                          11
  725.  
  726.  
  727.  
  728.  
  729.  
  730. GCC(1)                      GNU Tools                      GCC(1)
  731.  
  732.  
  733.               ning through it for members  which  define  symbols
  734.               that  have  so far been referenced but not defined.
  735.               However, if the linker  finds  an  ordinary  object
  736.               file  rather  than  a  library,  the object file is
  737.               linked in the usual fashion.  The  only  difference
  738.               between  using an `--ll' option and specifying a file
  739.               name is that `--ll' surrounds _l_i_b_r_a_r_y with `lliibb'  and
  740.               `..aa' and searches several directories.
  741.  
  742.        --nnoossttddlliibb
  743.               Don't use the standard system libraries and startup
  744.               files when linking.  Only  the  files  you  specify
  745.               will be passed to the linker.
  746.  
  747.        --ssttaattiicc
  748.               On  systems that support dynamic linking, this pre-
  749.               vents linking with the shared libraries.  On  other
  750.               systems, this option has no effect.
  751.  
  752.  
  753.  
  754. DDIIRREECCTTOORRYY OOPPTTIIOONNSS
  755.        These  options  specify  directories  to search for header
  756.        files, for libraries and for parts of the compiler:
  757.  
  758.        --II_d_i_r   Append directory _d_i_r to the  list  of  directories
  759.               searched for include files.
  760.  
  761.        --II--    Any  directories  you specify with `--II' options be-
  762.               fore the `--II--' option are  searched  only  for  the
  763.               case  of  `##iinncclluuddee  ""_f_i_l_e""'; they are not searched
  764.               for `##iinncclluuddee <<_f_i_l_e>'.
  765.  
  766.               If additional directories are specified  with  `--II'
  767.               options  after  the  `--II--',  these  directories are
  768.               searched for all `##iinncclluuddee' directives.  (Ordinari-
  769.               ly _a_l_l `--II' directories are used this way.)
  770.  
  771.               In  addition,  the `--II--' option inhibits the use of
  772.               the current directory (where the current input file
  773.               came  from) as the first search directory for `##iinn--
  774.               cclluuddee ""_f_i_l_e""'.  There is no way  to  override  this
  775.               effect  of  `--II--'.   With  `--II..'  you  can  specify
  776.               searching the directory which was current when  the
  777.               compiler was invoked.  That is not exactly the same
  778.               as what the preprocessor does by default, but it is
  779.               often satisfactory.
  780.  
  781.               `--II--' does not inhibit the use of the standard sys-
  782.               tem directories for header files.  Thus, `--II--'  and
  783.               `--nnoossttddiinncc' are independent.
  784.  
  785.        --LL_d_i_r   Add directory _d_i_r to the list of directories to be
  786.               searched for `--ll'.
  787.  
  788.  
  789.  
  790. GNU Tools                   28may1992                          12
  791.  
  792.  
  793.  
  794.  
  795.  
  796. GCC(1)                      GNU Tools                      GCC(1)
  797.  
  798.  
  799.        --BB_p_r_e_f_i_x
  800.                This option specifies where to find  the  executa-
  801.               bles,  libraries and data files of the compiler it-
  802.               self.
  803.  
  804.               The compiler driver program runs one or more of the
  805.               subprograms  `ccpppp', `cccc11' (or, for C++, `cccc11pplluuss'),
  806.               `aass' and `lldd'.  It tries _p_r_e_f_i_x  as  a  prefix  for
  807.               each program it tries to run, both with and without
  808.               `_m_a_c_h_i_n_e/_v_e_r_s_i_o_n/'.
  809.  
  810.               For each subprogram to be run, the compiler  driver
  811.               first  tries the `--BB' prefix, if any.  If that name
  812.               is not found, or if `--BB'  was  not  specified,  the
  813.               driver  tries  two  standard  prefixes,  which  are
  814.               `//uussrr//lliibb//ggcccc//' and `//uussrr//llooccaall//lliibb//ggcccc--lliibb//'.   If
  815.               neither  of  those  results  in a file name that is
  816.               found, the compiler driver searches for the unmodi-
  817.               fied  program name, using the directories specified
  818.               in your `PPAATTHH' environment variable.
  819.  
  820.               The  run-time  support  file  `lliibbggcccc..aa'  is   also
  821.               searched  for using the `--BB' prefix, if needed.  If
  822.               it is not found there, the  two  standard  prefixes
  823.               above are tried, and that is all.  The file is left
  824.               out of the link if it is not found by those  means.
  825.               Most  of  the time, on most machines, `lliibbggcccc..aa' is
  826.               not actually necessary.
  827.  
  828.               You can get a similar result from  the  environment
  829.               variable  GGCCCC__EEXXEECC__PPRREEFFIIXX;  if  it  is defined, its
  830.               value is used as a prefix in the same way.  If both
  831.               the  `--BB'  option  and the GGCCCC__EEXXEECC__PPRREEFFIIXX variable
  832.               are present, the `--BB' option is used first and  the
  833.               environment variable value second.
  834.  
  835.  
  836.  
  837. WWAARRNNIINNGG OOPPTTIIOONNSS
  838.        Warnings are diagnostic messages that report constructions
  839.        which are not inherently erroneous but which are risky  or
  840.        suggest there may have been an error.
  841.  
  842.        These  options  control  the  amount and kinds of warnings
  843.        produced by GNU CC:
  844.  
  845.        --ffssyynnttaaxx--oonnllyy
  846.               Check the code for syntax errors,  but  don't  emit
  847.               any output.
  848.  
  849.        --ww     Inhibit all warning messages.
  850.  
  851.        --ppeeddaannttiicc
  852.               Issue  all  the  warnings  demanded  by strict ANSI
  853.  
  854.  
  855.  
  856. GNU Tools                   28may1992                          13
  857.  
  858.  
  859.  
  860.  
  861.  
  862. GCC(1)                      GNU Tools                      GCC(1)
  863.  
  864.  
  865.               standard C; reject all programs that use  forbidden
  866.               extensions.
  867.  
  868.               Valid ANSI standard C programs should compile prop-
  869.               erly with or without this option (though a rare few
  870.               will  require  `--aannssii').  However, without this op-
  871.               tion, certain GNU extensions and traditional C fea-
  872.               tures  are  supported  as  well.  With this option,
  873.               they are rejected.  There is no reason to _u_s_e  this
  874.               option; it exists only to satisfy pedants.
  875.  
  876.               `--ppeeddaannttiicc' does not cause warning messages for use
  877.               of the alternate keywords whose names begin and end
  878.               with  `____'.  Pedantic warnings are also disabled in
  879.               the expression that follows ____eexxtteennssiioonn____.   Howev-
  880.               er,  only  system header files should use these es-
  881.               cape  routes;  application  programs  should  avoid
  882.               them.
  883.  
  884.        --ppeeddaannttiicc--eerrrroorrss
  885.               Like  `--ppeeddaannttiicc',  except that errors are produced
  886.               rather than warnings.
  887.  
  888.        --WW     Print extra warning messages for these events:
  889.  
  890.           o   A nonvolatile automatic variable might  be  changed
  891.               by  a call to lloonnggjjmmpp.  These warnings are possible
  892.               only in optimizing compilation.
  893.  
  894.               The compiler sees only the  calls  to  sseettjjmmpp.   It
  895.               cannot  know where lloonnggjjmmpp will be called; in fact,
  896.               a signal handler could call it at any point in  the
  897.               code.  As a result, you may get a warning even when
  898.               there is in fact no problem because lloonnggjjmmpp  cannot
  899.               in  fact be called at the place which would cause a
  900.               problem.
  901.  
  902.           o   A function can return either with or without a val-
  903.               ue.   (Falling  off the end of the function body is
  904.               considered returning without a value.)   For  exam-
  905.               ple, this function would evoke such a warning:
  906.  
  907.               foo (a)
  908.               {
  909.                 if (a > 0)
  910.                   return a;
  911.               }
  912.  
  913.  
  914.               Spurious warnings can occur because GNU CC does not
  915.               realize that certain functions (including aabboorrtt and
  916.               lloonnggjjmmpp) will never return.
  917.  
  918.           o   An expression-statement contains no side effects.
  919.  
  920.  
  921.  
  922. GNU Tools                   28may1992                          14
  923.  
  924.  
  925.  
  926.  
  927.  
  928. GCC(1)                      GNU Tools                      GCC(1)
  929.  
  930.  
  931.           o   An unsigned value is compared against zero with `>>'
  932.               or `<<=='.
  933.  
  934.  
  935.        --WWiimmpplliicciitt
  936.               Warn whenever a function or parameter is implicitly
  937.               declared.
  938.  
  939.        --WWrreettuurrnn--ttyyppee
  940.               Warn  whenever a function is defined with a return-
  941.               type that defaults to iinntt.  Also warn about any rree--
  942.               ttuurrnn  statement  with no return-value in a function
  943.               whose return-type is not vvooiidd.
  944.  
  945.        --WWuunnuusseedd
  946.               Warn whenever a local variable is unused aside from
  947.               its  declaration,  whenever  a function is declared
  948.               static but never defined, and whenever a  statement
  949.               computes a result that is explicitly not used.
  950.  
  951.        --WWsswwiittcchh
  952.               Warn  whenever  a  sswwiittcchh statement has an index of
  953.               enumeral type and lacks a ccaassee for one or  more  of
  954.               the named codes of that enumeration.  (The presence
  955.               of a ddeeffaauulltt label prevents  this  warning.)   ccaassee
  956.               labels  outside  the enumeration range also provoke
  957.               warnings when this option is used.
  958.  
  959.        --WWccoommmmeenntt
  960.               Warn whenever a comment-start sequence `//**' appears
  961.               in a comment.
  962.  
  963.        --WWttrriiggrraapphhss
  964.               Warn  if  any  trigraphs  are encountered (assuming
  965.               they are enabled).
  966.  
  967.        --WWffoorrmmaatt
  968.               Check calls to pprriinnttff and ssccaannff, etc., to make sure
  969.               that  the arguments supplied have types appropriate
  970.               to the format string specified.
  971.  
  972.        --WWuunniinniittiiaalliizzeedd
  973.               An automatic variable is used without  first  being
  974.               initialized.
  975.  
  976.               These warnings are possible only in optimizing com-
  977.               pilation, because they require data  flow  informa-
  978.               tion that is computed only when optimizing.  If you
  979.               don't specify `--OO',  you  simply  won't  get  these
  980.               warnings.
  981.  
  982.               These  warnings  occur  only for variables that are
  983.               candidates  for  register  allocation.   Therefore,
  984.               they  do  not occur for a variable that is declared
  985.  
  986.  
  987.  
  988. GNU Tools                   28may1992                          15
  989.  
  990.  
  991.  
  992.  
  993.  
  994. GCC(1)                      GNU Tools                      GCC(1)
  995.  
  996.  
  997.               vvoollaattiillee, or whose address is taken, or whose  size
  998.               is  other  than  1, 2, 4 or 8 bytes.  Also, they do
  999.               not occur for structures, unions  or  arrays,  even
  1000.               when they are in registers.
  1001.  
  1002.               Note  that there may be no warning about a variable
  1003.               that is used only to compute a value that itself is
  1004.               never used, because such computations may be delet-
  1005.               ed by data flow analysis before  the  warnings  are
  1006.               printed.
  1007.  
  1008.               These  warnings are made optional because GNU CC is
  1009.               not smart enough to see all  the  reasons  why  the
  1010.               code  might be correct despite appearing to have an
  1011.               error.  Here is one example of how this can happen:
  1012.  
  1013.  
  1014.               {
  1015.                 int x;
  1016.                 switch (y)
  1017.                   {
  1018.                   case 1: x = 1;
  1019.                     break;
  1020.                   case 2: x = 4;
  1021.                     break;
  1022.                   case 3: x = 5;
  1023.                   }
  1024.                 foo (x);
  1025.               }
  1026.  
  1027.  
  1028.  
  1029.               If  the  value  of yy is always 1, 2 or 3, then xx is
  1030.               always initialized, but GNU CC doesn't  know  this.
  1031.               Here is another common case:
  1032.  
  1033.  
  1034.               {
  1035.                 int save_y;
  1036.                 if (change_y) save_y = y, y = new_y;
  1037.                 ...
  1038.                 if (change_y) y = save_y;
  1039.               }
  1040.  
  1041.  
  1042.  
  1043.               This  has  no bug because ssaavvee__yy is used only if it
  1044.               is set.
  1045.  
  1046.               Some spurious warnings can be avoided  if  you  de-
  1047.               clare  as  vvoollaattiillee  all the functions you use that
  1048.               never return.
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054. GNU Tools                   28may1992                          16
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060. GCC(1)                      GNU Tools                      GCC(1)
  1061.  
  1062.  
  1063.        --WWppaarreenntthheesseess
  1064.               Warn if parentheses are  omitted  in  certain  con-
  1065.               texts.
  1066.  
  1067.        --WWaallll  All  of the above `--WW' options combined.  These are
  1068.               all the options which pertain to usage that we rec-
  1069.               ommend  avoiding  and  that  we  believe is easy to
  1070.               avoid, even in conjunction with macros.
  1071.  
  1072.  
  1073.        The remaining `--WW......' options are not implied  by  `--WWaallll'
  1074.        because  they  warn  about  constructions that we consider
  1075.        reasonable to use, on occasion, in clean programs.
  1076.  
  1077.        --WWttrraaddiittiioonnaall
  1078.               Warn about certain constructs that  behave  differ-
  1079.               ently in traditional and ANSI C.
  1080.  
  1081.           o   Macro  arguments  occurring within string constants
  1082.               in the macro body.  These would substitute the  ar-
  1083.               gument  in  traditional C, but are part of the con-
  1084.               stant in ANSI C.
  1085.  
  1086.           o   A function declared external in one block and  then
  1087.               used after the end of the block.
  1088.  
  1089.           o   A sswwiittcchh statement has an operand of type lloonngg.
  1090.  
  1091.  
  1092.        --WWsshhaaddooww
  1093.               Warn  whenever a local variable shadows another lo-
  1094.               cal variable.
  1095.  
  1096.        --WWiidd--ccllaasshh--_l_e_n
  1097.                Warn whenever two distinct  identifiers  match  in
  1098.               the  first  _l_e_n characters.  This may help you pre-
  1099.               pare a program that will compile with certain obso-
  1100.               lete, brain-damaged compilers.
  1101.  
  1102.        --WWppooiinntteerr--aarriitthh
  1103.               Warn about anything that depends on the ``size of''
  1104.               a function type or of vvooiidd.  GNU  C  assigns  these
  1105.               types  a size of 1, for convenience in calculations
  1106.               with vvooiidd ** pointers and pointers to functions.
  1107.  
  1108.        --WWccaasstt--qquuaall
  1109.               Warn whenever a pointer is cast so as to  remove  a
  1110.               type  qualifier from the target type.  For example,
  1111.               warn if a ccoonnsstt cchhaarr ** is cast to an ordinary  cchhaarr
  1112.               **.
  1113.  
  1114.        --WWccaasstt--aalliiggnn
  1115.               Warn  whenever  a pointer is cast such that the re-
  1116.               quired alignment of the target is  increased.   For
  1117.  
  1118.  
  1119.  
  1120. GNU Tools                   28may1992                          17
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126. GCC(1)                      GNU Tools                      GCC(1)
  1127.  
  1128.  
  1129.               example,  warn  if  a cchhaarr ** is cast to an iinntt ** on
  1130.               machines where integers can  only  be  accessed  at
  1131.               two- or four-byte boundaries.
  1132.  
  1133.        --WWwwrriittee--ssttrriinnggss
  1134.               Give  string  constants the type ccoonnsstt cchhaarr[[_l_e_n_g_t_h]
  1135.               so that copying the address of one into a non-ccoonnsstt
  1136.               cchhaarr  ** pointer will get a warning.  These warnings
  1137.               will help you find at compile time  code  that  can
  1138.               try  to  write  into a string constant, but only if
  1139.               you have been very careful  about  using  ccoonnsstt  in
  1140.               declarations  and  prototypes.   Otherwise, it will
  1141.               just be a nuisance; this is why  we  did  not  make
  1142.               `--WWaallll' request these warnings.
  1143.  
  1144.        --WWccoonnvveerrssiioonn
  1145.               Warn  if  a prototype causes a type conversion that
  1146.               is different from what would happen to the same ar-
  1147.               gument  in  the  absence  of a prototype.  This in-
  1148.               cludes conversions of fixed point to  floating  and
  1149.               vice  versa,  and conversions changing the width or
  1150.               signedness of a fixed point  argument  except  when
  1151.               the same as the default promotion.
  1152.  
  1153.        --WWaaggggrreeggaattee--rreettuurrnn
  1154.               Warn  if  any  functions  that return structures or
  1155.               unions are defined or called.  (In languages  where
  1156.               you  can return an array, this also elicits a warn-
  1157.               ing.)
  1158.  
  1159.        --WWssttrriicctt--pprroottoottyyppeess
  1160.               Warn if a function is declared or  defined  without
  1161.               specifying the argument types.  (An old-style func-
  1162.               tion definition is permitted without a  warning  if
  1163.               preceded by a declaration which specifies the argu-
  1164.               ment types.)
  1165.  
  1166.        --WWmmiissssiinngg--pprroottoottyyppeess
  1167.               Warn if a global function is defined without a pre-
  1168.               vious  prototype  declaration.  This warning is is-
  1169.               sued even if the definition itself provides a  pro-
  1170.               totype.  The aim is to detect global functions that
  1171.               fail to be declared in header files.
  1172.  
  1173.        --WWeennuumm--ccllaasshh
  1174.               _(_C_+_+ _o_n_l_y_._)  Warn when converting between different
  1175.               enumeration types.
  1176.  
  1177.        --WWoovveerrllooaaddeedd--vviirrttuuaall
  1178.               _(_C_+_+ _o_n_l_y_._)  In a derived class, the definitions of
  1179.               virtual functions must match the type signature  of
  1180.               a virtual function declared in the base class.  Use
  1181.               this option to  request  warnings  when  a  derived
  1182.               class  declares a function that may be an erroneous
  1183.  
  1184.  
  1185.  
  1186. GNU Tools                   28may1992                          18
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192. GCC(1)                      GNU Tools                      GCC(1)
  1193.  
  1194.  
  1195.               attempt to define a virtual function: that is, warn
  1196.               when  a  function  with  the same name as a virtual
  1197.               function in the base class, but with a type  signa-
  1198.               ture  that doesn't match any virtual functions from
  1199.               the base class.
  1200.  
  1201.        --WWiinnlliinnee
  1202.               Warn if a function can not be inlined,  and  either
  1203.               it  was  declared  as  inline,  or  else  the --ffiinn--
  1204.               lliinnee--ffuunnccttiioonnss option was given.
  1205.  
  1206.        --WWeerrrroorr
  1207.               Treat warnings as errors; abort  compilation  after
  1208.               any warning.
  1209.  
  1210.  
  1211.  
  1212. DDEEBBUUGGGGIINNGG OOPPTTIIOONNSS
  1213.        GNU  CC  has various special options that are used for de-
  1214.        bugging either your program or GCC:
  1215.  
  1216.        --gg     Produce debugging information in the operating sys-
  1217.               tem's native format (for DBX or SDB or DWARF).  GDB
  1218.               also can work with this debugging information.   On
  1219.               most  systems that use DBX format, `--gg' enables use
  1220.               of extra debugging information that  only  GDB  can
  1221.               use;  if you want to control for certain whether to
  1222.               generate this information, use `--ggggddbb' or  `--ggddbbxx'.
  1223.  
  1224.               Unlike most other C compilers, GNU CC allows you to
  1225.               use `--gg' with `--OO'.  The shortcuts taken  by  opti-
  1226.               mized  code may occasionally produce surprising re-
  1227.               sults: some variables you declared may not exist at
  1228.               all; flow of control may briefly move where you did
  1229.               not expect it; some statements may not be  executed
  1230.               because they compute constant results or their val-
  1231.               ues were already at hand; some statements may  exe-
  1232.               cute  in  different  places because they were moved
  1233.               out of loops.
  1234.  
  1235.               Nevertheless it proves possible to debug  optimized
  1236.               output.   This makes it reasonable to use the opti-
  1237.               mizer for programs that might have bugs.
  1238.  
  1239.               The following options are useful  when  GNU  CC  is
  1240.               configured  and  compiled  with  the capability for
  1241.               more than one debugging format.
  1242.  
  1243.        --ggggddbb  Produce debugging information  in  DBX  format  (if
  1244.               that is supported), including GDB extensions.
  1245.  
  1246.        --ggddbbxx  Produce  debugging  information  in  DBX format (if
  1247.               that is supported), without GDB extensions.
  1248.  
  1249.  
  1250.  
  1251.  
  1252. GNU Tools                   28may1992                          19
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258. GCC(1)                      GNU Tools                      GCC(1)
  1259.  
  1260.  
  1261.        --ggssddbb  Produce debugging information  in  SDB  format  (if
  1262.               that is supported).
  1263.  
  1264.        --ggddwwaarrff
  1265.               Produce  debugging  information in DWARF format (if
  1266.               that is supported).
  1267.  
  1268.        --gg_l_e_v_e_l
  1269.        --ggggddbb_l_e_v_e_l
  1270.        --ggddbbxx_l_e_v_e_l
  1271.        --ggssddbb_l_e_v_e_l
  1272.  
  1273.        --ggddwwaarrff_l_e_v_e_l
  1274.               Request debugging information and also use _l_e_v_e_l to
  1275.               specify how much information.  The default level is
  1276.               2.
  1277.  
  1278.               Level 1 produces minimal  information,  enough  for
  1279.               making  backtraces in parts of the program that you
  1280.               don't plan to debug.  This includes descriptions of
  1281.               functions  and  external variables, but no informa-
  1282.               tion about local variables and no line numbers.
  1283.  
  1284.        --pp     Generate extra code to  write  profile  information
  1285.               suitable for the analysis program pprrooff.
  1286.  
  1287.        --ppgg    Generate  extra  code  to write profile information
  1288.               suitable for the analysis program ggpprrooff.
  1289.  
  1290.        --aa     Generate extra code to  write  profile  information
  1291.               for  basic  blocks, which will record the number of
  1292.               times each basic  block  is  executed.   This  data
  1293.               could  be  analyzed  by a program like ttccoovv.  Note,
  1294.               however, that the format of the data  is  not  what
  1295.               ttccoovv  expects.   Eventually GNU ggpprrooff should be ex-
  1296.               tended to process this data.
  1297.  
  1298.        --dd_l_e_t_t_e_r_s
  1299.                Says to make debugging dumps during compilation at
  1300.               times  specified  by _l_e_t_t_e_r_s.  This is used for de-
  1301.               bugging the compiler.  The file names for  most  of
  1302.               the  dumps  are  made  by  appending  a word to the
  1303.               source   file   name    (e.g.     `ffoooo..cc..rrttll'    or
  1304.               `ffoooo..cc..jjuummpp').
  1305.  
  1306.        --ddMM    Dump  all  macro definitions, at the end of prepro-
  1307.               cessing, and write no output.
  1308.  
  1309.        --ddNN    Dump all macro names, at the end of  preprocessing.
  1310.  
  1311.        --ddDD    Dump  all  macro definitions, at the end of prepro-
  1312.               cessing, in addition to normal output.
  1313.  
  1314.        --ddyy    Dump debugging information during parsing, to stan-
  1315.  
  1316.  
  1317.  
  1318. GNU Tools                   28may1992                          20
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324. GCC(1)                      GNU Tools                      GCC(1)
  1325.  
  1326.  
  1327.               dard error.
  1328.  
  1329.        --ddrr    Dump after RTL generation, to `_f_i_l_e.rtl'.
  1330.  
  1331.        --ddxx    Just generate RTL for a function instead of compil-
  1332.               ing it.  Usually used with `rr'.
  1333.  
  1334.        --ddjj    Dump after first jump optimization, to `_f_i_l_e.jump'.
  1335.  
  1336.        --ddss    Dump  after  CSE  (including  the jump optimization
  1337.               that sometimes follows CSE), to `_f_i_l_e.cse'.
  1338.  
  1339.        --ddLL    Dump after loop optimization, to `_f_i_l_e.loop'.
  1340.  
  1341.        --ddtt    Dump after the second CSE pass (including the  jump
  1342.               optimization   that   sometimes  follows  CSE),  to
  1343.               `_f_i_l_e.cse2'.
  1344.  
  1345.        --ddff    Dump after flow analysis, to `_f_i_l_e.flow'.
  1346.  
  1347.        --ddcc    Dump    after    instruction    combination,     to
  1348.               `_f_i_l_e.combine'.
  1349.  
  1350.        --ddSS    Dump  after  the first instruction scheduling pass,
  1351.               to `_f_i_l_e.sched'.
  1352.  
  1353.        --ddll    Dump   after   local   register   allocation,    to
  1354.               `_f_i_l_e.lreg'.
  1355.  
  1356.        --ddgg    Dump   after   global   register   allocation,   to
  1357.               `_f_i_l_e.greg'.
  1358.  
  1359.        --ddRR    Dump after the second instruction scheduling  pass,
  1360.               to `_f_i_l_e.sched2'.
  1361.  
  1362.        --ddJJ    Dump after last jump optimization, to `_f_i_l_e.jump2'.
  1363.  
  1364.        --dddd    Dump   after   delayed   branch   scheduling,    to
  1365.               `_f_i_l_e.dbr'.
  1366.  
  1367.        --ddkk    Dump  after  conversion from registers to stack, to
  1368.               `_f_i_l_e.stack'.
  1369.  
  1370.        --ddmm    Print statistics on memory usage, at the end of the
  1371.               run, to standard error.
  1372.  
  1373.        --ddpp    Annotate  the assembler output with a comment indi-
  1374.               cating which pattern and alternative was used.
  1375.  
  1376.        --ffpprreetteenndd--ffllooaatt
  1377.               When running a  cross-compiler,  pretend  that  the
  1378.               target  machine uses the same floating point format
  1379.               as the host machine.  This causes incorrect  output
  1380.               of  the  actual  floating constants, but the actual
  1381.  
  1382.  
  1383.  
  1384. GNU Tools                   28may1992                          21
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390. GCC(1)                      GNU Tools                      GCC(1)
  1391.  
  1392.  
  1393.               instruction sequence will probably be the  same  as
  1394.               GNU  CC  would  make when running on the target ma-
  1395.               chine.
  1396.  
  1397.        --ssaavvee--tteemmppss
  1398.               Store the usual  ``temporary''  intermediate  files
  1399.               permanently;  place  them  in the current directory
  1400.               and name them based on the source file.  Thus, com-
  1401.               piling  `ffoooo..cc' with `--cc --ssaavvee--tteemmppss' would produce
  1402.               files `ffoooo..ccpppp' and `ffoooo..ss', as well as `ffoooo..oo'.
  1403.  
  1404.  
  1405.  
  1406. OOPPTTIIMMIIZZAATTIIOONN OOPPTTIIOONNSS
  1407.        These options control various sorts of optimizations:
  1408.  
  1409.        --OO     Optimize.  Optimizing  compilation  takes  somewhat
  1410.               more  time, and a lot more memory for a large func-
  1411.               tion.
  1412.  
  1413.               Without `--OO', the compiler's goal is to reduce  the
  1414.               cost  of  compilation and to make debugging produce
  1415.               the expected results.  Statements are  independent:
  1416.               if  you  stop the program with a breakpoint between
  1417.               statements, you can then assign a new value to  any
  1418.               variable or change the program counter to any other
  1419.               statement in the function and get exactly  the  re-
  1420.               sults you would expect from the source code.
  1421.  
  1422.               Without  `--OO', only variables declared rreeggiisstteerr are
  1423.               allocated in  registers.   The  resulting  compiled
  1424.               code is a little worse than produced by PCC without
  1425.               `--OO'.
  1426.  
  1427.               With `--OO', the compiler tries to reduce  code  size
  1428.               and execution time.
  1429.  
  1430.               When   you   specify   `--OO',  `--fftthhrreeaadd--jjuummppss'  and
  1431.               `--ffddeellaayyeedd--bbrraanncchh' are turned on.  On some machines
  1432.               other flags may also be turned on.
  1433.  
  1434.        --OO22    Highly  optimize.  As compared to `--OO', this option
  1435.               will increase both compilation time and the perfor-
  1436.               mance of the generated code.
  1437.  
  1438.               All  `--ff_f_l_a_g' options that control optimization are
  1439.               turned  on   when   you   specify   `--OO22',   except
  1440.               `--ffuunnrroollll--llooooppss' and `--ffuunnrroollll--aallll--llooooppss'.
  1441.  
  1442.  
  1443.        Options  of  the form `--ff_f_l_a_g' specify machine-independent
  1444.        flags.  Most flags have both positive and negative  forms;
  1445.        the  negative  form  of  `--ffffoooo' would be `--ffnnoo--ffoooo'.  The
  1446.        following list shows only one form--the one which  is  not
  1447.  
  1448.  
  1449.  
  1450. GNU Tools                   28may1992                          22
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456. GCC(1)                      GNU Tools                      GCC(1)
  1457.  
  1458.  
  1459.        the  default.  You can figure out the other form by either
  1460.        removing `nnoo--' or adding it.
  1461.  
  1462.        --ffffllooaatt--ssttoorree
  1463.               Do not store floating point variables in registers.
  1464.               This  prevents  undesirable excess precision on ma-
  1465.               chines such as the 68000 where the floating  regis-
  1466.               ters (of the 68881) keep more precision than a ddoouu--
  1467.               bbllee is supposed to have.
  1468.  
  1469.               For most programs, the excess precision  does  only
  1470.               good,  but a few programs rely on the precise defi-
  1471.               nition of IEEE floating point.  Use `--ffffllooaatt--ssttoorree'
  1472.               for such programs.
  1473.  
  1474.        --ffmmeemmooiizzee--llooookkuuppss
  1475.  
  1476.        --ffssaavvee--mmeemmooiizzeedd
  1477.               _(_C_+_+  _o_n_l_y_._)   These flags are used to get the com-
  1478.               piler to compile programs faster using  heuristics.
  1479.               They  are not on by default since they are only ef-
  1480.               fective about half the time.  The other half of the
  1481.               time  programs  compile  more slowly (and take more
  1482.               memory).
  1483.  
  1484.               The first time the compiler must build a call to  a
  1485.               member function (or reference to a data member), it
  1486.               must (1) determine  whether  the  class  implements
  1487.               member  functions  of  that name; (2) resolve which
  1488.               member function to call  (which  involves  figuring
  1489.               out  what  sorts  of  type  conversions  need to be
  1490.               made); and (3) check the visibility of  the  member
  1491.               function  to  the  caller.   All of this adds up to
  1492.               slower compilation.  Normally, the  second  time  a
  1493.               call  is made to that member function (or reference
  1494.               to that data member), it must go through  the  same
  1495.               lengthy  process  again.  This means that code like
  1496.               this
  1497.  
  1498.                 cout << "This " << p << " has " << n << " legs.\n";
  1499.  
  1500.               makes six passes through all three steps.  By using
  1501.               a software cache, a ``hit''  significantly  reduces
  1502.               this  cost.   Unfortunately, using the cache intro-
  1503.               duces another layer of mechanisms which must be im-
  1504.               plemented,   and   so   incurs  its  own  overhead.
  1505.               `--ffmmeemmooiizzee--llooookkuuppss' enables the software cache.
  1506.  
  1507.               Because access privileges (visibility)  to  members
  1508.               and  member  functions may differ from one function
  1509.               context to the next, gg++++  may  need  to  flush  the
  1510.               cache. With the `--ffmmeemmooiizzee--llooookkuuppss' flag, the cache
  1511.               is flushed after every function that  is  compiled.
  1512.               The  `-fsave-memoized'  flag enables the same soft-
  1513.  
  1514.  
  1515.  
  1516. GNU Tools                   28may1992                          23
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522. GCC(1)                      GNU Tools                      GCC(1)
  1523.  
  1524.  
  1525.               ware cache, but when the compiler  determines  that
  1526.               the  context  of  the  last function compiled would
  1527.               yield the same access privileges of the next  func-
  1528.               tion  to  compile, it preserves the cache.  This is
  1529.               most helpful when defining  many  member  functions
  1530.               for  the  same  class: with the exception of member
  1531.               functions which are friends of other classes,  each
  1532.               member  function has exactly the same access privi-
  1533.               leges as every other, and the  cache  need  not  be
  1534.               flushed.
  1535.  
  1536.        --ffnnoo--ddeeffaauulltt--iinnlliinnee
  1537.               _(_C_+_+  _o_n_l_y_._)  If `--ffddeeffaauulltt--iinnlliinnee' is enabled then
  1538.               member functions defined  inside  class  scope  are
  1539.               compiled inline by default; i.e., you don't need to
  1540.               add `iinnlliinnee' in front of the member function  name.
  1541.               By  popular demand, this option is now the default.
  1542.               To keep GNU C++ from inlining  these  member  func-
  1543.               tions, specify `--ffnnoo--ddeeffaauulltt--iinnlliinnee'.
  1544.  
  1545.        --ffnnoo--ddeeffeerr--ppoopp
  1546.               Always  pop  the arguments to each function call as
  1547.               soon as that function returns.  For machines  which
  1548.               must  pop arguments after a function call, the com-
  1549.               piler normally lets  arguments  accumulate  on  the
  1550.               stack  for several function calls and pops them all
  1551.               at once.
  1552.  
  1553.        --ffffoorrccee--mmeemm
  1554.               Force memory operands to be copied  into  registers
  1555.               before  doing arithmetic on them.  This may produce
  1556.               better code by making all memory references  poten-
  1557.               tial common subexpressions.  When they are not com-
  1558.               mon subexpressions, instruction combination  should
  1559.               eliminate  the separate register-load.  I am inter-
  1560.               ested in hearing about the difference this makes.
  1561.  
  1562.        --ffffoorrccee--aaddddrr
  1563.               Force memory address constants to  be  copied  into
  1564.               registers  before  doing  arithmetic on them.  This
  1565.               may produce better code just as `--ffffoorrccee--mmeemm'  may.
  1566.               I  am  interested  in  hearing about the difference
  1567.               this makes.
  1568.  
  1569.        --ffoommiitt--ffrraammee--ppooiinntteerr
  1570.               Don't keep the frame  pointer  in  a  register  for
  1571.               functions that don't need one.  This avoids the in-
  1572.               structions to save, set up and restore frame point-
  1573.               ers;  it  also makes an extra register available in
  1574.               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
  1575.               _o_n most machines.
  1576.  
  1577.               On some machines, such as the Vax, this flag has no
  1578.               effect, because the standard calling sequence auto-
  1579.  
  1580.  
  1581.  
  1582. GNU Tools                   28may1992                          24
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588. GCC(1)                      GNU Tools                      GCC(1)
  1589.  
  1590.  
  1591.               matically  handles the frame pointer and nothing is
  1592.               saved by pretending it doesn't exist.  The machine-
  1593.               description  macro  FFRRAAMMEE__PPOOIINNTTEERR__RREEQQUUIIRREEDD controls
  1594.               whether a target machine supports this flag.
  1595.  
  1596.        --ffiinnlliinnee
  1597.               Pay attention the  iinnlliinnee  keyword.   Normally  the
  1598.               negation  of  this  option `--ffnnoo--iinnlliinnee' is used to
  1599.               keep the compiler from expanding any functions  in-
  1600.               line.   However,  the opposite effect may be desir-
  1601.               able when compiling with `--gg', since `--gg'  normally
  1602.               turns off all inline function expansion.
  1603.  
  1604.        --ffiinnlliinnee--ffuunnccttiioonnss
  1605.               Integrate  all simple functions into their callers.
  1606.               The compiler heuristically decides which  functions
  1607.               are  simple  enough to be worth integrating in this
  1608.               way.
  1609.  
  1610.               If all calls to a given  function  are  integrated,
  1611.               and  the function is declared ssttaattiicc, then GCC nor-
  1612.               mally does not output  the  function  as  assembler
  1613.               code in its own right.
  1614.  
  1615.        --ffccaalllleerr--ssaavveess
  1616.               Enable  values  to  be  allocated in registers that
  1617.               will be clobbered by function  calls,  by  emitting
  1618.               extra  instructions  to save and restore the regis-
  1619.               ters around such calls.  Such  allocation  is  done
  1620.               only  when  it  seems to result in better code than
  1621.               would otherwise be produced.
  1622.  
  1623.               This option is enabled by default  on  certain  ma-
  1624.               chines,  usually those which have no call-preserved
  1625.               registers to use instead.
  1626.  
  1627.        --ffkkeeeepp--iinnlliinnee--ffuunnccttiioonnss
  1628.               Even if all calls to a given function are integrat-
  1629.               ed,  and the function is declared ssttaattiicc, neverthe-
  1630.               less output a separate run-time callable version of
  1631.               the function.
  1632.  
  1633.        --ffnnoo--ffuunnccttiioonn--ccssee
  1634.               Do  not  put  function addresses in registers; make
  1635.               each instruction that  calls  a  constant  function
  1636.               contain the function's address explicitly.
  1637.  
  1638.               This  option  results  in  less efficient code, but
  1639.               some strange hacks that alter the assembler  output
  1640.               may be confused by the optimizations performed when
  1641.               this option is not used.
  1642.  
  1643.  
  1644.        The following options control specific optimizations.  The
  1645.  
  1646.  
  1647.  
  1648. GNU Tools                   28may1992                          25
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654. GCC(1)                      GNU Tools                      GCC(1)
  1655.  
  1656.  
  1657.        `--OO22'  option  turns  on all of these optimizations except
  1658.        `--ffuunnrroollll--llooooppss' and `--ffuunnrroollll--aallll--llooooppss'.
  1659.  
  1660.        The `--OO' option usually turns on the `--fftthhrreeaadd--jjuummppss'  and
  1661.        `--ffddeellaayyeedd--bbrraanncchh'  options,  but  specific  machines  may
  1662.        change the default optimizations.
  1663.  
  1664.        You can use the following flags in  the  rare  cases  when
  1665.        ``fine-tuning''  of  optimizations  to be performed is de-
  1666.        sired.
  1667.  
  1668.        --ffssttrreennggtthh--rreedduuccee
  1669.               Perform the optimizations of loop  strength  reduc-
  1670.               tion and elimination of iteration variables.
  1671.  
  1672.        --fftthhrreeaadd--jjuummppss
  1673.               Perform  optimizations  where  we check to see if a
  1674.               jump branches to a location where another  compari-
  1675.               son  subsumed  by  the  first is found.  If so, the
  1676.               first branch is redirected to either  the  destina-
  1677.               tion  of  the  second branch or a point immediately
  1678.               following it, depending on whether the condition is
  1679.               known to be true or false.
  1680.  
  1681.        --ffuunnrroollll--llooooppss
  1682.               Perform  the  optimization of loop unrolling.  This
  1683.               is only done for loops whose number  of  iterations
  1684.               can be determined at compile time or run time.
  1685.  
  1686.        --ffuunnrroollll--aallll--llooooppss
  1687.               Perform  the  optimization of loop unrolling.  This
  1688.               is done for all loops.  This usually makes programs
  1689.               run more slowly.
  1690.  
  1691.        --ffccssee--ffoollllooww--jjuummppss
  1692.               In  common  subexpression elimination, scan through
  1693.               jump instructions in certain cases.  This is not as
  1694.               powerful  as completely global CSE, but not as slow
  1695.               either.
  1696.  
  1697.        --ffrreerruunn--ccssee--aafftteerr--lloooopp
  1698.               Re-run common subexpression elimination after  loop
  1699.               optimizations has been performed.
  1700.  
  1701.        --ffeelliiddee--ccoonnssttrruuccttoorrss
  1702.               _(_C_+_+  _o_n_l_y_._)   Use this option to instruct the com-
  1703.               piler to be smarter about when it  can  elide  con-
  1704.               structors.   Without  this flag, GNU C++ and cfront
  1705.               both generate effectively the same code for:
  1706.  
  1707.               A foo ();
  1708.               A x (foo ());   // x initialized by `foo ()', no ctor called
  1709.               A y = foo ();   // call to `foo ()' heads to tempo-
  1710.               rary,
  1711.  
  1712.  
  1713.  
  1714. GNU Tools                   28may1992                          26
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720. GCC(1)                      GNU Tools                      GCC(1)
  1721.  
  1722.  
  1723.                               // y is initialized from the tempo-
  1724.               rary.
  1725.  
  1726.               Note  the difference!  With this flag, GNU C++ ini-
  1727.               tializes `yy' directly from the call to ffoooo (()) with-
  1728.               out going through a temporary.
  1729.  
  1730.        --ffeexxppeennssiivvee--ooppttiimmiizzaattiioonnss
  1731.               Perform  a  number  of minor optimizations that are
  1732.               relatively expensive.
  1733.  
  1734.        --ffddeellaayyeedd--bbrraanncchh
  1735.               If supported for the target machine, attempt to re-
  1736.               order  instructions  to  exploit  instruction slots
  1737.               available after delayed branch instructions.
  1738.  
  1739.        --ffsscchheedduullee--iinnssnnss
  1740.               If supported for the target machine, attempt to re-
  1741.               order  instructions  to  eliminate execution stalls
  1742.               due to required data being unavailable.  This helps
  1743.               machines  that  have  slow floating point or memory
  1744.               load instructions by allowing other instructions to
  1745.               be  issued until the result of the load or floating
  1746.               point instruction is required.
  1747.  
  1748.        --ffsscchheedduullee--iinnssnnss22
  1749.               Similar to `--ffsscchheedduullee--iinnssnnss', but requests an  ad-
  1750.               ditional  pass of instruction scheduling after reg-
  1751.               ister allocation has been done.  This is especially
  1752.               useful  on  machines with a relatively small number
  1753.               of registers and  where  memory  load  instructions
  1754.               take more than one cycle.
  1755.  
  1756.  
  1757.  
  1758. TTAARRGGEETT OOPPTTIIOONNSS
  1759.        By  default, GNU CC compiles code for the same type of ma-
  1760.        chine that you are using.  However, it  can  also  be  in-
  1761.        stalled  as  a  cross-compiler,  to compile for some other
  1762.        type of machine.  In fact,  several  different  configura-
  1763.        tions of GNU CC, for different target machines, can be in-
  1764.        stalled side by side.  Then you specify which one  to  use
  1765.        with the `--bb' option.
  1766.  
  1767.        In addition, older and newer versions of GNU CC can be in-
  1768.        stalled side by side.  One of them (probably  the  newest)
  1769.        will be the default, but you may sometimes wish to use an-
  1770.        other.
  1771.  
  1772.        --bb _m_a_c_h_i_n_e
  1773.                The argument _m_a_c_h_i_n_e specifies the target  machine
  1774.               for  compilation.  This is useful when you have in-
  1775.               stalled GNU CC as a cross-compiler.
  1776.  
  1777.  
  1778.  
  1779.  
  1780. GNU Tools                   28may1992                          27
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786. GCC(1)                      GNU Tools                      GCC(1)
  1787.  
  1788.  
  1789.               The value to use for _m_a_c_h_i_n_e is  the  same  as  was
  1790.               specified  as the machine type when configuring GNU
  1791.               CC as a cross-compiler.  For example, if  a  cross-
  1792.               compiler  was  configured  with  `ccoonnffiigguurree i386v',
  1793.               meaning to compile for an 80386 running  System  V,
  1794.               then you would specify `--bb ii338866vv' to run that cross
  1795.               compiler.
  1796.  
  1797.               When you do not specify `--bb', it normally means  to
  1798.               compile  for  the same type of machine that you are
  1799.               using.
  1800.  
  1801.        --VV _v_e_r_s_i_o_n
  1802.                The argument _v_e_r_s_i_o_n specifies  which  version  of
  1803.               GNU  CC  to run.  This is useful when multiple ver-
  1804.               sions are installed.  For example, _v_e_r_s_i_o_n might be
  1805.               `22..00', meaning to run GNU CC version 2.0.
  1806.  
  1807.               The  default version, when you do not specify `--VV',
  1808.               is controlled by the way GNU CC is installed.  Nor-
  1809.               mally, it will be a version that is recommended for
  1810.               general use.
  1811.  
  1812.  
  1813.  
  1814. MMAACCHHIINNEE DDEEPPEENNDDEENNTT OOPPTTIIOONNSS
  1815.        Each of the target machine types can have its own  special
  1816.        options, starting with `--mm', to choose among various hard-
  1817.        ware  models  or  configurations--for  example,  68010  vs
  1818.        68020,  floating  coprocessor or none.  A single installed
  1819.        version of the compiler can compile for any model or  con-
  1820.        figuration, according to the options specified.
  1821.  
  1822.        These are the `--mm' options defined for the 68000 series:
  1823.  
  1824.        --mm6688002200
  1825.  
  1826.        --mmcc6688002200
  1827.               Generate  output for a 68020 (rather than a 68000).
  1828.               This is the  default  if  you  use  the  unmodified
  1829.               sources.
  1830.  
  1831.        --mm6688000000
  1832.  
  1833.        --mmcc6688000000
  1834.               Generate  output for a 68000 (rather than a 68020).
  1835.  
  1836.        --mm6688888811
  1837.               Generate output containing 68881  instructions  for
  1838.               floating point.  This is the default if you use the
  1839.               unmodified sources.
  1840.  
  1841.        --mmffppaa  Generate output containing Sun FPA instructions for
  1842.               floating point.
  1843.  
  1844.  
  1845.  
  1846. GNU Tools                   28may1992                          28
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852. GCC(1)                      GNU Tools                      GCC(1)
  1853.  
  1854.  
  1855.        --mmssoofftt--ffllooaatt
  1856.               Generate output containing library calls for float-
  1857.               ing point.  _W_A_R_N_I_N_G_: the  requisite  libraries  are
  1858.               not part of GNU CC.  Normally the facilities of the
  1859.               machine's usual C compiler are used, but this can't
  1860.               be  done  directly  in cross-compilation.  You must
  1861.               make your own arrangements to provide suitable  li-
  1862.               brary functions for cross-compilation.
  1863.  
  1864.        --mmsshhoorrtt
  1865.               Consider  type  iinntt  to be 16 bits wide, like sshhoorrtt
  1866.               iinntt.
  1867.  
  1868.        --mmnnoobbiittffiieelldd
  1869.               Do not use the bit-field  instructions.   `--mm6688000000'
  1870.               implies `--mmnnoobbiittffiieelldd'.
  1871.  
  1872.        --mmbbiittffiieelldd
  1873.               Do  use  the bit-field instructions.  `--mm6688002200' im-
  1874.               plies `--mmbbiittffiieelldd'.  This is the default if you use
  1875.               the unmodified sources.
  1876.  
  1877.        --mmrrttdd  Use  a  different  function-calling  convention, in
  1878.               which functions that take a fixed number  of  argu-
  1879.               ments  return  with the rrttdd instruction, which pops
  1880.               their arguments while returning.   This  saves  one
  1881.               instruction in the caller since there is no need to
  1882.               pop the arguments there.
  1883.  
  1884.               This calling convention is  incompatible  with  the
  1885.               one  normally used on Unix, so you cannot use it if
  1886.               you need to call libraries compiled with  the  Unix
  1887.               compiler.
  1888.  
  1889.               Also,  you must provide function prototypes for all
  1890.               functions that take variable numbers  of  arguments
  1891.               (including  pprriinnttff);  otherwise incorrect code will
  1892.               be generated for calls to those functions.
  1893.  
  1894.               In addition, seriously incorrect code  will  result
  1895.               if  you  call  a  function with too many arguments.
  1896.               (Normally, extra arguments are harmlessly ignored.)
  1897.  
  1898.               The  rrttdd  instruction is supported by the 68010 and
  1899.               68020 processors, but not by the 68000.
  1900.  
  1901.  
  1902.        These `--mm' options are defined for the Vax:
  1903.  
  1904.        --mmuunniixx Do not output certain jump instructions (aaoobblleeqq and
  1905.               so  on)  that the Unix assembler for the Vax cannot
  1906.               handle across long ranges.
  1907.  
  1908.        --mmggnnuu  Do output those jump instructions, on  the  assump-
  1909.  
  1910.  
  1911.  
  1912. GNU Tools                   28may1992                          29
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918. GCC(1)                      GNU Tools                      GCC(1)
  1919.  
  1920.  
  1921.               tion that you will assemble with the GNU assembler.
  1922.  
  1923.        --mmgg    Output code for g-format floating point numbers in-
  1924.               stead of d-format.
  1925.  
  1926.  
  1927.        These `--mm' switches are supported on the Sparc:
  1928.  
  1929.        --mmffppuu  Generate  output containing floating point instruc-
  1930.               tions.  This is the default if you use the  unmodi-
  1931.               fied sources.
  1932.  
  1933.        --mmnnoo--eeppiilloogguuee
  1934.               Generate  separate  return  instructions for rreettuurrnn
  1935.               statements.  This has both advantages and disadvan-
  1936.               tages; I don't recall what they are.
  1937.  
  1938.  
  1939.        These `--mm' options are defined for the Convex:
  1940.  
  1941.        --mmcc11   Generate output for a C1.  This is the default when
  1942.               the compiler is configured for a C1.
  1943.  
  1944.        --mmcc22   Generate output for a C2.  This is the default when
  1945.               the compiler is configured for a C2.
  1946.  
  1947.        --mmaarrggccoouunntt
  1948.               Generate  code  which puts an argument count in the
  1949.               word  preceding  each  argument  list.   Some  non-
  1950.               portable  Convex  and  Vax programs need this word.
  1951.               (Debuggers don't, except for functions  with  vari-
  1952.               able-length  argument  lists;  this  info is in the
  1953.               symbol table.)
  1954.  
  1955.        --mmnnooaarrggccoouunntt
  1956.               Omit the argument count word.  This is the  default
  1957.               if you use the unmodified sources.
  1958.  
  1959.  
  1960.        These `--mm' options are defined for the AMD Am29000:
  1961.  
  1962.        --mmddww   Generate code that assumes the DW bit is set, i.e.,
  1963.               that byte and halfword operations are directly sup-
  1964.               ported by the hardware.  This is the default.
  1965.  
  1966.        --mmnnooddww Generate code that assumes the DW bit is not set.
  1967.  
  1968.        --mmbbww   Generate code that assumes the system supports byte
  1969.               and halfword write operations.   This  is  the  de-
  1970.               fault.
  1971.  
  1972.        --mmnnbbww  Generate  code  that  assumes  the systems does not
  1973.               support byte and halfword write  operations.   This
  1974.               implies `--mmnnooddww'.
  1975.  
  1976.  
  1977.  
  1978. GNU Tools                   28may1992                          30
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984. GCC(1)                      GNU Tools                      GCC(1)
  1985.  
  1986.  
  1987.        --mmssmmaallll
  1988.               Use  a  small  memory  model  that assumes that all
  1989.               function addresses are either within a  single  256
  1990.               KB  segment  or at an absolute address of less than
  1991.               256K.  This allows the ccaallll instruction to be  used
  1992.               instead of a ccoonnsstt, ccoonnsstthh, ccaallllii sequence.
  1993.  
  1994.        --mmllaarrggee
  1995.               Do  not  assume  that  the  ccaallll instruction can be
  1996.               used; this is the default.
  1997.  
  1998.        --mm2299005500
  1999.               Generate code for the Am29050.
  2000.  
  2001.        --mm2299000000
  2002.               Generate code for the Am29000.   This  is  the  de-
  2003.               fault.
  2004.  
  2005.        --mmkkeerrnneell--rreeggiisstteerrss
  2006.               Generate  references to registers ggrr6644--ggrr9955 instead
  2007.               of ggrr9966--ggrr112277.  This option can be used  when  com-
  2008.               piling  kernel code that wants a set of global reg-
  2009.               isters disjoint from that used by user-mode code.
  2010.  
  2011.               Note that when this option is used, register  names
  2012.               in  `--ff'  flags  must  use  the  normal, user-mode,
  2013.               names.
  2014.  
  2015.        --mmuusseerr--rreeggiisstteerrss
  2016.               Use the normal set of global registers, ggrr9966--ggrr112277.
  2017.               This is the default.
  2018.  
  2019.        --mmssttaacckk--cchheecckk
  2020.               Insert  a  call to ____mmsspp__cchheecckk after each stack ad-
  2021.               justment.  This is often used for kernel code.
  2022.  
  2023.  
  2024.        These `--mm' options are defined for Motorola 88K  architec-
  2025.        tures:
  2026.  
  2027.        --mmbbiigg--ppiicc
  2028.               Emit position-independent code, suitable for dynam-
  2029.               ic linking, even if branches need  large  displace-
  2030.               ments.    Equivalent   to  the  general-use  option
  2031.               `--ffPPIICC'.  The general-use option `--ffppiicc',  by  con-
  2032.               trast,  only  emits  valid 88k code if all branches
  2033.               involve small displacements.  GCC does not emit po-
  2034.               sition-independent code by default.
  2035.  
  2036.        --mmiiddeennttiiffyy--rreevviissiioonn
  2037.               Include  an iiddeenntt directive in the assembler output
  2038.               recording the source file name, compiler  name  and
  2039.               version, timestamp, and compilation flags used.
  2040.  
  2041.  
  2042.  
  2043.  
  2044. GNU Tools                   28may1992                          31
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050. GCC(1)                      GNU Tools                      GCC(1)
  2051.  
  2052.  
  2053.        --mmnnoo--uunnddeerrssccoorreess
  2054.               In  assembler  output,  emit  symbol  names without
  2055.               adding an underscore character at the beginning  of
  2056.               each  name.  The default is to use an underscore as
  2057.               prefix on each name.
  2058.  
  2059.        --mmnnoo--cchheecckk--zzeerroo--ddiivviissiioonn
  2060.  
  2061.        --mmcchheecckk--zzeerroo--ddiivviissiioonn
  2062.               Early models of the 88K architecture  had  problems
  2063.               with  division by zero; in particular, many of them
  2064.               didn't trap.  Use these options to avoid  including
  2065.               (or  to  include explicitly) additional code to de-
  2066.               tect division by zero and signal an exception.  All
  2067.               GCC     configurations     for    the    88K    use
  2068.               `--mmcchheecckk--zzeerroo--ddiivviissiioonn' by default.
  2069.  
  2070.        --mmooccss--ddeebbuugg--iinnffoo
  2071.  
  2072.        --mmnnoo--ooccss--ddeebbuugg--iinnffoo
  2073.               Include (or omit) additional debugging  information
  2074.               (about registers used in each stack frame) as spec-
  2075.               ified in the 88Open Object Compatibility  Standard,
  2076.               ``OCS''.   This  extra information is not needed by
  2077.               GDB.  The default for DG/UX,  SVr4,  and  Delta  88
  2078.               SVr3.2  is  to  include this information; other 88k
  2079.               configurations omit this information by default.
  2080.  
  2081.        --mmooccss--ffrraammee--ppoossiittiioonn
  2082.  
  2083.        --mmnnoo--ooccss--ffrraammee--ppoossiittiioonn
  2084.               Force (or do not require)  register  values  to  be
  2085.               stored  in  a  particular place in stack frames, as
  2086.               specified in OCS.  The DG/UX, Delta88  SVr3.2,  and
  2087.               BCS configurations use `--mmooccss--ffrraammee--ppoossiittiioonn'; oth-
  2088.               er   88k   configurations    have    the    default
  2089.               `--mmnnoo--ooccss--ffrraammee--ppoossiittiioonn'.
  2090.  
  2091.        --mmooppttiimmiizzee--aarrgg--aarreeaa
  2092.  
  2093.        --mmnnoo--ooppttiimmiizzee--aarrgg--aarreeaa
  2094.               Control  how  to  store function arguments in stack
  2095.               frames.  `--mmooppttiimmiizzee--aarrgg--aarreeaa' saves space, but may
  2096.               break      some      debuggers      (not      GDB).
  2097.               `--mmnnoo--ooppttiimmiizzee--aarrgg--aarreeaa' conforms better  to  stan-
  2098.               dards.   By default GCC does not optimize the argu-
  2099.               ment area.
  2100.  
  2101.        --mmsshhoorrtt--ddaattaa--_n_u_m
  2102.                _n_u_m Generate smaller  data  references  by  making
  2103.               them  relative  to rr00, which allows loading a value
  2104.               using a single instruction (rather than  the  usual
  2105.               two).   You  control  which data references are af-
  2106.               fected by specifying _n_u_m with this option.  For ex-
  2107.  
  2108.  
  2109.  
  2110. GNU Tools                   28may1992                          32
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116. GCC(1)                      GNU Tools                      GCC(1)
  2117.  
  2118.  
  2119.               ample,  if you specify `--mmsshhoorrtt--ddaattaa--551122', then the
  2120.               data references affected are those  involving  dis-
  2121.               placements     of     less    than    512    bytes.
  2122.               `--mmsshhoorrtt--ddaattaa--_n_u_m' is not effective for _n_u_m greater
  2123.               than 64K.
  2124.  
  2125.        --mmssvvrr44
  2126.  
  2127.        --mmssvvrr33 Turn  on  (`--mmssvvrr44') or off (`--mmssvvrr33') compiler ex-
  2128.               tensions related to  System  V  release  4  (SVr4).
  2129.               This controls the following:
  2130.  
  2131.           o   Which  variant  of  the  assembler  syntax  to emit
  2132.               (which   you   can   select   independently   using
  2133.               `--mmvveerrssiioonn0033..0000').
  2134.  
  2135.           o   `--mmssvvrr44' makes the C preprocessor recognize `##pprraagg--
  2136.               mmaa wweeaakk'
  2137.  
  2138.           o   `--mmssvvrr44' makes GCC issue additional declaration di-
  2139.               rectives used in SVr4.
  2140.  
  2141.        `--mmssvvrr33' is the default for all m88K configurations except
  2142.        the SVr4 configuration.
  2143.  
  2144.        --mmttrraapp--llaarrggee--sshhiifftt
  2145.  
  2146.        --mmhhaannddllee--llaarrggee--sshhiifftt
  2147.               Include code to detect bit-shifts of more  than  31
  2148.               bits;  respectively,  trap such shifts or emit code
  2149.               to handle them properly.  By default GCC  makes  no
  2150.               special provision for large bit shifts.
  2151.  
  2152.        --mmuussee--ddiivv--iinnssttrruuccttiioonn
  2153.               Very  early  models  of the 88K architecture didn't
  2154.               have a divide instruction, so GCC avoids  that  in-
  2155.               struction  by  default.  Use this option to specify
  2156.               that it's safe to use the divide instruction.
  2157.  
  2158.        --mmvveerrssiioonn--0033..0000
  2159.               Use alternative assembler syntax for the  assembler
  2160.               version corresponding to SVr4, but without enabling
  2161.               the other features triggered by `--ssvvrr44'.   This  is
  2162.               implied  by  `--ssvvrr44',  is  the default for the SVr4
  2163.               configuration of GCC, and is permitted by the DG/UX
  2164.               configuration  only  if  `--ssvvrr44' is also specified.
  2165.               The Delta 88 SVr3.2 configuration ignores this  op-
  2166.               tion.
  2167.  
  2168.        --mmwwaarrnn--ppaasssseedd--ssttrruuccttss
  2169.               Warn when a function passes a struct as an argument
  2170.               or  result.   Structure-passing  conventions   have
  2171.               changed during the evolution of the C language, and
  2172.               are often the source of portability  problems.   By
  2173.  
  2174.  
  2175.  
  2176. GNU Tools                   28may1992                          33
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182. GCC(1)                      GNU Tools                      GCC(1)
  2183.  
  2184.  
  2185.               default, GCC issues no such warning.
  2186.  
  2187.        These options are defined for the IBM RS6000:
  2188.  
  2189.  
  2190.        --mmffpp--iinn--ttoocc
  2191.  
  2192.        --mmnnoo--ffpp--iinn--ttoocc
  2193.               Control  whether or not floating-point constants go
  2194.               in the Table of Contents  (TOC),  a  table  of  all
  2195.               global variable and function addresses.  By default
  2196.               GCC puts floating-point constants there; if the TOC
  2197.               overflows, `--mmnnoo--ffpp--iinn--ttoocc' will reduce the size of
  2198.               the TOC, which may avoid the overflow.
  2199.  
  2200.  
  2201.        These `--mm' options are defined for the IBM RT PC:
  2202.  
  2203.        --mmiinn--lliinnee--mmuull
  2204.               Use an in-line code  sequence  for  integer  multi-
  2205.               plies.  This is the default.
  2206.  
  2207.        --mmccaallll--lliibb--mmuull
  2208.               Call llmmuull$$$$ for integer multiples.
  2209.  
  2210.        --mmffuullll--ffpp--bblloocckkss
  2211.               Generate  full-size floating point data blocks, in-
  2212.               cluding the minimum amount of scratch space  recom-
  2213.               mended by IBM.  This is the default.
  2214.  
  2215.        --mmmmiinniimmuumm--ffpp--bblloocckkss
  2216.               Do  not  include  extra  scratch  space in floating
  2217.               point data blocks.  This results in  smaller  code,
  2218.               but  slower  execution, since scratch space must be
  2219.               allocated dynamically.
  2220.  
  2221.        --mmffpp--aarrgg--iinn--ffpprreeggss
  2222.               Use a calling sequence incompatible  with  the  IBM
  2223.               calling  convention  in  which floating point argu-
  2224.               ments are passed in floating point registers.  Note
  2225.               that  vvaarraarrggss..hh  and  ssttddaarrggss..hh  will not work with
  2226.               floating point operands if this  option  is  speci-
  2227.               fied.
  2228.  
  2229.        --mmffpp--aarrgg--iinn--ggrreeggss
  2230.               Use  the  normal  calling  convention  for floating
  2231.               point arguments.  This is the default.
  2232.  
  2233.        --mmhhcc--ssttrruucctt--rreettuurrnn
  2234.               Return structures of more than one word in  memory,
  2235.               rather  than in a register.  This provides compati-
  2236.               bility with the MetaWare HighC (hc) compiler.   Use
  2237.               `--ffppcccc--ssttrruucctt--rreettuurrnn'  for  compatibility  with the
  2238.               Portable C Compiler (pcc).
  2239.  
  2240.  
  2241.  
  2242. GNU Tools                   28may1992                          34
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248. GCC(1)                      GNU Tools                      GCC(1)
  2249.  
  2250.  
  2251.        --mmnnoohhcc--ssttrruucctt--rreettuurrnn
  2252.               Return some structures of more  than  one  word  in
  2253.               registers,  when  convenient.  This is the default.
  2254.               For compatibility with the IBM-supplied  compilers,
  2255.               use       either      `--ffppcccc--ssttrruucctt--rreettuurrnn'      or
  2256.               `--mmhhcc--ssttrruucctt--rreettuurrnn'.
  2257.  
  2258.        These `--mm' options are defined for the MIPS family of com-
  2259.        puters:
  2260.  
  2261.        --mmccppuu==_c_p_u_-_t_y_p_e
  2262.               Assume  the  defaults for the machine type _c_p_u_-_t_y_p_e
  2263.               when scheduling instructions.  The default _c_p_u_-_t_y_p_e
  2264.               is  ddeeffaauulltt,  which  picks the longest cycles times
  2265.               for any of the machines, in order that the code run
  2266.               at  reasonable  rates  on  all  MIPS  cpu's.  Other
  2267.               choices for _c_p_u_-_t_y_p_e are rr22000000, rr33000000,  rr44000000,  and
  2268.               rr66000000.   While  picking  a  specific  _c_p_u_-_t_y_p_e will
  2269.               schedule things appropriately for  that  particular
  2270.               chip,  the compiler will not generate any code that
  2271.               does not meet level 1 of the MIPS ISA  (instruction
  2272.               set  architecture)  without  the  --mmiippss22  or --mmiippss33
  2273.               switches being used.
  2274.  
  2275.        --mmiippss22 Issue instructions from level 2  of  the  MIPS  ISA
  2276.               (branch  likely,  square  root  instructions).  The
  2277.               --mmccppuu==rr44000000 or --mmccppuu==rr66000000 switch must be  used  in
  2278.               conjunction with --mmiippss22.
  2279.  
  2280.        --mmiippss33 Issue instructions from level 3 of the MIPS ISA (64
  2281.               bit instructions).  The --mmccppuu==rr44000000 switch must  be
  2282.               used in conjunction with --mmiippss22.
  2283.  
  2284.        --mmiinntt6644
  2285.  
  2286.        --mmlloonngg6644
  2287.  
  2288.        --mmlloonngglloonngg112288
  2289.               These options don't work at present.
  2290.  
  2291.        --mmmmiippss--aass
  2292.               Generate  code  for  the MIPS assembler, and invoke
  2293.               mmiippss--ttffiillee to add normal debug  information.   This
  2294.               is  the  default  for  all platforms except for the
  2295.               OSF/1 reference platform, using the OSF/rose object
  2296.               format.   If any of the --ggggddbb, --ggssttaabbss, or --ggssttaabbss++
  2297.               switches are used, the mmiippss--ttffiillee program will  en-
  2298.               capsulate the stabs within MIPS ECOFF.
  2299.  
  2300.        --mmggaass  Generate  code  for the GNU assembler.  This is the
  2301.               default on the OSF/1 reference platform, using  the
  2302.               OSF/rose object format.
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308. GNU Tools                   28may1992                          35
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314. GCC(1)                      GNU Tools                      GCC(1)
  2315.  
  2316.  
  2317.        --mmrrnnaammeess
  2318.  
  2319.        --mmnnoo--rrnnaammeess
  2320.               The  --mmrrnnaammeess  switch says to output code using the
  2321.               MIPS software names for the registers,  instead  of
  2322.               the hardware names (ie, aa00 instead of $$44).  The GNU
  2323.               assembler does not support the --mmrrnnaammeess switch, and
  2324.               the  MIPS  assembler  will be instructed to run the
  2325.               MIPS C preprocessor  over  the  source  file.   The
  2326.               --mmnnoo--rrnnaammeess switch is default.
  2327.  
  2328.        --mmggppoopptt
  2329.  
  2330.        --mmnnoo--ggppoopptt
  2331.               The  --mmggppoopptt  switch  says to write all of the data
  2332.               declarations before the instructions  in  the  text
  2333.               section,  to all the MIPS assembler to generate one
  2334.               word memory references instead of using  two  words
  2335.               for  short global or static data items.  This is on
  2336.               by default if optimization is selected.
  2337.  
  2338.        --mmssttaattss
  2339.  
  2340.        --mmnnoo--ssttaattss
  2341.               For each non-inline function processed, the --mmssttaattss
  2342.               switch  causes the compiler to emit one line to the
  2343.               standard error file to print statistics  about  the
  2344.               program  (number  of  registers  saved, stack size,
  2345.               etc.).
  2346.  
  2347.        --mmmmeemmccppyy
  2348.  
  2349.        --mmnnoo--mmeemmccppyy
  2350.               The --mmmmeemmccppyy switch makes all block moves call  the
  2351.               appropriate  string  function (mmeemmccppyy or bbccooppyy) in-
  2352.               stead of possibly generating inline code.
  2353.  
  2354.        --mmmmiippss--ttffiillee
  2355.  
  2356.        --mmnnoo--mmiippss--ttffiillee
  2357.               The --mmnnoo--mmiippss--ttffiillee switch causes the compiler  not
  2358.               postprocess  the  object  file  with the mmiippss--ttffiillee
  2359.               program, after the MIPS assembler has generated  it
  2360.               to  add  debug  support.  If mmiippss--ttffiillee is not run,
  2361.               then no local variables will be  available  to  the
  2362.               debugger.   In  addition, ssttaaggee22 and ssttaaggee33 objects
  2363.               will have the temporary file names  passed  to  the
  2364.               assembler  embedded in the object file, which means
  2365.               the objects will not compare the same.
  2366.  
  2367.        --mmssoofftt--ffllooaatt
  2368.               Generate output containing library calls for float-
  2369.               ing  point.   _W_A_R_N_I_N_G_:  the requisite libraries are
  2370.               not part of GNU CC.  Normally the facilities of the
  2371.  
  2372.  
  2373.  
  2374. GNU Tools                   28may1992                          36
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380. GCC(1)                      GNU Tools                      GCC(1)
  2381.  
  2382.  
  2383.               machine's usual C compiler are used, but this can't
  2384.               be done directly in  cross-compilation.   You  must
  2385.               make  your own arrangements to provide suitable li-
  2386.               brary functions for cross-compilation.
  2387.  
  2388.        --mmhhaarrdd--ffllooaatt
  2389.               Generate output containing floating point  instruc-
  2390.               tions.   This is the default if you use the unmodi-
  2391.               fied sources.
  2392.  
  2393.        --mmffpp6644 Assume that the FFRR bit in the status  word  is  on,
  2394.               and  that there are 32 64-bit floating point regis-
  2395.               ters, instead of 32 32-bit  floating  point  regis-
  2396.               ters.   You  must  also specify the --mmccppuu==rr44000000 and
  2397.               --mmiippss33 switches.
  2398.  
  2399.        --mmffpp3322 Assume that there are 32 32-bit floating point reg-
  2400.               isters.  This is the default.
  2401.  
  2402.        --mmaabbiiccaallllss
  2403.               The  --mmaabbiiccaallllss  switch says to emit the ..aabbiiccaallllss,
  2404.               ..ccppllooaadd, and ..ccpprreessttoorree pseudo operations that some
  2405.               System V.4 ports use for position independent code.
  2406.  
  2407.        --mmhhaallff--ppiicc
  2408.  
  2409.        --mmnnoo--hhaallff--ppiicc
  2410.               The --mmhhaallff--ppiicc switch says to put pointers  to  ex-
  2411.               tern references into the data section and load them
  2412.               up, rather than put the references in the text sec-
  2413.               tion.  This option does not work at present.  --GG_n_u_m
  2414.               Put global and static items less than or  equal  to
  2415.               _n_u_m  bytes  into the small data or bss sections in-
  2416.               stead of the normal data or bss section.  This  al-
  2417.               lows  the  assembler to emit one word memory refer-
  2418.               ence instructions based on the global  pointer  (ggpp
  2419.               or  $$2288), instead of the normal two words used.  By
  2420.               default, _n_u_m is 8 when the MIPS assembler is  used,
  2421.               and  0  when  the GNU assembler is used.  The --GG_n_u_m
  2422.               switch is also passed to the assembler and  linker.
  2423.               All  modules should be compiled with the same --GG_n_u_m
  2424.               value.
  2425.  
  2426.  
  2427.  
  2428. CCOODDEE GGEENNEERRAATTIIOONN OOPPTTIIOONNSS
  2429.        These machine-independent options  control  the  interface
  2430.        conventions used in code generation.
  2431.  
  2432.        Most  of  them  begin  with `-f'.  These options have both
  2433.        positive and negative forms; the negative form of  `--ffffoooo'
  2434.        would  be `--ffnnoo--ffoooo'.  In the table below, only one of the
  2435.        forms is listed--the one which is not  the  default.   You
  2436.        can  figure out the other form by either removing `nnoo--' or
  2437.  
  2438.  
  2439.  
  2440. GNU Tools                   28may1992                          37
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446. GCC(1)                      GNU Tools                      GCC(1)
  2447.  
  2448.  
  2449.        adding it.
  2450.  
  2451.        ++ee_N    _(_C_+_+ _o_n_l_y_._)  control whether virtual function defi-
  2452.               nitions  in  classes  are used to generate code, or
  2453.               only to define interfaces for their callers.  These
  2454.               options  are provided for compatibility with cfront
  2455.               1.x usage; the recommended GNU C++ usage is to  use
  2456.               ##pprraaggmmaa  iinntteerrffaaccee  and ##pprraaggmmaa iimmpplleemmeennttaattiioonn, in-
  2457.               stead.
  2458.  
  2459.               With `++ee00', virtual function definitions in classes
  2460.               are  declared  extern; the declaration is used only
  2461.               as an interface specification, not to generate code
  2462.               for the virtual functions (in this compilation).
  2463.  
  2464.               With  `++ee11', gg++++ actually generates the code imple-
  2465.               menting virtual functions defined in the code,  and
  2466.               makes them publicly visible.
  2467.  
  2468.        --ffnnoonnnnuullll--oobbjjeeccttss
  2469.               _(_C_+_+  _o_n_l_y_._)   Normally, GNU C++ makes conservative
  2470.               assumptions about objects  reached  through  refer-
  2471.               ences.   For  example, the compiler must check that
  2472.               `aa' is not null in code like the following:
  2473.                   obj &a = g ();
  2474.                   a.f (2);
  2475.               Checking that references of this sort have non-null
  2476.               values  requires extra code, however, and it is un-
  2477.               necessary  for  many   programs.    You   can   use
  2478.               `--ffnnoonnnnuullll--oobbjjeeccttss' to omit the checks for null, if
  2479.               your program doesn't require the default  checking.
  2480.  
  2481.        --ffppcccc--ssttrruucctt--rreettuurrnn
  2482.               Use  the  same  convention for returning ssttrruucctt and
  2483.               uunniioonn values that is used by the usual  C  compiler
  2484.               on  your system.  This convention is less efficient
  2485.               for small structures, and on many machines it fails
  2486.               to be reentrant; but it has the advantage of allow-
  2487.               ing intercallability between GCC-compiled code  and
  2488.               PCC-compiled code.
  2489.  
  2490.        --ffsshhoorrtt--eennuummss
  2491.               Allocate  to  an eennuumm type only as many bytes as it
  2492.               needs for the declared range  of  possible  values.
  2493.               Specifically,  the  eennuumm type will be equivalent to
  2494.               the smallest integer type which has enough room.
  2495.  
  2496.        --ffsshhoorrtt--ddoouubbllee
  2497.               Use the same size for ddoouubbllee as for ffllooaatt .
  2498.  
  2499.        --ffsshhaarreedd--ddaattaa
  2500.               Requests that the data and non-ccoonnsstt  variables  of
  2501.               this compilation be shared data rather than private
  2502.               data.  The distinction makes sense only on  certain
  2503.  
  2504.  
  2505.  
  2506. GNU Tools                   28may1992                          38
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512. GCC(1)                      GNU Tools                      GCC(1)
  2513.  
  2514.  
  2515.               operating  systems, where shared data is shared be-
  2516.               tween processes running  the  same  program,  while
  2517.               private data exists in one copy per process.
  2518.  
  2519.        --ffnnoo--ccoommmmoonn
  2520.               Allocate even uninitialized global variables in the
  2521.               bss section of the object file, rather than  gener-
  2522.               ating  them  as common blocks.  This has the effect
  2523.               that if the same variable is declared (without  eexx--
  2524.               tteerrnn)  in  two different compilations, you will get
  2525.               an error when you link them.  The only reason  this
  2526.               might  be  useful is if you wish to verify that the
  2527.               program will work on  other  systems  which  always
  2528.               work this way.
  2529.  
  2530.        --ffvvoollaattiillee
  2531.               Consider  all memory references through pointers to
  2532.               be volatile.
  2533.  
  2534.        --ffppiicc  If supported for the target machines, generate  po-
  2535.               sition-independent  code,  suitable  for  use  in a
  2536.               shared library.
  2537.  
  2538.        --ffPPIICC  If supported for the target machine, emit position-
  2539.               independent  code,  suitable  for  dynamic linking,
  2540.               even if branches need large displacements.
  2541.  
  2542.        --ffffiixxeedd--_r_e_g
  2543.                Treat the register named _r_e_g as a fixed  register;
  2544.               generated  code  should  never  refer to it (except
  2545.               perhaps as a stack pointer,  frame  pointer  or  in
  2546.               some other fixed role).
  2547.  
  2548.               _r_e_g  must  be the name of a register.  The register
  2549.               names accepted are machine-specific and are defined
  2550.               in the RREEGGIISSTTEERR__NNAAMMEESS macro in the machine descrip-
  2551.               tion macro file.
  2552.  
  2553.               This flag does not have a negative form, because it
  2554.               specifies a three-way choice.
  2555.  
  2556.        --ffccaallll--uusseedd--_r_e_g
  2557.                 Treat  the  register  named _r_e_g as an allocatable
  2558.               register that is clobbered by function  calls.   It
  2559.               may  be allocated for temporaries or variables that
  2560.               do not live across a call.  Functions compiled this
  2561.               way will not save and restore the register _r_e_g.
  2562.  
  2563.               Use  of  this  flag for a register that has a fixed
  2564.               pervasive role in the  machine's  execution  model,
  2565.               such  as  the  stack pointer or frame pointer, will
  2566.               produce disastrous results.
  2567.  
  2568.               This flag does not have a negative form, because it
  2569.  
  2570.  
  2571.  
  2572. GNU Tools                   28may1992                          39
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578. GCC(1)                      GNU Tools                      GCC(1)
  2579.  
  2580.  
  2581.               specifies a three-way choice.
  2582.  
  2583.        --ffccaallll--ssaavveedd--_r_e_g
  2584.                 Treat  the  register  named _r_e_g as an allocatable
  2585.               register saved by functions.  It may  be  allocated
  2586.               even  for temporaries or variables that live across
  2587.               a call.  Functions compiled this way will save  and
  2588.               restore the register _r_e_g if they use it.
  2589.  
  2590.               Use  of  this  flag for a register that has a fixed
  2591.               pervasive role in the  machine's  execution  model,
  2592.               such  as  the  stack pointer or frame pointer, will
  2593.               produce disastrous results.
  2594.  
  2595.               A different sort of disaster will result  from  the
  2596.               use  of  this flag for a register in which function
  2597.               values may be returned.
  2598.  
  2599.               This flag does not have a negative form, because it
  2600.               specifies a three-way choice.
  2601.  
  2602.        --ffggnnuu--bbiinnuuttiillss
  2603.  
  2604.        --ffnnoo--ggnnuu--bbiinnuuttiillss
  2605.               _(_C_+_+  _o_n_l_y_._)   `--ffggnnuu--bbiinnuuttiillss  '  (the default for
  2606.               most, but not all, platforms) makes  GNU  C++  emit
  2607.               extra information for static initialization and fi-
  2608.               nalization.  This information has to be passed from
  2609.               the  assembler  to the GNU linker.  Some assemblers
  2610.               won't pass this information; you  must  either  use
  2611.               GNU aass or specify the option `--ffnnoo--ggnnuu--bbiinnuuttiillss'.
  2612.  
  2613.               With  `--ffnnoo--ggnnuu--bbiinnuuttiillss', you must use the program
  2614.               ccoolllleecctt (part of the GCC distribution) for linking.
  2615.  
  2616.  
  2617.  
  2618. PPRRAAGGMMAASS
  2619.        Two  `##pprraaggmmaa'  directives  are  supported for GNU C++, to
  2620.        permit using the same header file for two purposes:  as  a
  2621.        definition  of  interfaces to a given object class, and as
  2622.        the full definition of the contents of that object  class.
  2623.  
  2624.        ##pprraaggmmaa iinntteerrffaaccee
  2625.               _(_C_+_+  _o_n_l_y_._)   Use  this  directive in header files
  2626.               that define object classes, to save space  in  most
  2627.               of  the  object files that use those classes.  Nor-
  2628.               mally, local copies of certain information  (backup
  2629.               copies of inline member functions, debugging infor-
  2630.               mation, and the internal tables that implement vir-
  2631.               tual  functions)  must  be kept in each object file
  2632.               that includes class definitions.  You can use  this
  2633.               pragma  to  avoid  such duplication.  When a header
  2634.               file containing `##pprraaggmmaa iinntteerrffaaccee' is included  in
  2635.  
  2636.  
  2637.  
  2638. GNU Tools                   28may1992                          40
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644. GCC(1)                      GNU Tools                      GCC(1)
  2645.  
  2646.  
  2647.               a  compilation, this auxiliary information will not
  2648.               be generated (unless the main input source file it-
  2649.               self  uses `##pprraaggmmaa iimmpplleemmeennttaattiioonn').  Instead, the
  2650.               object files will contain references to be resolved
  2651.               at link time.
  2652.  
  2653.        ##pprraaggmmaa iimmpplleemmeennttaattiioonn
  2654.  
  2655.        ##pprraaggmmaa iimmpplleemmeennttaattiioonn ""_o_b_j_e_c_t_s..hh""
  2656.               _(_C_+_+  _o_n_l_y_._)  Use this pragma in a main input file,
  2657.               when you want  full  output  from  included  header
  2658.               files  to be generated (and made globally visible).
  2659.               The included  header  file,  in  turn,  should  use
  2660.               `##pprraaggmmaa  iinntteerrffaaccee'.  Backup copies of inline mem-
  2661.               ber functions, debugging information, and  the  in-
  2662.               ternal  tables  used to implement virtual functions
  2663.               are all generated in implementation files.
  2664.  
  2665.               If you use `##pprraaggmmaa iimmpplleemmeennttaattiioonn' with  no  argu-
  2666.               ment,  it  applies to an include file with the same
  2667.               basename as  your  source  file;  for  example,  in
  2668.               `aallllccllaassss..cccc',  `##pprraaggmmaa  iimmpplleemmeennttaattiioonn' by itself
  2669.               is   equivalent    to    `##pprraaggmmaa    iimmpplleemmeennttaattiioonn
  2670.               ""aallllccllaassss..hh""'.  Use the string argument if you want
  2671.               a single implementation file to include  code  from
  2672.               multiple header files.
  2673.  
  2674.               There  is no way to split up the contents of a sin-
  2675.               gle header file into multiple implementation files.
  2676.  
  2677. FFIILLEESS
  2678.        file.c             C source file
  2679.        file.h             C header (preprocessor) file
  2680.        file.i             preprocessed C source file
  2681.        file.C             C++ source file
  2682.        file.cc            C++ source file
  2683.        file.cxx           C++ source file
  2684.        file.m             Objective-C source file
  2685.        file.s             assembly language file
  2686.        file.o             object file
  2687.        a.out              link edited output
  2688.        _T_M_P_D_I_R/cc*         temporary files
  2689.        _L_I_B_D_I_R/cpp         preprocessor
  2690.        _L_I_B_D_I_R/cc1         compiler for C
  2691.        _L_I_B_D_I_R/cc1plus     compiler for C++
  2692.        _L_I_B_D_I_R/collect     linker  front  end  needed  on some ma-
  2693.        chines
  2694.        _L_I_B_D_I_R/libgcc.a    GCC subroutine library
  2695.        /lib/crt[01n].o    start-up routine
  2696.        _L_I_B_D_I_R/ccrt0       additional start-up routine for C++
  2697.        /lib/libc.a        standard C library, see _i_n_t_r_o(3)
  2698.        /usr/include       standard directory for ##iinncclluuddee files
  2699.        _L_I_B_D_I_R/include     standard  gcc  directory  for  ##iinncclluuddee
  2700.        files
  2701.  
  2702.  
  2703.  
  2704. GNU Tools                   28may1992                          41
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710. GCC(1)                      GNU Tools                      GCC(1)
  2711.  
  2712.  
  2713.        _L_I_B_D_I_R/g++-include additional g++ directory for ##iinncclluuddee
  2714.  
  2715.        _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.
  2716.        _T_M_P_D_I_R comes from the environment variable TTMMPPDDIIRR (default
  2717.        //uussrr//ttmmpp if available, else //ttmmpp).
  2718.  
  2719. SSEEEE AALLSSOO
  2720.        cpp(1), as(1), ld(1), gdb(1), adb(1), dbx(1), sdb(1).
  2721.        `ggcccc', `ccpppp', `aass',``ld'',, and `ggddbb' entries in iinnffoo.
  2722.        _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.
  2723.        Stallman,  November  1990;  _T_h_e _C _P_r_e_p_r_o_c_e_s_s_o_r, Richard M.
  2724.        Stallman, July 1990; _U_s_i_n_g _G_D_B_: _A _G_u_i_d_e _t_o _t_h_e _G_N_U _S_o_u_r_c_e_-
  2725.        _L_e_v_e_l  _D_e_b_u_g_g_e_r,  Richard M. Stallman and Roland H. Pesch,
  2726.        December 1991; _U_s_i_n_g _a_s_: _t_h_e _G_N_U _A_s_s_e_m_b_l_e_r,  Dean  Elsner,
  2727.        Jay  Fenlason  & friends, March 1991; _g_l_d_: _t_h_e _G_N_U _l_i_n_k_e_r,
  2728.        Steve Chamberlain and Roland Pesch, April 1991.
  2729.  
  2730.  
  2731. BBUUGGSS
  2732.        Report bugs to bbuugg--ggcccc@@pprreepp..aaii..mmiitt..eedduu.  Bugs tend actual-
  2733.        ly  to  be fixed if they can be isolated, so it is in your
  2734.        interest to report them in such a way  that  they  can  be
  2735.        easily reproduced.
  2736.  
  2737. CCOOPPYYIINNGG
  2738.        Copyright (c) 1991 Free Software Foundation, Inc.
  2739.  
  2740.        Permission  is  granted  to  make  and distribute verbatim
  2741.        copies of this manual provided the  copyright  notice  and
  2742.        this permission notice are preserved on all copies.
  2743.  
  2744.        Permission is granted to copy and distribute modified ver-
  2745.        sions of this manual under  the  conditions  for  verbatim
  2746.        copying,  provided  that the entire resulting derived work
  2747.        is distributed under the  terms  of  a  permission  notice
  2748.        identical to this one.
  2749.  
  2750.        Permission  is granted to copy and distribute translations
  2751.        of this manual into another language, under the above con-
  2752.        ditions for modified versions, except that this permission
  2753.        notice may be included in  translations  approved  by  the
  2754.        Free  Software  Foundation  instead of in the original En-
  2755.        glish.
  2756.  
  2757. AAUUTTHHOORRSS
  2758.        See the GNU CC Manual for the contributors to GNU CC.
  2759.  
  2760.  
  2761.  
  2762.  
  2763.  
  2764.  
  2765.  
  2766.  
  2767.  
  2768.  
  2769.  
  2770. GNU Tools                   28may1992                          42
  2771.  
  2772.  
  2773.