home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-bin / man / cat1 / gcc.0 < prev    next >
Encoding:
Text File  |  1996-09-05  |  148.6 KB  |  3,565 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.7)
  9.  
  10. SSYYNNOOPPSSIISS
  11.        ggcccc [ _o_p_t_i_o_n | _f_i_l_e_n_a_m_e ]...
  12.        gg++++ [ _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.
  18.  
  19.        This  man  page  is not kept up to date except when volun-
  20.        teers want to maintain it.   If  you  find  a  discrepancy
  21.        between  the  man  page and the software, please check the
  22.        Info file, which is the authoritative documentation.
  23.  
  24.        If we find that the things in this man page that  are  out
  25.        of date cause significant confusion or complaints, we will
  26.        stop distributing the man page.  The alternative, updating
  27.        the  man  page when we update the Info file, is impossible
  28.        because the rest of the work of maintaining GNU CC  leaves
  29.        us no time for that.  The GNU project regards man pages as
  30.        obsolete and should not let them take time away from other
  31.        things.
  32.  
  33.        For  complete and current documentation, refer to the Info
  34.        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
  35.        _v_e_r_s_i_o_n  _2_._0_).  Both are made from the Texinfo source file
  36.        ggcccc..tteexxiinnffoo.
  37.  
  38. DDEESSCCRRIIPPTTIIOONN
  39.        The C and C++  compilers  are  integrated.   Both  process
  40.        input  files  through  one or more of four stages: prepro-
  41.        cessing, compilation, assembly, and linking.  Source file-
  42.        name suffixes identify the source language, but which name
  43.        you use for the compiler governs default assumptions:
  44.  
  45.        ggcccc    assumes preprocessed (..ii) files are C and assumes C
  46.               style linking.
  47.  
  48.        gg++++    assumes preprocessed (..ii) files are C++ and assumes
  49.               C++ style linking.
  50.  
  51.        Suffixes of source file names indicate  the  language  and
  52.        kind of processing to be done:
  53.  
  54.        ..cc    C source; preprocess, compile, assemble
  55.        ..CC    C++ source; preprocess, compile, assemble
  56.        ..cccc   C++ source; preprocess, compile, assemble
  57.        ..ccxxxx  C++ source; preprocess, compile, assemble
  58.        ..mm    Objective-C source; preprocess, compile, assemble
  59.        ..ii    preprocessed C; compile, assemble
  60.        ..iiii   preprocessed C++; compile, assemble
  61.  
  62.  
  63.  
  64. GNU Tools                   1993/10/13                          1
  65.  
  66.  
  67.  
  68.  
  69.  
  70. GCC(1)                      GNU Tools                      GCC(1)
  71.  
  72.  
  73.        ..ss    Assembler source; assemble
  74.        ..SS    Assembler source; preprocess, assemble
  75.        ..hh    Preprocessor file; not usually named on command line
  76.  
  77.        Files  with other suffixes are passed to the linker.  Com-
  78.        mon cases include:
  79.  
  80.        ..oo    Object file
  81.        ..aa    Archive file
  82.  
  83.        Linking is always the last stage unless you use one of the
  84.        --cc,  --SS,  or --EE options to avoid it (or unless compilation
  85.        errors stop the whole process).  For the link  stage,  all
  86.        ..oo  files  corresponding  to  source  files, --ll libraries,
  87.        unrecognized filenames (including named  ..oo  object  files
  88.        and  ..aa archives) are passed to the linker in command-line
  89.        order.
  90.  
  91. OOPPTTIIOONNSS
  92.        Options must be separate: `--ddrr' is  quite  different  from
  93.        `--dd --rr '.
  94.  
  95.        Most `--ff' and `--WW' options have two contrary forms: --ff_n_a_m_e
  96.        and --ffnnoo--_n_a_m_e (or --WW_n_a_m_e and --WWnnoo--_n_a_m_e).   Only  the  non-
  97.        default forms are shown here.
  98.  
  99.        Here  is  a  summary  of all the options, grouped by type.
  100.        Explanations are in the following sections.
  101.  
  102.        OOvveerraallll OOppttiioonnss
  103.               -c -S -E -o _f_i_l_e -pipe -v -x _l_a_n_g_u_a_g_e
  104.  
  105.        LLaanngguuaaggee OOppttiioonnss
  106.               -ansi -fall-virtual -fcond-mismatch
  107.               -fdollars-in-identifiers -fenum-int-equiv
  108.               -fexternal-templates -fno-asm -fno-builtin
  109.               -fno-strict-prototype -fsigned-bitfields
  110.               -fsigned-char -fthis-is-variable
  111.               -funsigned-bitfields -funsigned-char
  112.               -fwritable-strings -traditional -traditional-cpp
  113.               -trigraphs
  114.  
  115.        WWaarrnniinngg OOppttiioonnss
  116.               -fsyntax-only -pedantic -pedantic-errors -w -W
  117.               -Wall -Waggregate-return -Wcast-align -Wcast-qual
  118.               -Wchar-subscript -Wcomment -Wconversion
  119.               -Wenum-clash -Werror -Wformat -Wid-clash-_l_e_n
  120.               -Wimplicit -Winline -Wmissing-prototypes
  121.               -Wmissing-declarations -Wnested-externs -Wno-import
  122.               -Wparentheses -Wpointer-arith -Wredundant-decls
  123.               -Wreturn-type -Wshadow -Wstrict-prototypes -Wswitch
  124.               -Wtemplate-debugging -Wtraditional -Wtrigraphs
  125.               -Wuninitialized -Wunused -Wwrite-strings
  126.  
  127.  
  128.  
  129.  
  130. GNU Tools                   1993/10/13                          2
  131.  
  132.  
  133.  
  134.  
  135.  
  136. GCC(1)                      GNU Tools                      GCC(1)
  137.  
  138.  
  139.        DDeebbuuggggiinngg OOppttiioonnss
  140.               -a -d_l_e_t_t_e_r_s -fpretend-float -g -g_l_e_v_e_l -gcoff
  141.               -gxcoff -gxcoff+ -gdwarf -gdwarf+ -gstabs -gstabs+
  142.               -ggdb -p -pg -save-temps -print-file-name=_l_i_b_r_a_r_y
  143.               -print-libgcc-file-name -print-prog-name=_p_r_o_g_r_a_m
  144.  
  145.        OOppttiimmiizzaattiioonn OOppttiioonnss
  146.               -fcaller-saves -fcse-follow-jumps -fcse-skip-blocks
  147.               -fdelayed-branch -felide-constructors
  148.               -fexpensive-optimizations -ffast-math -ffloat-store
  149.               -fforce-addr -fforce-mem -finline-functions
  150.               -fkeep-inline-functions -fmemoize-lookups
  151.               -fno-default-inline -fno-defer-pop
  152.               -fno-function-cse -fno-inline -fno-peephole
  153.               -fomit-frame-pointer -frerun-cse-after-loop
  154.               -fschedule-insns -fschedule-insns2
  155.               -fstrength-reduce -fthread-jumps -funroll-all-loops
  156.               -funroll-loops -O -O2
  157.  
  158.        PPrreepprroocceessssoorr OOppttiioonnss
  159.               -A_a_s_s_e_r_t_i_o_n -C -dD -dM -dN -D_m_a_c_r_o[=_d_e_f_n] -E -H
  160.               -idirafter _d_i_r -include _f_i_l_e -imacros _f_i_l_e -iprefix
  161.               _f_i_l_e -iwithprefix _d_i_r -M -MD -MM -MMD -nostdinc -P
  162.               -U_m_a_c_r_o -undef
  163.  
  164.        AAsssseemmbblleerr OOppttiioonn
  165.               -Wa,_o_p_t_i_o_n
  166.  
  167.        LLiinnkkeerr OOppttiioonnss
  168.               -l_l_i_b_r_a_r_y -nostartfiles -nostdlib -static -shared
  169.               -symbolic -Xlinker _o_p_t_i_o_n -Wl,_o_p_t_i_o_n -u _s_y_m_b_o_l
  170.  
  171.        DDiirreeccttoorryy OOppttiioonnss
  172.               -B_p_r_e_f_i_x -I_d_i_r -I- -L_d_i_r
  173.  
  174.        TTaarrggeett OOppttiioonnss
  175.               -b  _m_a_c_h_i_n_e -V _v_e_r_s_i_o_n
  176.  
  177.        CCoonnffiigguurraattiioonn DDeeppeennddeenntt OOppttiioonnss
  178.               _M_6_8_0_x_0 _O_p_t_i_o_n_s
  179.               -m68000 -m68020 -m68020-40 -m68030 -m68040 -m68881
  180.               -mbitfield -mc68000 -mc68020 -mfpa -mnobitfield
  181.               -mrtd -mshort -msoft-float
  182.  
  183.               _V_A_X _O_p_t_i_o_n_s
  184.               -mg -mgnu -munix
  185.  
  186.               _S_P_A_R_C _O_p_t_i_o_n_s
  187.               -mepilogue -mfpu -mhard-float -mno-fpu
  188.               -mno-epilogue -msoft-float -msparclite -mv8
  189.               -msupersparc -mcypress
  190.  
  191.               _C_o_n_v_e_x _O_p_t_i_o_n_s
  192.               -margcount -mc1 -mc2 -mnoargcount
  193.  
  194.  
  195.  
  196. GNU Tools                   1993/10/13                          3
  197.  
  198.  
  199.  
  200.  
  201.  
  202. GCC(1)                      GNU Tools                      GCC(1)
  203.  
  204.  
  205.               _A_M_D_2_9_K _O_p_t_i_o_n_s
  206.               -m29000 -m29050 -mbw -mdw -mkernel-registers
  207.               -mlarge -mnbw -mnodw -msmall -mstack-check
  208.               -muser-registers
  209.  
  210.               _M_8_8_K _O_p_t_i_o_n_s
  211.               -m88000 -m88100 -m88110 -mbig-pic
  212.               -mcheck-zero-division -mhandle-large-shift
  213.               -midentify-revision -mno-check-zero-division
  214.               -mno-ocs-debug-info -mno-ocs-frame-position
  215.               -mno-optimize-arg-area -mno-serialize-volatile
  216.               -mno-underscores -mocs-debug-info
  217.               -mocs-frame-position -moptimize-arg-area
  218.               -mserialize-volatile -mshort-data-_n_u_m -msvr3 -msvr4
  219.               -mtrap-large-shift -muse-div-instruction
  220.               -mversion-03.00 -mwarn-passed-structs
  221.  
  222.               _R_S_6_0_0_0 _O_p_t_i_o_n_s
  223.               -mfp-in-toc -mno-fop-in-toc
  224.  
  225.               _R_T _O_p_t_i_o_n_s
  226.               -mcall-lib-mul -mfp-arg-in-fpregs -mfp-arg-in-gregs
  227.               -mfull-fp-blocks -mhc-struct-return -min-line-mul
  228.               -mminimum-fp-blocks -mnohc-struct-return
  229.  
  230.               _M_I_P_S _O_p_t_i_o_n_s
  231.               -mcpu=_c_p_u _t_y_p_e -mips2 -mips3 -mint64 -mlong64
  232.               -mlonglong128 -mmips-as -mgas -mrnames -mno-rnames
  233.               -mgpopt -mno-gpopt -mstats -mno-stats -mmemcpy
  234.               -mno-memcpy -mno-mips-tfile -mmips-tfile
  235.               -msoft-float -mhard-float -mabicalls -mno-abicalls
  236.               -mhalf-pic -mno-half-pic -G _n_u_m -nocpp
  237.  
  238.               _i_3_8_6 _O_p_t_i_o_n_s
  239.               -m486 -mno-486 -msoft-float -mno-fp-ret-in-387
  240.  
  241.               _H_P_P_A _O_p_t_i_o_n_s
  242.               -mpa-risc-1-0 -mpa-risc-1-1 -mkernel -mshared-libs
  243.               -mno-shared-libs -mlong-calls -mdisable-fpregs
  244.               -mdisable-indexing -mtrailing-colon
  245.  
  246.               _i_9_6_0 _O_p_t_i_o_n_s
  247.               -m_c_p_u_-_t_y_p_e -mnumerics -msoft-float
  248.               -mleaf-procedures -mno-leaf-procedures -mtail-call
  249.               -mno-tail-call -mcomplex-addr -mno-complex-addr
  250.               -mcode-align -mno-code-align -mic-compat
  251.               -mic2.0-compat -mic3.0-compat -masm-compat
  252.               -mintel-asm -mstrict-align -mno-strict-align
  253.               -mold-align -mno-old-align
  254.  
  255.               _D_E_C _A_l_p_h_a _O_p_t_i_o_n_s
  256.               -mfp-regs -mno-fp-regs -mno-soft-float -msoft-float
  257.  
  258.               _S_y_s_t_e_m _V _O_p_t_i_o_n_s
  259.  
  260.  
  261.  
  262. GNU Tools                   1993/10/13                          4
  263.  
  264.  
  265.  
  266.  
  267.  
  268. GCC(1)                      GNU Tools                      GCC(1)
  269.  
  270.  
  271.               -G -Qy -Qn -YP,_p_a_t_h_s -Ym,_d_i_r
  272.  
  273.        CCooddee GGeenneerraattiioonn OOppttiioonnss
  274.               -fcall-saved-_r_e_g -fcall-used-_r_e_g -ffixed-_r_e_g
  275.               -finhibit-size-directive -fnonnull-objects
  276.               -fno-common -fno-ident -fno-gnu-linker
  277.               -fpcc-struct-return -fpic -fPIC -freg-struct-return
  278.               -fshared-data -fshort-enums -fshort-double
  279.               -fvolatile -fvolatile-global -fverbose-asm
  280.  
  281. OOVVEERRAALLLL OOPPTTIIOONNSS
  282.        --xx _l_a_n_g_u_a_g_e
  283.               Specify  explicitly  the _l_a_n_g_u_a_g_e for the following
  284.               input files (rather than choosing a  default  based
  285.               on  the file name suffix) .  This option applies to
  286.               all following input files until the next  `--xx'  op-
  287.               tion.    Possible   values  of  _l_a_n_g_u_a_g_e  are  `cc',
  288.               `oobbjjeeccttiivvee--cc',  `cc--hheeaaddeerr',  `cc++++',   `ccpppp--oouuttppuutt',
  289.               `aasssseemmbblleerr', and `aasssseemmbblleerr--wwiitthh--ccpppp'.
  290.  
  291.        --xx nnoonnee
  292.               Turn  off  any specification of a language, so that
  293.               subsequent files are  handled  according  to  their
  294.               file  name  suffixes  (as  they are if `--xx' has not
  295.               been used at all).
  296.  
  297.        If you want only some of the four stages (preprocess, com-
  298.        pile,  assemble, link), you can use `--xx' (or filename suf-
  299.        fixes) to tell ggcccc where to start, and one of the  options
  300.        `--cc',  `--SS',  or  `--EE'  to say where ggcccc is to stop.  Note
  301.        that some combinations (for example, `--xx  ccpppp--oouuttppuutt  --EE')
  302.        instruct ggcccc to do nothing at all.
  303.  
  304.        --cc     Compile  or  assemble  the source files, but do not
  305.               link.  The compiler output is an object file corre-
  306.               sponding to each source file.
  307.  
  308.               By  default,  GCC  makes the object file name for a
  309.               source file by replacing  the  suffix  `..cc',  `..ii',
  310.               `..ss',  etc.,  with  `..oo'.  Use --oo to select another
  311.               name.
  312.  
  313.               GCC ignores any  unrecognized  input  files  (those
  314.               that  do  not require compilation or assembly) with
  315.               the --cc option.
  316.  
  317.        --SS     Stop after the stage of compilation proper; do  not
  318.               assemble.  The output is an assembler code file for
  319.               each non-assembler input file specified.
  320.  
  321.               By default, GCC makes the assembler file name for a
  322.               source  file  by  replacing  the suffix `..cc', `..ii',
  323.               etc., with `..ss'.  Use --oo to select another name.
  324.  
  325.  
  326.  
  327.  
  328. GNU Tools                   1993/10/13                          5
  329.  
  330.  
  331.  
  332.  
  333.  
  334. GCC(1)                      GNU Tools                      GCC(1)
  335.  
  336.  
  337.               GCC ignores any input files that don't require com-
  338.               pilation.
  339.  
  340.        --EE     Stop  after the preprocessing stage; do not run the
  341.               compiler proper.  The output is preprocessed source
  342.               code, which is sent to the standard output.
  343.  
  344.               GCC ignores input files which don't require prepro-
  345.               cessing.
  346.  
  347.        --oo _f_i_l_e
  348.               Place output in file _f_i_l_e.  This applies regardless
  349.               to  whatever  sort  of  output  GCC  is  producing,
  350.               whether it be an executable file, an  object  file,
  351.               an assembler file or preprocessed C code.
  352.  
  353.               Since  only  one  output  file can be specified, it
  354.               does not make sense to use `--oo' when compiling more
  355.               than  one  input  file, unless you are producing an
  356.               executable file as output.
  357.  
  358.               If you do not specify `--oo', the default is  to  put
  359.               an  executable file in `aa..oouutt', the object file for
  360.               `_s_o_u_r_c_e.._s_u_f_f_i_x' in `_s_o_u_r_c_e..oo', its  assembler  file
  361.               in  `_s_o_u_r_c_e..ss',  and  all  preprocessed C source on
  362.               standard output.
  363.  
  364.        --vv     Print (on standard error output) the commands  exe-
  365.               cuted to run the stages of compilation.  Also print
  366.               the version number of the compiler  driver  program
  367.               and of the preprocessor and the compiler proper.
  368.  
  369.        --ppiippee  Use  pipes rather than temporary files for communi-
  370.               cation between the various stages  of  compilation.
  371.               This fails to work on some systems where the assem-
  372.               bler cannot read from a pipe; but the GNU assembler
  373.               has no trouble.
  374.  
  375.  
  376. LLAANNGGUUAAGGEE OOPPTTIIOONNSS
  377.        The  following  options  control the dialect of C that the
  378.        compiler accepts:
  379.  
  380.        --aannssii  Support all ANSI standard C programs.
  381.  
  382.               This turns off certain features of GNU C  that  are
  383.               incompatible  with  ANSI C, such as the aassmm, iinnlliinnee
  384.               and ttyyppeeooff keywords, and predefined macros such  as
  385.               uunniixx  and  vvaaxx that identify the type of system you
  386.               are using.  It also  enables  the  undesirable  and
  387.               rarely  used  ANSI  trigraph feature, and disallows
  388.               `$$' as part of identifiers.
  389.  
  390.               The  alternate  keywords  ____aassmm____,   ____eexxtteennssiioonn____,
  391.  
  392.  
  393.  
  394. GNU Tools                   1993/10/13                          6
  395.  
  396.  
  397.  
  398.  
  399.  
  400. GCC(1)                      GNU Tools                      GCC(1)
  401.  
  402.  
  403.               ____iinnlliinnee____  and ____ttyyppeeooff____ continue to work despite
  404.               `--aannssii'.  You would not want to use them in an ANSI
  405.               C  program, of course, but it is useful to put them
  406.               in header files that might be included in  compila-
  407.               tions  done  with  `--aannssii'.   Alternate  predefined
  408.               macros such as ____uunniixx____ and ____vvaaxx____ are also avail-
  409.               able, with or without `--aannssii'.
  410.  
  411.               The `--aannssii' option does not cause non-ANSI programs
  412.               to be rejected gratuitously.  For that, `--ppeeddaannttiicc'
  413.               is required in addition to `--aannssii'.
  414.  
  415.               The preprocessor predefines a macro ____SSTTRRIICCTT__AANNSSII____
  416.               when you use the `--aannssii' option.  Some header files
  417.               may  notice  this  macro and refrain from declaring
  418.               certain functions or defining certain  macros  that
  419.               the  ANSI  standard  doesn't  call  for; this is to
  420.               avoid interfering with any programs that might  use
  421.               these names for other things.
  422.  
  423.        --ffnnoo--aassmm
  424.               Do  not  recognize  aassmm, iinnlliinnee or ttyyppeeooff as a key-
  425.               word.  These words may then be used as identifiers.
  426.               You  can use ____aassmm____, ____iinnlliinnee____ and ____ttyyppeeooff____ in-
  427.               stead.  `--aannssii' implies `--ffnnoo--aassmm'.
  428.  
  429.        --ffnnoo--bbuuiillttiinn
  430.               Don't recognize built-in functions that do not  be-
  431.               gin  with  two leading underscores.  Currently, the
  432.               functions affected include __eexxiitt, aabboorrtt, aabbss, aalllloo--
  433.               ccaa,  ccooss,  eexxiitt,  ffaabbss,  llaabbss, mmeemmccmmpp, mmeemmccppyy, ssiinn,
  434.               ssqqrrtt, ssttrrccmmpp, ssttrrccppyy, and ssttrrlleenn.
  435.  
  436.               The `--aannssii' option prevents aallllooccaa and  __eexxiitt  from
  437.               being builtin functions.
  438.  
  439.        --ffnnoo--ssttrriicctt--pprroottoottyyppee
  440.               Treat  a  function  declaration  with no arguments,
  441.               such as `iinntt ffoooo ();', as C would treat it--as say-
  442.               ing  nothing about the number of arguments or their
  443.               types (C++ only).  Normally, such a declaration  in
  444.               C++ means that the function ffoooo takes no arguments.
  445.  
  446.        --ttrriiggrraapphhss
  447.               Support ANSI C trigraphs.  The `--aannssii'  option  im-
  448.               plies `--ttrriiggrraapphhss'.
  449.  
  450.        --ttrraaddiittiioonnaall
  451.               Attempt  to  support  some aspects of traditional C
  452.               compilers.  For details, see the GNU C Manual;  the
  453.               duplicate  list  here  has  been deleted so that we
  454.               won't get complaints when it is out of date.
  455.  
  456.               But one note  about  C++  programs  only  (not  C).
  457.  
  458.  
  459.  
  460. GNU Tools                   1993/10/13                          7
  461.  
  462.  
  463.  
  464.  
  465.  
  466. GCC(1)                      GNU Tools                      GCC(1)
  467.  
  468.  
  469.               `--ttrraaddiittiioonnaall'  has  one additional effect for C++:
  470.               assignment to tthhiiss is permitted.  This is the  same
  471.               as the effect of `--fftthhiiss--iiss--vvaarriiaabbllee'.
  472.  
  473.        --ttrraaddiittiioonnaall--ccpppp
  474.               Attempt  to  support  some aspects of traditional C
  475.               preprocessors.   This  includes  the   items   that
  476.               specifically  mention  the  preprocessor above, but
  477.               none of the other effects of `--ttrraaddiittiioonnaall'.
  478.  
  479.        --ffddoollllaarrss--iinn--iiddeennttiiffiieerrss
  480.               Permit the use of `$$' in  identifiers  (C++  only).
  481.               You  can  also use `--ffnnoo--ddoollllaarrss--iinn--iiddeennttiiffiieerrss' to
  482.               explicitly prohibit use of `$$'.   (GNU  C++  allows
  483.               `$$'  by default on some target systems but not oth-
  484.               ers.)
  485.  
  486.        --ffeennuumm--iinntt--eeqquuiivv
  487.               Permit implicit conversion of  iinntt  to  enumeration
  488.               types  (C++ only).  Normally GNU C++ allows conver-
  489.               sion of eennuumm to iinntt, but not the other way  around.
  490.  
  491.        --ffeexxtteerrnnaall--tteemmppllaatteess
  492.               Produce  smaller code for template declarations, by
  493.               generating only a  single  copy  of  each  template
  494.               function  where  it  is defined (C++ only).  To use
  495.               this option successfully, you must  also  mark  all
  496.               files  that  use  templates  with  either  `##pprraaggmmaa
  497.               iimmpplleemmeennttaattiioonn'  (the   definition)   or   `##pprraaggmmaa
  498.               iinntteerrffaaccee' (declarations).
  499.  
  500.               When     your     code     is     compiled     with
  501.               `--ffeexxtteerrnnaall--tteemmppllaatteess', all template instantiations
  502.               are  external.   You must arrange for all necessary
  503.               instantiations  to  appear  in  the  implementation
  504.               file;  you  can  do this with a ttyyppeeddeeff that refer-
  505.               ences each instantiation needed.  Conversely,  when
  506.               you    compile    using    the    default    option
  507.               `--ffnnoo--eexxtteerrnnaall--tteemmppllaatteess', all template  instantia-
  508.               tions are explicitly internal.
  509.  
  510.        --ffaallll--vviirrttuuaall
  511.               Treat all possible member functions as virtual, im-
  512.               plicitly.  All member functions  (except  for  con-
  513.               structor  functions and nneeww or ddeelleettee member opera-
  514.               tors) are treated as virtual functions of the class
  515.               where they appear.
  516.  
  517.               This  does  not mean that all calls to these member
  518.               functions will be made through the  internal  table
  519.               of  virtual  functions.   Under some circumstances,
  520.               the compiler can determine that a call to  a  given
  521.               virtual  function  can  be  made directly; in these
  522.               cases the calls are direct in any case.
  523.  
  524.  
  525.  
  526. GNU Tools                   1993/10/13                          8
  527.  
  528.  
  529.  
  530.  
  531.  
  532. GCC(1)                      GNU Tools                      GCC(1)
  533.  
  534.  
  535.        --ffccoonndd--mmiissmmaattcchh
  536.               Allow conditional expressions with mismatched types
  537.               in  the  second  and third arguments.  The value of
  538.               such an expression is void.
  539.  
  540.        --fftthhiiss--iiss--vvaarriiaabbllee
  541.               Permit assignment to tthhiiss (C++ only).  The incorpo-
  542.               ration  of  user-defined free store management into
  543.               C++ has made assignment to `tthhiiss'  an  anachronism.
  544.               Therefore,  by  default  it is invalid to assign to
  545.               tthhiiss within a class member function.  However,  for
  546.               backwards compatibility, you can make it valid with
  547.               `--fftthhiiss--iiss--vvaarriiaabbllee'.
  548.  
  549.        --ffuunnssiiggnneedd--cchhaarr
  550.               Let the type cchhaarr be unsigned, like uunnssiiggnneedd  cchhaarr.
  551.  
  552.               Each  kind  of  machine has a default for what cchhaarr
  553.               should be.  It is either like uunnssiiggnneedd cchhaarr by  de-
  554.               fault or like ssiiggnneedd cchhaarr by default.
  555.  
  556.               Ideally,  a  portable  program  should  always  use
  557.               ssiiggnneedd cchhaarr or uunnssiiggnneedd cchhaarr when it depends on the
  558.               signedness  of  an  object.  But many programs have
  559.               been written to use plain cchhaarr and expect it to  be
  560.               signed,  or  expect it to be unsigned, depending on
  561.               the machines they were written for.   This  option,
  562.               and  its  inverse, let you make such a program work
  563.               with the opposite default.
  564.  
  565.               The type cchhaarr is always a distinct type  from  each
  566.               of  ssiiggnneedd  cchhaarr and uunnssiiggnneedd cchhaarr, even though its
  567.               behavior is always just like one of those two.
  568.  
  569.        --ffssiiggnneedd--cchhaarr
  570.               Let the type cchhaarr be signed, like ssiiggnneedd cchhaarr.
  571.  
  572.               Note     that     this     is     equivalent     to
  573.               `--ffnnoo--uunnssiiggnneedd--cchhaarr', which is the negative form of
  574.               `--ffuunnssiiggnneedd--cchhaarr'.  Likewise, `--ffnnoo--ssiiggnneedd--cchhaarr' is
  575.               equivalent to `--ffuunnssiiggnneedd--cchhaarr'.
  576.  
  577.        --ffssiiggnneedd--bbiittffiieellddss
  578.  
  579.        --ffuunnssiiggnneedd--bbiittffiieellddss
  580.  
  581.        --ffnnoo--ssiiggnneedd--bbiittffiieellddss
  582.  
  583.        --ffnnoo--uunnssiiggnneedd--bbiittffiieellddss
  584.               These  options control whether a bitfield is signed
  585.               or  unsigned,  when  declared  with   no   explicit
  586.               `ssiiggnneedd' or `uunnssiiggnneedd' qualifier.  By default, such
  587.               a bitfield is signed, because this  is  consistent:
  588.               the  basic  integer  types  such  as iinntt are signed
  589.  
  590.  
  591.  
  592. GNU Tools                   1993/10/13                          9
  593.  
  594.  
  595.  
  596.  
  597.  
  598. GCC(1)                      GNU Tools                      GCC(1)
  599.  
  600.  
  601.               types.
  602.  
  603.               However, when you specify `--ttrraaddiittiioonnaall', bitfields
  604.               are all unsigned no matter what.
  605.  
  606.        --ffwwrriittaabbllee--ssttrriinnggss
  607.               Store string constants in the writable data segment
  608.               and don't uniquize them.  This is for compatibility
  609.               with  old programs which assume they can write into
  610.               string constants.  `--ttrraaddiittiioonnaall' also has this ef-
  611.               fect.
  612.  
  613.               Writing  into  string constants is a very bad idea;
  614.               "constants" should be constant.
  615.  
  616. PPRREEPPRROOCCEESSSSOORR OOPPTTIIOONNSS
  617.        These options control the C preprocessor, which is run  on
  618.        each C source file before actual compilation.
  619.  
  620.        If  you  use the `--EE' option, GCC does nothing except pre-
  621.        processing.  Some of these options make sense only togeth-
  622.        er with `--EE' because they cause the preprocessor output to
  623.        be unsuitable for actual compilation.
  624.  
  625.        --iinncclluuddee _f_i_l_e
  626.               Process _f_i_l_e as input before processing the regular
  627.               input  file.   In  effect, the contents of _f_i_l_e are
  628.               compiled first.  Any `--DD' and `--UU' options  on  the
  629.               command  line are always processed before `--iinncclluuddee
  630.               _f_i_l_e', regardless of the order in  which  they  are
  631.               written.  All the `--iinncclluuddee' and `--iimmaaccrrooss' options
  632.               are processed in the order in which they are  writ-
  633.               ten.
  634.  
  635.        --iimmaaccrrooss _f_i_l_e
  636.               Process  _f_i_l_e  as  input,  discarding the resulting
  637.               output, before processing the regular  input  file.
  638.               Because  the output generated from _f_i_l_e is discard-
  639.               ed, the only effect of `--iimmaaccrrooss _f_i_l_e' is  to  make
  640.               the macros defined in _f_i_l_e available for use in the
  641.               main input.  The preprocessor  evaluates  any  `--DD'
  642.               and  `--UU'  options  on the command line before pro-
  643.               cessing `--iimmaaccrrooss_f_i_l_e', regardless of the order  in
  644.               which  they  are  written.   All the `--iinncclluuddee' and
  645.               `--iimmaaccrrooss' options are processed in  the  order  in
  646.               which they are written.
  647.  
  648.        --iiddiirraafftteerr _d_i_r
  649.               Add  the  directory _d_i_r to the second include path.
  650.               The directories on  the  second  include  path  are
  651.               searched  when a header file is not found in any of
  652.               the directories in the main include path  (the  one
  653.               that `--II' adds to).
  654.  
  655.  
  656.  
  657.  
  658. GNU Tools                   1993/10/13                         10
  659.  
  660.  
  661.  
  662.  
  663.  
  664. GCC(1)                      GNU Tools                      GCC(1)
  665.  
  666.  
  667.        --iipprreeffiixx _p_r_e_f_i_x
  668.               Specify   _p_r_e_f_i_x   as  the  prefix  for  subsequent
  669.               `--iiwwiitthhpprreeffiixx' options.
  670.  
  671.        --iiwwiitthhpprreeffiixx _d_i_r
  672.               Add a directory to the second  include  path.   The
  673.               directory's  name  is  made by concatenating _p_r_e_f_i_x
  674.               and _d_i_r, where _p_r_e_f_i_x was specified previously with
  675.               `--iipprreeffiixx'.
  676.  
  677.        --nnoossttddiinncc
  678.               Do  not  search the standard system directories for
  679.               header files.  Only the directories you have speci-
  680.               fied  with `--II' options (and the current directory,
  681.               if appropriate) are searched.
  682.  
  683.               By using both `--nnoossttddiinncc' and `--II--', you can  limit
  684.               the include-file search file to only those directo-
  685.               ries you specify explicitly.
  686.  
  687.        --nnoossttddiinncc++++
  688.               Do not search for header files in the  C++-specific
  689.               standard directories, but do still search the other
  690.               standard directories.  (This option  is  used  when
  691.               building `lliibbgg++++'.)
  692.  
  693.        --uunnddeeff Do  not predefine any nonstandard macros.  (Includ-
  694.               ing architecture flags).
  695.  
  696.        --EE     Run only the C preprocessor.  Preprocess all the  C
  697.               source  files  specified  and output the results to
  698.               standard output or to the specified output file.
  699.  
  700.        --CC     Tell the  preprocessor  not  to  discard  comments.
  701.               Used with the `--EE' option.
  702.  
  703.        --PP     Tell  the preprocessor not to generate `##lliinnee' com-
  704.               mands.  Used with the `--EE' option.
  705.  
  706.        --MM  [[ --MMGG ]]
  707.               Tell the preprocessor to output a rule suitable for
  708.               mmaakkee  describing  the  dependencies  of each object
  709.               file.  For each source file, the preprocessor  out-
  710.               puts  one mmaakkee-rule whose target is the object file
  711.               name for that source file  and  whose  dependencies
  712.               are all the files `##iinncclluuddee'd in it.  This rule may
  713.               be a single line or may be continued with  `\\'-new-
  714.               line  if  it is long.  The list of rules is printed
  715.               on standard output instead of  the  preprocessed  C
  716.               program.
  717.  
  718.               `--MM' implies `--EE'.
  719.  
  720.               `--MMGG'  says to treat missing header files as gener-
  721.  
  722.  
  723.  
  724. GNU Tools                   1993/10/13                         11
  725.  
  726.  
  727.  
  728.  
  729.  
  730. GCC(1)                      GNU Tools                      GCC(1)
  731.  
  732.  
  733.               ated files and assume they live in the same  direc-
  734.               tory  as  the source file.  It must be specified in
  735.               addition to `--MM'.
  736.  
  737.        --MMMM  [[ --MMGG ]]
  738.               Like `--MM' but the output  mentions  only  the  user
  739.               header  files included with `##iinncclluuddee _f_i_l_e"'.  Sys-
  740.               tem header files included  with  `##iinncclluuddee  <<_f_i_l_e>'
  741.               are omitted.
  742.  
  743.        --MMDD    Like `--MM' but the dependency information is written
  744.               to files with names made  by  replacing  `..oo'  with
  745.               `..dd'  at the end of the output file names.  This is
  746.               in   addition   to   compiling    the    file    as
  747.               specified--`--MMDD' does not inhibit ordinary compila-
  748.               tion the way `--MM' does.
  749.  
  750.               The Mach utility `mmdd' can be used to merge the `..dd'
  751.               files  into  a  single dependency file suitable for
  752.               using with the `mmaakkee' command.
  753.  
  754.        --MMMMDD   Like `--MMDD' except mention only user  header  files,
  755.               not system header files.
  756.  
  757.        --HH     Print  the  name of each header file used, in addi-
  758.               tion to other normal activities.
  759.  
  760.        --AA_q_u_e_s_t_i_o_n((_a_n_s_w_e_r))
  761.               Assert the answer _a_n_s_w_e_r for _q_u_e_s_t_i_o_n, in  case  it
  762.               is  tested  with a preprocessor conditional such as
  763.               `##iiff ##_q_u_e_s_t_i_o_n((_a_n_s_w_e_r))'.  `--AA--' disables the  stan-
  764.               dard  assertions  that normally describe the target
  765.               machine.
  766.  
  767.        --AA_q_u_e_s_t_i_o_n
  768.               (_a_n_s_w_e_r) Assert the answer _a_n_s_w_e_r for _q_u_e_s_t_i_o_n,  in
  769.               case  it  is tested with a preprocessor conditional
  770.               such as `##iiff  #_q_u_e_s_t_i_o_n(_a_n_s_w_e_r)'.   `--AA--'  disables
  771.               the  standard assertions that normally describe the
  772.               target machine.
  773.  
  774.        --DD_m_a_c_r_o
  775.               Define macro _m_a_c_r_o with the string `11' as its defi-
  776.               nition.
  777.  
  778.        --DD_m_a_c_r_o==_d_e_f_n
  779.               Define  macro  _m_a_c_r_o  as  _d_e_f_n.    All instances of
  780.               `--DD' on the command line are processed  before  any
  781.               `--UU' options.
  782.  
  783.        --UU_m_a_c_r_o
  784.               Undefine  macro  _m_a_c_r_o.  `--UU' options are evaluated
  785.               after all `--DD' options, but before  any  `--iinncclluuddee'
  786.               and `--iimmaaccrrooss' options.
  787.  
  788.  
  789.  
  790. GNU Tools                   1993/10/13                         12
  791.  
  792.  
  793.  
  794.  
  795.  
  796. GCC(1)                      GNU Tools                      GCC(1)
  797.  
  798.  
  799.        --ddMM    Tell  the preprocessor to output only a list of the
  800.               macro definitions that are in effect at the end  of
  801.               preprocessing.  Used with the `--EE' option.
  802.  
  803.        --ddDD    Tell the preprocessor to pass all macro definitions
  804.               into the output, in their proper  sequence  in  the
  805.               rest of the output.
  806.  
  807.        --ddNN    Like `--ddDD' except that the macro arguments and con-
  808.               tents are omitted.  Only `##ddeeffiinnee _n_a_m_e' is included
  809.               in the output.
  810.  
  811. AASSSSEEMMBBLLEERR OOPPTTIIOONN
  812.        --WWaa,,_o_p_t_i_o_n
  813.               Pass  _o_p_t_i_o_n as an option to the assembler.  If _o_p_-
  814.               _t_i_o_n contains commas, it is split into multiple op-
  815.               tions at the commas.
  816.  
  817. LLIINNKKEERR OOPPTTIIOONNSS
  818.        These  options  come into play when the compiler links ob-
  819.        ject files into an executable output file.  They are mean-
  820.        ingless if the compiler is not doing a link step.
  821.  
  822.        _o_b_j_e_c_t_-_f_i_l_e_-_n_a_m_e
  823.               A  file  name that does not end in a special recog-
  824.               nized suffix is considered to name an  object  file
  825.               or  library.   (Object files are distinguished from
  826.               libraries by the linker according to the file  con-
  827.               tents.)   If  GCC  does  a  link step, these object
  828.               files are used as input to the linker.
  829.  
  830.        --ll_l_i_b_r_a_r_y
  831.               Use the library named _l_i_b_r_a_r_y when linking.
  832.  
  833.               The linker searches a standard list of  directories
  834.               for  the  library,  which  is actually a file named
  835.               `lliibb_l_i_b_r_a_r_y.a'.  The linker then uses this file  as
  836.               if it had been specified precisely by name.
  837.  
  838.               The  directories  searched include several standard
  839.               system directories plus any that you  specify  with
  840.               `--LL'.
  841.  
  842.               Normally  the  files  found  this  way  are library
  843.               files--archive  files  whose  members  are   object
  844.               files.  The linker handles an archive file by scan-
  845.               ning through it for members  which  define  symbols
  846.               that  have  so far been referenced but not defined.
  847.               However, if the linker  finds  an  ordinary  object
  848.               file  rather  than  a  library,  the object file is
  849.               linked in the usual fashion.  The  only  difference
  850.               between  using an `--ll' option and specifying a file
  851.               name is that `--ll' surrounds _l_i_b_r_a_r_y with `lliibb'  and
  852.               `..aa' and searches several directories.
  853.  
  854.  
  855.  
  856. GNU Tools                   1993/10/13                         13
  857.  
  858.  
  859.  
  860.  
  861.  
  862. GCC(1)                      GNU Tools                      GCC(1)
  863.  
  864.  
  865.        --lloobbjjcc You  need this special case of the --ll option in or-
  866.               der to link an Objective C program.
  867.  
  868.        --nnoossttaarrttffiilleess
  869.               Do not use the standard system startup  files  when
  870.               linking.  The standard libraries are used normally.
  871.  
  872.        --nnoossttddlliibb
  873.               Don't use the standard system libraries and startup
  874.               files  when  linking.   Only  the files you specify
  875.               will be passed to the linker.
  876.  
  877.        --ssttaattiicc
  878.               On systems that support dynamic linking, this  pre-
  879.               vents  linking with the shared libraries.  On other
  880.               systems, this option has no effect.
  881.  
  882.        --sshhaarreedd
  883.               Produce a shared object which can  then  be  linked
  884.               with  other  objects to form an executable.  Only a
  885.               few systems support this option.
  886.  
  887.        --ssyymmbboolliicc
  888.               Bind references to global symbols when  building  a
  889.               shared  object.   Warn  about any unresolved refer-
  890.               ences (unless overridden by the link editor  option
  891.               `--XXlliinnkkeerr  --zz  --XXlliinnkkeerr ddeeffss').  Only a few systems
  892.               support this option.
  893.  
  894.        --XXlliinnkkeerr _o_p_t_i_o_n
  895.               Pass _o_p_t_i_o_n as an option to the  linker.   You  can
  896.               use  this  to supply system-specific linker options
  897.               which GNU CC does not know how to recognize.
  898.  
  899.               If you want to pass an option that takes  an  argu-
  900.               ment,  you  must use `--XXlliinnkkeerr' twice, once for the
  901.               option and once for the argument.  For example,  to
  902.               pass `--aasssseerrtt ddeeffiinniittiioonnss', you must write `--XXlliinnkk--
  903.               eerr --aasssseerrtt --XXlliinnkkeerr ddeeffiinniittiioonnss'.  It does not work
  904.               to  write `--XXlliinnkkeerr ""--aasssseerrtt ddeeffiinniittiioonnss""', because
  905.               this passes the entire string as a single argument,
  906.               which is not what the linker expects.
  907.  
  908.        --WWll,,_o_p_t_i_o_n
  909.               Pass  _o_p_t_i_o_n as an option to the linker.  If _o_p_t_i_o_n
  910.               contains commas, it is split into multiple  options
  911.               at the commas.
  912.  
  913.        --uu _s_y_m_b_o_l
  914.               Pretend  the  symbol  _s_y_m_b_o_l is undefined, to force
  915.               linking of library modules to define it.   You  can
  916.               use  `--uu'  multiple times with different symbols to
  917.               force loading of additional library modules.
  918.  
  919.  
  920.  
  921.  
  922. GNU Tools                   1993/10/13                         14
  923.  
  924.  
  925.  
  926.  
  927.  
  928. GCC(1)                      GNU Tools                      GCC(1)
  929.  
  930.  
  931. DDIIRREECCTTOORRYY OOPPTTIIOONNSS
  932.        These options specify directories  to  search  for  header
  933.        files, for libraries and for parts of the compiler:
  934.  
  935.        --II_d_i_r  Append  directory  _d_i_r  to  the list of directories
  936.               searched for include files.
  937.  
  938.        --II--    Any directories you specify with `--II'  options  be-
  939.               fore  the  `--II--'  option  are searched only for the
  940.               case of `##iinncclluuddee ""_f_i_l_e""'; they  are  not  searched
  941.               for `##iinncclluuddee <<_f_i_l_e>'.
  942.  
  943.               If  additional  directories are specified with `--II'
  944.               options after  the  `--II--',  these  directories  are
  945.               searched for all `##iinncclluuddee' directives.  (Ordinari-
  946.               ly _a_l_l `--II' directories are used this way.)
  947.  
  948.               In addition, the `--II--' option inhibits the  use  of
  949.               the current directory (where the current input file
  950.               came from) as the first search directory for  `##iinn--
  951.               cclluuddee  ""_f_i_l_e""'.   There  is no way to override this
  952.               effect  of  `--II--'.   With  `--II..'  you  can  specify
  953.               searching  the directory which was current when the
  954.               compiler was invoked.  That is not exactly the same
  955.               as what the preprocessor does by default, but it is
  956.               often satisfactory.
  957.  
  958.               `--II--' does not inhibit the use of the standard sys-
  959.               tem  directories for header files.  Thus, `--II--' and
  960.               `--nnoossttddiinncc' are independent.
  961.  
  962.        --LL_d_i_r  Add directory _d_i_r to the list of directories to  be
  963.               searched for `--ll'.
  964.  
  965.        --BB_p_r_e_f_i_x
  966.               This  option  specifies  where to find the executa-
  967.               bles, libraries and data files of the compiler  it-
  968.               self.
  969.  
  970.               The compiler driver program runs one or more of the
  971.               subprograms `ccpppp', `cccc11' (or, for C++,  `cccc11pplluuss'),
  972.               `aass'  and  `lldd'.   It  tries _p_r_e_f_i_x as a prefix for
  973.               each program it tries to run, both with and without
  974.               `_m_a_c_h_i_n_e//_v_e_r_s_i_o_n//'.
  975.  
  976.               For  each subprogram to be run, the compiler driver
  977.               first tries the `--BB' prefix, if any.  If that  name
  978.               is  not  found,  or  if `--BB' was not specified, the
  979.               driver  tries  two  standard  prefixes,  which  are
  980.               `//uussrr//lliibb//ggcccc//'  and `//uussrr//llooccaall//lliibb//ggcccc--lliibb//'.  If
  981.               neither of those results in a  file  name  that  is
  982.               found, the compiler driver searches for the unmodi-
  983.               fied program name, using the directories  specified
  984.               in your `PPAATTHH' environment variable.
  985.  
  986.  
  987.  
  988. GNU Tools                   1993/10/13                         15
  989.  
  990.  
  991.  
  992.  
  993.  
  994. GCC(1)                      GNU Tools                      GCC(1)
  995.  
  996.  
  997.               The   run-time  support  file  `lliibbggcccc..aa'  is  also
  998.               searched for using the `--BB' prefix, if needed.   If
  999.               it  is  not  found there, the two standard prefixes
  1000.               above are tried, and that is all.  The file is left
  1001.               out  of the link if it is not found by those means.
  1002.               Most of the time, on most machines,  `lliibbggcccc..aa'  is
  1003.               not actually necessary.
  1004.  
  1005.               You  can  get a similar result from the environment
  1006.               variable GGCCCC__EEXXEECC__PPRREEFFIIXX; if  it  is  defined,  its
  1007.               value is used as a prefix in the same way.  If both
  1008.               the `--BB' option and  the  GGCCCC__EEXXEECC__PPRREEFFIIXX  variable
  1009.               are  present, the `--BB' option is used first and the
  1010.               environment variable value second.
  1011.  
  1012. WWAARRNNIINNGG OOPPTTIIOONNSS
  1013.        Warnings are diagnostic messages that report constructions
  1014.        which  are not inherently erroneous but which are risky or
  1015.        suggest there may have been an error.
  1016.  
  1017.        These options control the amount  and  kinds  of  warnings
  1018.        produced by GNU CC:
  1019.  
  1020.        --ffssyynnttaaxx--oonnllyy
  1021.               Check  the  code  for syntax errors, but don't emit
  1022.               any output.
  1023.  
  1024.        --ww     Inhibit all warning messages.
  1025.  
  1026.        --WWnnoo--iimmppoorrtt
  1027.               Inhibit warning messages about the use of  ##iimmppoorrtt.
  1028.  
  1029.        --ppeeddaannttiicc
  1030.               Issue  all  the  warnings  demanded  by strict ANSI
  1031.               standard C; reject all programs that use  forbidden
  1032.               extensions.
  1033.  
  1034.               Valid ANSI standard C programs should compile prop-
  1035.               erly with or without this option (though a rare few
  1036.               will  require  `--aannssii').  However, without this op-
  1037.               tion, certain GNU extensions and traditional C fea-
  1038.               tures  are  supported  as  well.  With this option,
  1039.               they are rejected.  There is no reason to _u_s_e  this
  1040.               option; it exists only to satisfy pedants.
  1041.  
  1042.               `--ppeeddaannttiicc' does not cause warning messages for use
  1043.               of the alternate keywords whose names begin and end
  1044.               with  `____'.  Pedantic warnings are also disabled in
  1045.               the expression that follows ____eexxtteennssiioonn____.   Howev-
  1046.               er,  only  system header files should use these es-
  1047.               cape  routes;  application  programs  should  avoid
  1048.               them.
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054. GNU Tools                   1993/10/13                         16
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060. GCC(1)                      GNU Tools                      GCC(1)
  1061.  
  1062.  
  1063.        --ppeeddaannttiicc--eerrrroorrss
  1064.               Like  `--ppeeddaannttiicc',  except that errors are produced
  1065.               rather than warnings.
  1066.  
  1067.        --WW     Print extra warning messages for these events:
  1068.  
  1069.           +o   A nonvolatile automatic variable might  be  changed
  1070.               by  a call to lloonnggjjmmpp.  These warnings are possible
  1071.               only in optimizing compilation.
  1072.  
  1073.               The compiler sees only the  calls  to  sseettjjmmpp.   It
  1074.               cannot  know where lloonnggjjmmpp will be called; in fact,
  1075.               a signal handler could call it at any point in  the
  1076.               code.  As a result, you may get a warning even when
  1077.               there is in fact no problem because lloonnggjjmmpp  cannot
  1078.               in  fact be called at the place which would cause a
  1079.               problem.
  1080.  
  1081.           +o   A function can return either with or without a val-
  1082.               ue.   (Falling  off the end of the function body is
  1083.               considered returning without a value.)   For  exam-
  1084.               ple, this function would evoke such a warning:
  1085.  
  1086.               foo (a)
  1087.               {
  1088.                 if (a > 0)
  1089.                   return a;
  1090.               }
  1091.  
  1092.               Spurious warnings can occur because GNU CC does not
  1093.               realize that certain functions (including aabboorrtt and
  1094.               lloonnggjjmmpp) will never return.
  1095.  
  1096.           +o   An  expression-statement or the left-hand side of a
  1097.               comma expression contains no side effects.  To sup-
  1098.               press  the  warning,  cast the unused expression to
  1099.               void.  For example, an expression such as  `xx[[ii,,jj]]'
  1100.               will  cause a warning, but `xx[[((vvooiidd))ii,,jj]]' will not.
  1101.  
  1102.           +o   An unsigned value is compared against zero with `>>'
  1103.               or `<<=='.
  1104.  
  1105.  
  1106.        --WWiimmpplliicciitt
  1107.               Warn whenever a function or parameter is implicitly
  1108.               declared.
  1109.  
  1110.        --WWrreettuurrnn--ttyyppee
  1111.               Warn whenever a function is defined with a  return-
  1112.               type that defaults to iinntt.  Also warn about any rree--
  1113.               ttuurrnn statement with no return-value in  a  function
  1114.               whose return-type is not vvooiidd.
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120. GNU Tools                   1993/10/13                         17
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126. GCC(1)                      GNU Tools                      GCC(1)
  1127.  
  1128.  
  1129.        --WWuunnuusseedd
  1130.               Warn whenever a local variable is unused aside from
  1131.               its declaration, whenever a  function  is  declared
  1132.               static  but never defined, and whenever a statement
  1133.               computes a result that is explicitly not used.
  1134.  
  1135.        --WWsswwiittcchh
  1136.               Warn whenever a sswwiittcchh statement has  an  index  of
  1137.               enumeral  type  and lacks a ccaassee for one or more of
  1138.               the named codes of that enumeration.  (The presence
  1139.               of  a  ddeeffaauulltt  label prevents this warning.)  ccaassee
  1140.               labels outside the enumeration range  also  provoke
  1141.               warnings when this option is used.
  1142.  
  1143.        --WWccoommmmeenntt
  1144.               Warn whenever a comment-start sequence `//**' appears
  1145.               in a comment.
  1146.  
  1147.        --WWttrriiggrraapphhss
  1148.               Warn if any  trigraphs  are  encountered  (assuming
  1149.               they are enabled).
  1150.  
  1151.        --WWffoorrmmaatt
  1152.               Check calls to pprriinnttff and ssccaannff, etc., to make sure
  1153.               that the arguments supplied have types  appropriate
  1154.               to the format string specified.
  1155.  
  1156.        --WWcchhaarr--ssuubbssccrriippttss
  1157.               Warn  if an array subscript has type cchhaarr.  This is
  1158.               a common cause of error, as programmers often  for-
  1159.               get that this type is signed on some machines.
  1160.  
  1161.        --WWuunniinniittiiaalliizzeedd
  1162.               An  automatic  variable is used without first being
  1163.               initialized.
  1164.  
  1165.               These warnings are possible only in optimizing com-
  1166.               pilation,  because  they require data flow informa-
  1167.               tion that is computed only when optimizing.  If you
  1168.               don't  specify  `--OO',  you  simply  won't get these
  1169.               warnings.
  1170.  
  1171.               These warnings occur only for  variables  that  are
  1172.               candidates  for  register  allocation.   Therefore,
  1173.               they do not occur for a variable that  is  declared
  1174.               vvoollaattiillee,  or whose address is taken, or whose size
  1175.               is other than 1, 2, 4 or 8 bytes.   Also,  they  do
  1176.               not  occur  for  structures, unions or arrays, even
  1177.               when they are in registers.
  1178.  
  1179.               Note that there may be no warning about a  variable
  1180.               that is used only to compute a value that itself is
  1181.               never used, because such computations may be delet-
  1182.               ed  by  data  flow analysis before the warnings are
  1183.  
  1184.  
  1185.  
  1186. GNU Tools                   1993/10/13                         18
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192. GCC(1)                      GNU Tools                      GCC(1)
  1193.  
  1194.  
  1195.               printed.
  1196.  
  1197.               These warnings are made optional because GNU CC  is
  1198.               not  smart  enough  to  see all the reasons why the
  1199.               code might be correct despite appearing to have  an
  1200.               error.  Here is one example of how this can happen:
  1201.  
  1202.               {
  1203.                 int x;
  1204.                 switch (y)
  1205.                   {
  1206.                   case 1: x = 1;
  1207.                     break;
  1208.                   case 2: x = 4;
  1209.                     break;
  1210.                   case 3: x = 5;
  1211.                   }
  1212.                 foo (x);
  1213.               }
  1214.  
  1215.               If the value of yy is always 1, 2 or 3,  then  xx  is
  1216.               always  initialized,  but GNU CC doesn't know this.
  1217.               Here is another common case:
  1218.  
  1219.               {
  1220.                 int save_y;
  1221.                 if (change_y) save_y = y, y = new_y;
  1222.                 ...
  1223.                 if (change_y) y = save_y;
  1224.               }
  1225.  
  1226.               This has no bug because ssaavvee__yy is used only  if  it
  1227.               is set.
  1228.  
  1229.               Some  spurious  warnings  can be avoided if you de-
  1230.               clare as vvoollaattiillee all the functions  you  use  that
  1231.               never return.
  1232.  
  1233.        --WWppaarreenntthheesseess
  1234.               Warn  if  parentheses  are  omitted in certain con-
  1235.               texts.
  1236.  
  1237.        --WWtteemmppllaattee--ddeebbuuggggiinngg
  1238.               When using templates in a C++ program, warn if  de-
  1239.               bugging is not yet fully available (C++ only).
  1240.  
  1241.        --WWaallll  All  of the above `--WW' options combined.  These are
  1242.               all the options which pertain to usage that we rec-
  1243.               ommend  avoiding  and  that  we  believe is easy to
  1244.               avoid, even in conjunction with macros.
  1245.  
  1246.        The remaining `--WW......' options are not implied  by  `--WWaallll'
  1247.        because  they  warn  about  constructions that we consider
  1248.        reasonable to use, on occasion, in clean programs.
  1249.  
  1250.  
  1251.  
  1252. GNU Tools                   1993/10/13                         19
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258. GCC(1)                      GNU Tools                      GCC(1)
  1259.  
  1260.  
  1261.        --WWttrraaddiittiioonnaall
  1262.               Warn about certain constructs that  behave  differ-
  1263.               ently in traditional and ANSI C.
  1264.  
  1265.           +o   Macro  arguments  occurring within string constants
  1266.               in the macro body.  These would substitute the  ar-
  1267.               gument  in  traditional C, but are part of the con-
  1268.               stant in ANSI C.
  1269.  
  1270.           +o   A function declared external in one block and  then
  1271.               used after the end of the block.
  1272.  
  1273.           +o   A sswwiittcchh statement has an operand of type lloonngg.
  1274.  
  1275.  
  1276.        --WWsshhaaddooww
  1277.               Warn  whenever a local variable shadows another lo-
  1278.               cal variable.
  1279.  
  1280.        --WWiidd--ccllaasshh--_l_e_n
  1281.               Warn whenever two distinct identifiers match in the
  1282.               first  _l_e_n characters.  This may help you prepare a
  1283.               program that will compile  with  certain  obsolete,
  1284.               brain-damaged compilers.
  1285.  
  1286.        --WWppooiinntteerr--aarriitthh
  1287.               Warn about anything that depends on the "size of" a
  1288.               function type or of  vvooiidd.   GNU  C  assigns  these
  1289.               types  a size of 1, for convenience in calculations
  1290.               with vvooiidd ** pointers and pointers to functions.
  1291.  
  1292.        --WWccaasstt--qquuaall
  1293.               Warn whenever a pointer is cast so as to  remove  a
  1294.               type  qualifier from the target type.  For example,
  1295.               warn if a ccoonnsstt cchhaarr ** is cast to an ordinary  cchhaarr
  1296.               **.
  1297.  
  1298.        --WWccaasstt--aalliiggnn
  1299.               Warn  whenever  a pointer is cast such that the re-
  1300.               quired alignment of the target is  increased.   For
  1301.               example,  warn  if  a cchhaarr ** is cast to an iinntt ** on
  1302.               machines where integers can  only  be  accessed  at
  1303.               two- or four-byte boundaries.
  1304.  
  1305.        --WWwwrriittee--ssttrriinnggss
  1306.               Give  string  constants the type ccoonnsstt cchhaarr[[_l_e_n_g_t_h]]
  1307.               so that copying the address of one into a non-ccoonnsstt
  1308.               cchhaarr  ** pointer will get a warning.  These warnings
  1309.               will help you find at compile time  code  that  can
  1310.               try  to  write  into a string constant, but only if
  1311.               you have been very careful  about  using  ccoonnsstt  in
  1312.               declarations  and  prototypes.   Otherwise, it will
  1313.               just be a nuisance; this is why  we  did  not  make
  1314.               `--WWaallll' request these warnings.
  1315.  
  1316.  
  1317.  
  1318. GNU Tools                   1993/10/13                         20
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324. GCC(1)                      GNU Tools                      GCC(1)
  1325.  
  1326.  
  1327.        --WWccoonnvveerrssiioonn
  1328.               Warn  if  a prototype causes a type conversion that
  1329.               is different from what would happen to the same ar-
  1330.               gument  in  the  absence  of a prototype.  This in-
  1331.               cludes conversions of fixed point to  floating  and
  1332.               vice  versa,  and conversions changing the width or
  1333.               signedness of a fixed point  argument  except  when
  1334.               the same as the default promotion.
  1335.  
  1336.        --WWaaggggrreeggaattee--rreettuurrnn
  1337.               Warn  if  any  functions  that return structures or
  1338.               unions are defined or called.  (In languages  where
  1339.               you  can return an array, this also elicits a warn-
  1340.               ing.)
  1341.  
  1342.        --WWssttrriicctt--pprroottoottyyppeess
  1343.               Warn if a function is declared or  defined  without
  1344.               specifying the argument types.  (An old-style func-
  1345.               tion definition is permitted without a  warning  if
  1346.               preceded by a declaration which specifies the argu-
  1347.               ment types.)
  1348.  
  1349.        --WWmmiissssiinngg--pprroottoottyyppeess
  1350.               Warn if a global function is defined without a pre-
  1351.               vious  prototype  declaration.  This warning is is-
  1352.               sued even if the definition itself provides a  pro-
  1353.               totype.  The aim is to detect global functions that
  1354.               fail to be declared in header files.
  1355.  
  1356.        --WWmmiissssiinngg--ddeeccllaarraattiioonnss
  1357.               Warn if a global function is defined without a pre-
  1358.               vious  declaration.   Do  so even if the definition
  1359.               itself provides a prototype.  Use  this  option  to
  1360.               detect  global  functions  that are not declared in
  1361.               header files.
  1362.  
  1363.        --WWrreedduunnddaanntt--ddeeccllss
  1364.               Warn if anything is declared more than once in  the
  1365.               same  scope,  even in cases where multiple declara-
  1366.               tion is valid and changes nothing.
  1367.  
  1368.        --WWnneesstteedd--eexxtteerrnnss
  1369.               Warn if an eexxtteerrnn declaration is encountered within
  1370.               an function.
  1371.  
  1372.        --WWeennuumm--ccllaasshh
  1373.               Warn about conversion between different enumeration
  1374.               types (C++ only).
  1375.  
  1376.        --WWoovveerrllooaaddeedd--vviirrttuuaall
  1377.               (C++ only.)  In a derived class, the definitions of
  1378.               virtual  functions must match the type signature of
  1379.               a virtual function declared in the base class.  Use
  1380.               this  option  to  request  warnings  when a derived
  1381.  
  1382.  
  1383.  
  1384. GNU Tools                   1993/10/13                         21
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390. GCC(1)                      GNU Tools                      GCC(1)
  1391.  
  1392.  
  1393.               class declares a function that may be an  erroneous
  1394.               attempt to define a virtual function: that is, warn
  1395.               when a function with the same  name  as  a  virtual
  1396.               function  in the base class, but with a type signa-
  1397.               ture that doesn't match any virtual functions  from
  1398.               the base class.
  1399.  
  1400.        --WWiinnlliinnee
  1401.               Warn  if  a function can not be inlined, and either
  1402.               it was  declared  as  inline,  or  else  the  --ffiinn--
  1403.               lliinnee--ffuunnccttiioonnss option was given.
  1404.  
  1405.        --WWeerrrroorr
  1406.               Treat  warnings  as errors; abort compilation after
  1407.               any warning.
  1408.  
  1409. DDEEBBUUGGGGIINNGG OOPPTTIIOONNSS
  1410.        GNU CC has various special options that are used  for  de-
  1411.        bugging either your program or GCC:
  1412.  
  1413.        --gg     Produce debugging information in the operating sys-
  1414.               tem's native format (stabs, COFF, XCOFF, or DWARF).
  1415.               GDB can work with this debugging information.
  1416.  
  1417.               On most systems that use stabs format, `--gg' enables
  1418.               use of extra debugging information  that  only  GDB
  1419.               can  use;  this  extra  information makes debugging
  1420.               work better in GDB but will probably make other de-
  1421.               buggers  crash  or  refuse to read the program.  If
  1422.               you want to control for certain whether to generate
  1423.               the  extra  information, use `--ggssttaabbss++', `--ggssttaabbss',
  1424.               `--ggxxccooffff++',  `--ggxxccooffff',  `--ggddwwaarrff++',  or  `--ggddwwaarrff'
  1425.               (see below).
  1426.  
  1427.               Unlike most other C compilers, GNU CC allows you to
  1428.               use `--gg' with `--OO'.  The shortcuts taken  by  opti-
  1429.               mized  code may occasionally produce surprising re-
  1430.               sults: some variables you declared may not exist at
  1431.               all; flow of control may briefly move where you did
  1432.               not expect it; some statements may not be  executed
  1433.               because they compute constant results or their val-
  1434.               ues were already at hand; some statements may  exe-
  1435.               cute  in  different  places because they were moved
  1436.               out of loops.
  1437.  
  1438.               Nevertheless it proves possible to debug  optimized
  1439.               output.   This makes it reasonable to use the opti-
  1440.               mizer for programs that might have bugs.
  1441.  
  1442.        The following options are useful when GNU CC is  generated
  1443.        with the capability for more than one debugging format.
  1444.  
  1445.        --ggggddbb  Produce  debugging information in the native format
  1446.               (if that is supported), including GDB extensions if
  1447.  
  1448.  
  1449.  
  1450. GNU Tools                   1993/10/13                         22
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456. GCC(1)                      GNU Tools                      GCC(1)
  1457.  
  1458.  
  1459.               at all possible.
  1460.  
  1461.        --ggssttaabbss
  1462.               Produce  debugging  information in stabs format (if
  1463.               that is supported), without GDB  extensions.   This
  1464.               is the format used by DBX on most BSD systems.
  1465.  
  1466.        --ggssttaabbss++
  1467.               Produce  debugging  information in stabs format (if
  1468.               that is supported), using GNU extensions understood
  1469.               only  by  the GNU debugger (GDB).  The use of these
  1470.               extensions is likely to make other debuggers  crash
  1471.               or refuse to read the program.
  1472.  
  1473.        --ggccooffff Produce  debugging  information  in COFF format (if
  1474.               that is supported).  This is the format used by SDB
  1475.               on  most System V systems prior to System V Release
  1476.               4.
  1477.  
  1478.        --ggxxccooffff
  1479.               Produce debugging information in XCOFF  format  (if
  1480.               that is supported).  This is the format used by the
  1481.               DBX debugger on IBM RS/6000 systems.
  1482.  
  1483.        --ggxxccooffff++
  1484.               Produce debugging information in XCOFF  format  (if
  1485.               that is supported), using GNU extensions understood
  1486.               only by the GNU debugger (GDB).  The use  of  these
  1487.               extensions  is likely to make other debuggers crash
  1488.               or refuse to read the program.
  1489.  
  1490.        --ggddwwaarrff
  1491.               Produce debugging information in DWARF  format  (if
  1492.               that is supported).  This is the format used by SDB
  1493.               on most System V Release 4 systems.
  1494.  
  1495.        --ggddwwaarrff++
  1496.               Produce debugging information in DWARF  format  (if
  1497.               that is supported), using GNU extensions understood
  1498.               only by the GNU debugger (GDB).  The use  of  these
  1499.               extensions  is likely to make other debuggers crash
  1500.               or refuse to read the program.
  1501.  
  1502.        --gg_l_e_v_e_l
  1503.        --ggggddbb_l_e_v_e_l
  1504.        --ggssttaabbss_l_e_v_e_l
  1505.        --ggccooffff_l_e_v_e_l --ggxxccooffff_l_e_v_e_l
  1506.  
  1507.        --ggddwwaarrff_l_e_v_e_l
  1508.               Request debugging information and also use _l_e_v_e_l to
  1509.               specify how much information.  The default level is
  1510.               2.
  1511.  
  1512.               Level 1 produces minimal  information,  enough  for
  1513.  
  1514.  
  1515.  
  1516. GNU Tools                   1993/10/13                         23
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522. GCC(1)                      GNU Tools                      GCC(1)
  1523.  
  1524.  
  1525.               making  backtraces in parts of the program that you
  1526.               don't plan to debug.  This includes descriptions of
  1527.               functions  and  external variables, but no informa-
  1528.               tion about local variables and no line numbers.
  1529.  
  1530.               Level 3 includes extra information, such as all the
  1531.               macro definitions present in the program.  Some de-
  1532.               buggers support macro expansion when you use `--gg33'.
  1533.  
  1534.        --pp     Generate  extra  code  to write profile information
  1535.               suitable for the analysis program pprrooff.
  1536.  
  1537.        --ppgg    Generate extra code to  write  profile  information
  1538.               suitable for the analysis program ggpprrooff.
  1539.  
  1540.        --aa     Generate  extra  code  to write profile information
  1541.               for basic blocks, which will record the  number  of
  1542.               times  each  basic  block  is  executed.  This data
  1543.               could be analyzed by a program  like  ttccoovv.   Note,
  1544.               however,  that  the  format of the data is not what
  1545.               ttccoovv expects.  Eventually GNU ggpprrooff should  be  ex-
  1546.               tended to process this data.
  1547.  
  1548.        --dd_l_e_t_t_e_r_s
  1549.               Says  to make debugging dumps during compilation at
  1550.               times specified by _l_e_t_t_e_r_s.  This is used  for  de-
  1551.               bugging  the  compiler.  The file names for most of
  1552.               the dumps are made  by  appending  a  word  to  the
  1553.               source    file    name    (e.g.    `ffoooo..cc..rrttll'   or
  1554.               `ffoooo..cc..jjuummpp').
  1555.  
  1556.        --ddMM    Dump all macro definitions, at the end  of  prepro-
  1557.               cessing, and write no output.
  1558.  
  1559.        --ddNN    Dump  all macro names, at the end of preprocessing.
  1560.  
  1561.        --ddDD    Dump all macro definitions, at the end  of  prepro-
  1562.               cessing, in addition to normal output.
  1563.  
  1564.        --ddyy    Dump debugging information during parsing, to stan-
  1565.               dard error.
  1566.  
  1567.        --ddrr    Dump after RTL generation, to `_f_i_l_e..rrttll'.
  1568.  
  1569.        --ddxx    Just generate RTL for a function instead of compil-
  1570.               ing it.  Usually used with `rr'.
  1571.  
  1572.        --ddjj    Dump after first jump optimization, to `_f_i_l_e..jjuummpp'.
  1573.  
  1574.        --ddss    Dump after CSE  (including  the  jump  optimization
  1575.               that sometimes follows CSE), to `_f_i_l_e..ccssee'.
  1576.  
  1577.        --ddLL    Dump after loop optimization, to `_f_i_l_e..lloooopp'.
  1578.  
  1579.  
  1580.  
  1581.  
  1582. GNU Tools                   1993/10/13                         24
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588. GCC(1)                      GNU Tools                      GCC(1)
  1589.  
  1590.  
  1591.        --ddtt    Dump  after the second CSE pass (including the jump
  1592.               optimization  that  sometimes  follows   CSE),   to
  1593.               `_f_i_l_e..ccssee22'.
  1594.  
  1595.        --ddff    Dump after flow analysis, to `_f_i_l_e..ffllooww'.
  1596.  
  1597.        --ddcc    Dump     after    instruction    combination,    to
  1598.               `_f_i_l_e..ccoommbbiinnee'.
  1599.  
  1600.        --ddSS    Dump after the first instruction  scheduling  pass,
  1601.               to `_f_i_l_e..sscchheedd'.
  1602.  
  1603.        --ddll    Dump    after   local   register   allocation,   to
  1604.               `_f_i_l_e..llrreegg'.
  1605.  
  1606.        --ddgg    Dump   after   global   register   allocation,   to
  1607.               `_f_i_l_e..ggrreegg'.
  1608.  
  1609.        --ddRR    Dump  after the second instruction scheduling pass,
  1610.               to `_f_i_l_e..sscchheedd22'.
  1611.  
  1612.        --ddJJ    Dump after last jump optimization, to `_f_i_l_e..jjuummpp22'.
  1613.  
  1614.        --dddd    Dump    after   delayed   branch   scheduling,   to
  1615.               `_f_i_l_e..ddbbrr'.
  1616.  
  1617.        --ddkk    Dump after conversion from registers to  stack,  to
  1618.               `_f_i_l_e..ssttaacckk'.
  1619.  
  1620.        --ddaa    Produce all the dumps listed above.
  1621.  
  1622.        --ddmm    Print statistics on memory usage, at the end of the
  1623.               run, to standard error.
  1624.  
  1625.        --ddpp    Annotate the assembler output with a comment  indi-
  1626.               cating which pattern and alternative was used.
  1627.  
  1628.        --ffpprreetteenndd--ffllooaatt
  1629.               When  running  a  cross-compiler,  pretend that the
  1630.               target machine uses the same floating point  format
  1631.               as  the host machine.  This causes incorrect output
  1632.               of the actual floating constants,  but  the  actual
  1633.               instruction  sequence  will probably be the same as
  1634.               GNU CC would make when running on  the  target  ma-
  1635.               chine.
  1636.  
  1637.        --ssaavvee--tteemmppss
  1638.               Store the usual "temporary" intermediate files per-
  1639.               manently; place them in the current  directory  and
  1640.               name  them based on the source file.  Thus, compil-
  1641.               ing `ffoooo..cc' with  `--cc  --ssaavvee--tteemmppss'  would  produce
  1642.               files `ffoooo..ccpppp' and `ffoooo..ss', as well as `ffoooo..oo'.
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648. GNU Tools                   1993/10/13                         25
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654. GCC(1)                      GNU Tools                      GCC(1)
  1655.  
  1656.  
  1657.        --pprriinntt--ffiillee--nnaammee==_l_i_b_r_a_r_y
  1658.               Print  the  full  absolute name of the library file
  1659.               _l_i_b_r_a_r_y  that would be used  when  linking--and  do
  1660.               not  do  anything  else.   With this option, GNU CC
  1661.               does not compile or link anything; it  just  prints
  1662.               the file name.
  1663.  
  1664.        --pprriinntt--lliibbggcccc--ffiillee--nnaammee
  1665.               Same as `--pprriinntt--ffiillee--nnaammee==lliibbggcccc..aa'.
  1666.  
  1667.        --pprriinntt--pprroogg--nnaammee==_p_r_o_g_r_a_m
  1668.               Like `--pprriinntt--ffiillee--nnaammee', but searches for a program
  1669.               such as `cpp'.
  1670.  
  1671. OOPPTTIIMMIIZZAATTIIOONN OOPPTTIIOONNSS
  1672.        These options control various sorts of optimizations:
  1673.  
  1674.        --OO
  1675.  
  1676.        --OO11    Optimize.  Optimizing  compilation  takes  somewhat
  1677.               more  time, and a lot more memory for a large func-
  1678.               tion.
  1679.  
  1680.               Without `--OO', the compiler's goal is to reduce  the
  1681.               cost  of  compilation and to make debugging produce
  1682.               the expected results.  Statements are  independent:
  1683.               if  you  stop the program with a breakpoint between
  1684.               statements, you can then assign a new value to  any
  1685.               variable or change the program counter to any other
  1686.               statement in the function and get exactly  the  re-
  1687.               sults you would expect from the source code.
  1688.  
  1689.               Without  `--OO', only variables declared rreeggiisstteerr are
  1690.               allocated in  registers.   The  resulting  compiled
  1691.               code is a little worse than produced by PCC without
  1692.               `--OO'.
  1693.  
  1694.               With `--OO', the compiler tries to reduce  code  size
  1695.               and execution time.
  1696.  
  1697.               When    you   specify   `--OO',   the   two   options
  1698.               `--fftthhrreeaadd--jjuummppss' and `--ffddeeffeerr--ppoopp' are  turned  on.
  1699.               On    machines   that   have   delay   slots,   the
  1700.               `--ffddeellaayyeedd--bbrraanncchh' option is turned on.  For  those
  1701.               machines  that can support debugging even without a
  1702.               frame pointer, the `--ffoommiitt--ffrraammee--ppooiinntteerr' option is
  1703.               turned  on.   On some machines other flags may also
  1704.               be turned on.
  1705.  
  1706.        --OO22    Optimize even more.  Nearly all supported optimiza-
  1707.               tions  that  do  not involve a space-speed tradeoff
  1708.               are performed.  Loop unrolling and function  inlin-
  1709.               ing  are not done, for example.  As compared to --OO,
  1710.               this option increases both compilation time and the
  1711.  
  1712.  
  1713.  
  1714. GNU Tools                   1993/10/13                         26
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720. GCC(1)                      GNU Tools                      GCC(1)
  1721.  
  1722.  
  1723.               performance of the generated code.
  1724.  
  1725.        --OO33    Optimize  yet  more.  This  turns on everything --OO22
  1726.               does,   along   with   also   turning   on    --ffiinn--
  1727.               lliinnee--ffuunnccttiioonnss..
  1728.  
  1729.        --OO00    Do not optimize.
  1730.  
  1731.               If  you  use  multiple  --OO options, with or without
  1732.               level numbers, the last such option is the one that
  1733.               is effective.
  1734.  
  1735.        Options  of  the form `--ff_f_l_a_g' specify machine-independent
  1736.        flags.  Most flags have both positive and negative  forms;
  1737.        the  negative  form  of  `--ffffoooo' would be `--ffnnoo--ffoooo'.  The
  1738.        following list shows only one form--the one which  is  not
  1739.        the  default.  You can figure out the other form by either
  1740.        removing `nnoo--' or adding it.
  1741.  
  1742.        --ffffllooaatt--ssttoorree
  1743.               Do not store floating point variables in registers.
  1744.               This  prevents  undesirable excess precision on ma-
  1745.               chines such as the 68000 where the floating  regis-
  1746.               ters (of the 68881) keep more precision than a ddoouu--
  1747.               bbllee is supposed to have.
  1748.  
  1749.               For most programs, the excess precision  does  only
  1750.               good,  but a few programs rely on the precise defi-
  1751.               nition of IEEE floating point.  Use `--ffffllooaatt--ssttoorree'
  1752.               for such programs.
  1753.  
  1754.        --ffmmeemmooiizzee--llooookkuuppss
  1755.  
  1756.        --ffssaavvee--mmeemmooiizzeedd
  1757.               Use heuristics to compile faster (C++ only).  These
  1758.               heuristics are not enabled by default,  since  they
  1759.               are  only effective for certain input files.  Other
  1760.               input files compile more slowly.
  1761.  
  1762.               The first time the compiler must build a call to  a
  1763.               member function (or reference to a data member), it
  1764.               must (1) determine  whether  the  class  implements
  1765.               member  functions  of  that name; (2) resolve which
  1766.               member function to call  (which  involves  figuring
  1767.               out  what  sorts  of  type  conversions  need to be
  1768.               made); and (3) check the visibility of  the  member
  1769.               function  to  the  caller.   All of this adds up to
  1770.               slower compilation.  Normally, the  second  time  a
  1771.               call  is made to that member function (or reference
  1772.               to that data member), it must go through  the  same
  1773.               lengthy  process  again.  This means that code like
  1774.               this
  1775.  
  1776.                 cout << "This " << p  <<  "  has  "  <<  n  <<  "
  1777.  
  1778.  
  1779.  
  1780. GNU Tools                   1993/10/13                         27
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786. GCC(1)                      GNU Tools                      GCC(1)
  1787.  
  1788.  
  1789.               legs.\n";
  1790.  
  1791.               makes six passes through all three steps.  By using
  1792.               a software cache,  a  "hit"  significantly  reduces
  1793.               this  cost.   Unfortunately, using the cache intro-
  1794.               duces another layer of mechanisms which must be im-
  1795.               plemented,   and   so   incurs  its  own  overhead.
  1796.               `--ffmmeemmooiizzee--llooookkuuppss' enables the software cache.
  1797.  
  1798.               Because access privileges (visibility)  to  members
  1799.               and  member  functions may differ from one function
  1800.               context to the next, gg++++  may  need  to  flush  the
  1801.               cache.   With  the  `--ffmmeemmooiizzee--llooookkuuppss'  flag,  the
  1802.               cache is flushed after every function that is  com-
  1803.               piled.  The `-fsave-memoized' flag enables the same
  1804.               software cache, but when  the  compiler  determines
  1805.               that  the  context  of  the  last function compiled
  1806.               would yield the same access privileges of the  next
  1807.               function  to compile, it preserves the cache.  This
  1808.               is most helpful when defining many member functions
  1809.               for  the  same  class: with the exception of member
  1810.               functions which are friends of other classes,  each
  1811.               member  function has exactly the same access privi-
  1812.               leges as every other, and the  cache  need  not  be
  1813.               flushed.
  1814.  
  1815.        --ffnnoo--ddeeffaauulltt--iinnlliinnee
  1816.               Don't make member functions inline by default mere-
  1817.               ly because they are defined inside the class  scope
  1818.               (C++ only).
  1819.  
  1820.        --ffnnoo--ddeeffeerr--ppoopp
  1821.               Always  pop  the arguments to each function call as
  1822.               soon as that function returns.  For machines  which
  1823.               must  pop arguments after a function call, the com-
  1824.               piler normally lets  arguments  accumulate  on  the
  1825.               stack  for several function calls and pops them all
  1826.               at once.
  1827.  
  1828.        --ffffoorrccee--mmeemm
  1829.               Force memory operands to be copied  into  registers
  1830.               before  doing arithmetic on them.  This may produce
  1831.               better code by making all memory references  poten-
  1832.               tial common subexpressions.  When they are not com-
  1833.               mon subexpressions, instruction combination  should
  1834.               eliminate  the separate register-load.  I am inter-
  1835.               ested in hearing about the difference this makes.
  1836.  
  1837.        --ffffoorrccee--aaddddrr
  1838.               Force memory address constants to  be  copied  into
  1839.               registers  before  doing  arithmetic on them.  This
  1840.               may produce better code just as `--ffffoorrccee--mmeemm'  may.
  1841.               I  am  interested  in  hearing about the difference
  1842.               this makes.
  1843.  
  1844.  
  1845.  
  1846. GNU Tools                   1993/10/13                         28
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852. GCC(1)                      GNU Tools                      GCC(1)
  1853.  
  1854.  
  1855.        --ffoommiitt--ffrraammee--ppooiinntteerr
  1856.               Don't keep the frame  pointer  in  a  register  for
  1857.               functions that don't need one.  This avoids the in-
  1858.               structions to save, set up and restore frame point-
  1859.               ers;  it  also makes an extra register available in
  1860.               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
  1861.               _o_n _m_o_s_t _m_a_c_h_i_n_e_s.
  1862.  
  1863.               On some machines, such as the Vax, this flag has no
  1864.               effect, because the standard calling sequence auto-
  1865.               matically  handles the frame pointer and nothing is
  1866.               saved by pretending it doesn't exist.  The machine-
  1867.               description  macro  FFRRAAMMEE__PPOOIINNTTEERR__RREEQQUUIIRREEDD controls
  1868.               whether a target machine supports this flag.
  1869.  
  1870.        --ffiinnlliinnee--ffuunnccttiioonnss
  1871.               Integrate all simple functions into their  callers.
  1872.               The  compiler heuristically decides which functions
  1873.               are simple enough to be worth integrating  in  this
  1874.               way.
  1875.  
  1876.               If  all  calls  to a given function are integrated,
  1877.               and the function is declared ssttaattiicc, then GCC  nor-
  1878.               mally  does  not  output  the function as assembler
  1879.               code in its own right.
  1880.  
  1881.        --ffccaalllleerr--ssaavveess
  1882.               Enable values to be  allocated  in  registers  that
  1883.               will  be  clobbered  by function calls, by emitting
  1884.               extra instructions to save and restore  the  regis-
  1885.               ters  around  such  calls.  Such allocation is done
  1886.               only when it seems to result in  better  code  than
  1887.               would otherwise be produced.
  1888.  
  1889.               This  option  is  enabled by default on certain ma-
  1890.               chines, usually those which have no  call-preserved
  1891.               registers to use instead.
  1892.  
  1893.        --ffkkeeeepp--iinnlliinnee--ffuunnccttiioonnss
  1894.               Even if all calls to a given function are integrat-
  1895.               ed, and the function is declared ssttaattiicc,  neverthe-
  1896.               less output a separate run-time callable version of
  1897.               the function.
  1898.  
  1899.        --ffnnoo--ffuunnccttiioonn--ccssee
  1900.               Do not put function addresses  in  registers;  make
  1901.               each  instruction  that  calls  a constant function
  1902.               contain the function's address explicitly.
  1903.  
  1904.               This option results in  less  efficient  code,  but
  1905.               some  strange hacks that alter the assembler output
  1906.               may be confused by the optimizations performed when
  1907.               this option is not used.
  1908.  
  1909.  
  1910.  
  1911.  
  1912. GNU Tools                   1993/10/13                         29
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918. GCC(1)                      GNU Tools                      GCC(1)
  1919.  
  1920.  
  1921.        --ffnnoo--ppeeeepphhoollee
  1922.               Disable  any  machine-specific  peephole  optimiza-
  1923.               tions.
  1924.  
  1925.        --ffffaasstt--mmaatthh
  1926.               This option allows GCC to violate some ANSI or IEEE
  1927.               rules/specifications  in the interest of optimizing
  1928.               code for speed.  For example, it allows the compil-
  1929.               er  to  assume  arguments  to the ssqqrrtt function are
  1930.               non-negative numbers.
  1931.  
  1932.               This option should never be turned on by  any  `--OO'
  1933.               option  since it can result in incorrect output for
  1934.               programs which depend on an exact implementation of
  1935.               IEEE  or  ANSI  rules/specifications for math func-
  1936.               tions.
  1937.  
  1938.        The following options control specific optimizations.  The
  1939.        `--OO22'  option  turns  on all of these optimizations except
  1940.        `--ffuunnrroollll--llooooppss' and `--ffuunnrroollll--aallll--llooooppss'.
  1941.  
  1942.        The `--OO' option usually turns on the `--fftthhrreeaadd--jjuummppss'  and
  1943.        `--ffddeellaayyeedd--bbrraanncchh'  options,  but  specific  machines  may
  1944.        change the default optimizations.
  1945.  
  1946.        You can use the following flags in  the  rare  cases  when
  1947.        "fine-tuning" of optimizations to be performed is desired.
  1948.  
  1949.        --ffssttrreennggtthh--rreedduuccee
  1950.               Perform the optimizations of loop  strength  reduc-
  1951.               tion and elimination of iteration variables.
  1952.  
  1953.        --fftthhrreeaadd--jjuummppss
  1954.               Perform  optimizations  where  we check to see if a
  1955.               jump branches to a location where another  compari-
  1956.               son  subsumed  by  the  first is found.  If so, the
  1957.               first branch is redirected to either  the  destina-
  1958.               tion  of  the  second branch or a point immediately
  1959.               following it, depending on whether the condition is
  1960.               known to be true or false.
  1961.  
  1962.        --ffuunnrroollll--llooooppss
  1963.               Perform  the  optimization of loop unrolling.  This
  1964.               is only done for loops whose number  of  iterations
  1965.               can be determined at compile time or run time.
  1966.  
  1967.        --ffuunnrroollll--aallll--llooooppss
  1968.               Perform  the  optimization of loop unrolling.  This
  1969.               is done for all loops.  This usually makes programs
  1970.               run more slowly.
  1971.  
  1972.        --ffccssee--ffoollllooww--jjuummppss
  1973.               In  common  subexpression elimination, scan through
  1974.               jump instructions when the target of  the  jump  is
  1975.  
  1976.  
  1977.  
  1978. GNU Tools                   1993/10/13                         30
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984. GCC(1)                      GNU Tools                      GCC(1)
  1985.  
  1986.  
  1987.               not  reached  by any other path.  For example, when
  1988.               CSE encounters an iiff statement with an eellssee clause,
  1989.               CSE  will follow the jump when the condition tested
  1990.               is false.
  1991.  
  1992.        --ffccssee--sskkiipp--bblloocckkss
  1993.               This is similar to `--ffccssee--ffoollllooww--jjuummppss', but causes
  1994.               CSE  to  follow jumps which conditionally skip over
  1995.               blocks.  When CSE encounters a simple iiff  statement
  1996.               with no else clause, `--ffccssee--sskkiipp--bblloocckkss' causes CSE
  1997.               to follow the jump around the body of the iiff.
  1998.  
  1999.        --ffrreerruunn--ccssee--aafftteerr--lloooopp
  2000.               Re-run common subexpression elimination after  loop
  2001.               optimizations has been performed.
  2002.  
  2003.        --ffeelliiddee--ccoonnssttrruuccttoorrss
  2004.               Elide  constructors  when this seems plausible (C++
  2005.               only).  With this flag, GNU C++ initializes  yy  di-
  2006.               rectly from the call to ffoooo without going through a
  2007.               temporary in the following code:
  2008.  
  2009.               A foo (); A y = foo ();
  2010.  
  2011.               Without this option, GNU C++ first initializes yy by
  2012.               calling  the  appropriate  constructor  for type AA;
  2013.               then assigns the result of ffoooo to a temporary; and,
  2014.               finally, replaces the initial value of `yy' with the
  2015.               temporary.
  2016.  
  2017.               The default behavior (`--ffnnoo--eelliiddee--ccoonnssttrruuccttoorrss') is
  2018.               specified  by the draft ANSI C++ standard.  If your
  2019.               program's constructors  have  side  effects,  using
  2020.               `--ffeelliiddee--ccoonnssttrruuccttoorrss'  can  make  your program act
  2021.               differently, since some constructor  calls  may  be
  2022.               omitted.
  2023.  
  2024.        --ffeexxppeennssiivvee--ooppttiimmiizzaattiioonnss
  2025.               Perform  a  number  of minor optimizations that are
  2026.               relatively expensive.
  2027.  
  2028.        --ffddeellaayyeedd--bbrraanncchh
  2029.               If supported for the target machine, attempt to re-
  2030.               order  instructions  to  exploit  instruction slots
  2031.               available after delayed branch instructions.
  2032.  
  2033.        --ffsscchheedduullee--iinnssnnss
  2034.               If supported for the target machine, attempt to re-
  2035.               order  instructions  to  eliminate execution stalls
  2036.               due to required data being unavailable.  This helps
  2037.               machines  that  have  slow floating point or memory
  2038.               load instructions by allowing other instructions to
  2039.               be  issued until the result of the load or floating
  2040.               point instruction is required.
  2041.  
  2042.  
  2043.  
  2044. GNU Tools                   1993/10/13                         31
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050. GCC(1)                      GNU Tools                      GCC(1)
  2051.  
  2052.  
  2053.        --ffsscchheedduullee--iinnssnnss22
  2054.               Similar to `--ffsscchheedduullee--iinnssnnss', but requests an  ad-
  2055.               ditional  pass of instruction scheduling after reg-
  2056.               ister allocation has been done.  This is especially
  2057.               useful  on  machines with a relatively small number
  2058.               of registers and  where  memory  load  instructions
  2059.               take more than one cycle.
  2060.  
  2061. TTAARRGGEETT OOPPTTIIOONNSS
  2062.        By  default, GNU CC compiles code for the same type of ma-
  2063.        chine that you are using.  However, it  can  also  be  in-
  2064.        stalled  as  a  cross-compiler,  to compile for some other
  2065.        type of machine.  In fact,  several  different  configura-
  2066.        tions of GNU CC, for different target machines, can be in-
  2067.        stalled side by side.  Then you specify which one  to  use
  2068.        with the `--bb' option.
  2069.  
  2070.        In addition, older and newer versions of GNU CC can be in-
  2071.        stalled side by side.  One of them (probably  the  newest)
  2072.        will be the default, but you may sometimes wish to use an-
  2073.        other.
  2074.  
  2075.        --bb _m_a_c_h_i_n_e
  2076.               The argument _m_a_c_h_i_n_e specifies the  target  machine
  2077.               for  compilation.  This is useful when you have in-
  2078.               stalled GNU CC as a cross-compiler.
  2079.  
  2080.               The value to use for _m_a_c_h_i_n_e is  the  same  as  was
  2081.               specified  as the machine type when configuring GNU
  2082.               CC as a cross-compiler.  For example, if  a  cross-
  2083.               compiler  was  configured  with  `ccoonnffiigguurree i386v',
  2084.               meaning to compile for an 80386 running  System  V,
  2085.               then you would specify `--bb ii338866vv' to run that cross
  2086.               compiler.
  2087.  
  2088.               When you do not specify `--bb', it normally means  to
  2089.               compile  for  the same type of machine that you are
  2090.               using.
  2091.  
  2092.        --VV _v_e_r_s_i_o_n
  2093.               The argument _v_e_r_s_i_o_n specifies which version of GNU
  2094.               CC  to  run.  This is useful when multiple versions
  2095.               are  installed.   For  example,  _v_e_r_s_i_o_n  might  be
  2096.               `22..00', meaning to run GNU CC version 2.0.
  2097.  
  2098.               The  default version, when you do not specify `--VV',
  2099.               is controlled by the way GNU CC is installed.  Nor-
  2100.               mally, it will be a version that is recommended for
  2101.               general use.
  2102.  
  2103. MMAACCHHIINNEE DDEEPPEENNDDEENNTT OOPPTTIIOONNSS
  2104.        Each of the target machine types can have its own  special
  2105.        options, starting with `--mm', to choose among various hard-
  2106.        ware  models  or  configurations--for  example,  68010  vs
  2107.  
  2108.  
  2109.  
  2110. GNU Tools                   1993/10/13                         32
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116. GCC(1)                      GNU Tools                      GCC(1)
  2117.  
  2118.  
  2119.        68020,  floating  coprocessor or none.  A single installed
  2120.        version of the compiler can compile for any model or  con-
  2121.        figuration, according to the options specified.
  2122.  
  2123.        Some configurations of the compiler also support addition-
  2124.        al special options, usually for command-line compatibility
  2125.        with other compilers on the same platform.
  2126.  
  2127.        These are the `--mm' options defined for the 68000 series:
  2128.  
  2129.        --mm6688000000
  2130.  
  2131.        --mmcc6688000000
  2132.               Generate  output  for a 68000.  This is the default
  2133.               when the compiler  is  configured  for  68000-based
  2134.               systems.
  2135.  
  2136.        --mm6688002200
  2137.  
  2138.        --mmcc6688002200
  2139.               Generate  output for a 68020 (rather than a 68000).
  2140.               This is the default when the compiler is configured
  2141.               for 68020-based systems.
  2142.  
  2143.        --mm6688888811
  2144.               Generate  output  containing 68881 instructions for
  2145.               floating point.   This  is  the  default  for  most
  2146.               68020-based  systems unless --nnffpp was specified when
  2147.               the compiler was configured.
  2148.  
  2149.        --mm6688003300
  2150.               Generate output for a 68030.  This is  the  default
  2151.               when  the  compiler  is  configured for 68030-based
  2152.               systems.
  2153.  
  2154.        --mm6688004400
  2155.               Generate output for a 68040.  This is  the  default
  2156.               when  the  compiler  is  configured for 68040-based
  2157.               systems.
  2158.  
  2159.        --mm6688002200--4400
  2160.               Generate output for a 68040, without using  any  of
  2161.               the  new  instructions.  This results in code which
  2162.               can  run  relatively  efficiently   on   either   a
  2163.               68020/68881 or a 68030 or a 68040.
  2164.  
  2165.        --mmffppaa  Generate output containing Sun FPA instructions for
  2166.               floating point.
  2167.  
  2168.        --mmssoofftt--ffllooaatt
  2169.               Generate output containing library calls for float-
  2170.               ing  point.   _W_A_R_N_I_N_G_:  the requisite libraries are
  2171.               not part of GNU CC.  Normally the facilities of the
  2172.               machine's usual C compiler are used, but this can't
  2173.  
  2174.  
  2175.  
  2176. GNU Tools                   1993/10/13                         33
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182. GCC(1)                      GNU Tools                      GCC(1)
  2183.  
  2184.  
  2185.               be done directly in  cross-compilation.   You  must
  2186.               make  your own arrangements to provide suitable li-
  2187.               brary functions for cross-compilation.
  2188.  
  2189.        --mmsshhoorrtt
  2190.               Consider type iinntt to be 16 bits  wide,  like  sshhoorrtt
  2191.               iinntt.
  2192.  
  2193.        --mmnnoobbiittffiieelldd
  2194.               Do  not  use the bit-field instructions.  `--mm6688000000'
  2195.               implies `--mmnnoobbiittffiieelldd'.
  2196.  
  2197.        --mmbbiittffiieelldd
  2198.               Do use the bit-field instructions.   `--mm6688002200'  im-
  2199.               plies `--mmbbiittffiieelldd'.  This is the default if you use
  2200.               the unmodified sources.
  2201.  
  2202.        --mmrrttdd  Use a  different  function-calling  convention,  in
  2203.               which  functions  that take a fixed number of argu-
  2204.               ments return with the rrttdd instruction,  which  pops
  2205.               their  arguments  while  returning.  This saves one
  2206.               instruction in the caller since there is no need to
  2207.               pop the arguments there.
  2208.  
  2209.               This  calling  convention  is incompatible with the
  2210.               one normally used on Unix, so you cannot use it  if
  2211.               you  need  to call libraries compiled with the Unix
  2212.               compiler.
  2213.  
  2214.               Also, you must provide function prototypes for  all
  2215.               functions  that  take variable numbers of arguments
  2216.               (including pprriinnttff); otherwise incorrect  code  will
  2217.               be generated for calls to those functions.
  2218.  
  2219.               In  addition,  seriously incorrect code will result
  2220.               if you call a function  with  too  many  arguments.
  2221.               (Normally, extra arguments are harmlessly ignored.)
  2222.  
  2223.               The rrttdd instruction is supported by the  68010  and
  2224.               68020 processors, but not by the 68000.
  2225.  
  2226.        These `--mm' options are defined for the Vax:
  2227.  
  2228.        --mmuunniixx Do not output certain jump instructions (aaoobblleeqq and
  2229.               so on) that the Unix assembler for the  Vax  cannot
  2230.               handle across long ranges.
  2231.  
  2232.        --mmggnnuu  Do  output  those jump instructions, on the assump-
  2233.               tion that you will assemble with the GNU assembler.
  2234.  
  2235.        --mmgg    Output code for g-format floating point numbers in-
  2236.               stead of d-format.
  2237.  
  2238.        These `--mm' switches are supported on the SPARC:
  2239.  
  2240.  
  2241.  
  2242. GNU Tools                   1993/10/13                         34
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248. GCC(1)                      GNU Tools                      GCC(1)
  2249.  
  2250.  
  2251.        --mmffppuu
  2252.  
  2253.        --mmhhaarrdd--ffllooaatt
  2254.               Generate output containing floating point  instruc-
  2255.               tions.  This is the default.
  2256.  
  2257.        --mmnnoo--ffppuu
  2258.  
  2259.        --mmssoofftt--ffllooaatt
  2260.               Generate output containing library calls for float-
  2261.               ing point.  _W_a_r_n_i_n_g_: there is no GNU floating-point
  2262.               library  for SPARC.  Normally the facilities of the
  2263.               machine's usual C compiler are used, but this  can-
  2264.               not  be  done  directly  in cross-compilation.  You
  2265.               must make your own arrangements to provide suitable
  2266.               library functions for cross-compilation.
  2267.  
  2268.               --mmssoofftt--ffllooaatt  changes the calling convention in the
  2269.               output file; therefore, it is only  useful  if  you
  2270.               compile _a_l_l of a program with this option.
  2271.  
  2272.        --mmnnoo--eeppiilloogguuee
  2273.  
  2274.        --mmeeppiilloogguuee
  2275.               With  --mmeeppiilloogguuee (the default), the compiler always
  2276.               emits code for function exit at  the  end  of  each
  2277.               function.   Any  function exit in the middle of the
  2278.               function (such as a return  statement  in  C)  will
  2279.               generate  a jump to the exit code at the end of the
  2280.               function.
  2281.  
  2282.               With --mmnnoo--eeppiilloogguuee, the compiler tries to emit exit
  2283.               code inline at every function exit.
  2284.  
  2285.        --mmnnoo--vv88
  2286.  
  2287.        --mmvv88
  2288.  
  2289.        --mmssppaarrcclliittee
  2290.               These  three options select variations on the SPARC
  2291.               architecture.
  2292.  
  2293.               By default (unless specifically configured for  the
  2294.               Fujitsu  SPARClite),  GCC generates code for the v7
  2295.               variant of the SPARC architecture.
  2296.  
  2297.               --mmvv88 will give you SPARC v8 code.  The only differ-
  2298.               ence  from  v7  code is that the compiler emits the
  2299.               integer multiply and  integer  divide  instructions
  2300.               which exist in SPARC v8 but not in SPARC v7.
  2301.  
  2302.               --mmssppaarrcclliittee  will  give  you  SPARClite code.  This
  2303.               adds the integer multiply, integer divide step  and
  2304.               scan  (ffs)  instructions  which exist in SPARClite
  2305.  
  2306.  
  2307.  
  2308. GNU Tools                   1993/10/13                         35
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314. GCC(1)                      GNU Tools                      GCC(1)
  2315.  
  2316.  
  2317.               but not in SPARC v7.
  2318.  
  2319.        --mmccyypprreessss
  2320.  
  2321.        --mmssuuppeerrssppaarrcc
  2322.               These two options select the  processor  for  which
  2323.               the code is optimised.
  2324.  
  2325.               With --mmccyypprreessss (the default), the compiler optimis-
  2326.               es code for the Cypress CY7C602 chip,  as  used  in
  2327.               the  SparcStation/SparcServer  3xx  series. This is
  2328.               also appropriate for the older SparcStation  1,  2,
  2329.               IPX etc.
  2330.  
  2331.               With  --mmssuuppeerrssppaarrcc  the compiler optimises code for
  2332.               the SuperSparc cpu, as used in the SparcStation 10,
  2333.               1000 and 2000 series. This flag also enables use of
  2334.               the full SPARC v8 instruction set.
  2335.  
  2336.        These `--mm' options are defined for the Convex:
  2337.  
  2338.        --mmcc11   Generate output for a C1.  This is the default when
  2339.               the compiler is configured for a C1.
  2340.  
  2341.        --mmcc22   Generate output for a C2.  This is the default when
  2342.               the compiler is configured for a C2.
  2343.  
  2344.        --mmaarrggccoouunntt
  2345.               Generate code which puts an argument count  in  the
  2346.               word  preceding  each  argument  list.   Some  non-
  2347.               portable Convex and Vax programs  need  this  word.
  2348.               (Debuggers  don't,  except for functions with vari-
  2349.               able-length argument lists; this  info  is  in  the
  2350.               symbol table.)
  2351.  
  2352.        --mmnnooaarrggccoouunntt
  2353.               Omit  the argument count word.  This is the default
  2354.               if you use the unmodified sources.
  2355.  
  2356.        These `--mm' options are defined for the AMD Am29000:
  2357.  
  2358.        --mmddww   Generate code that assumes the DW bit is set, i.e.,
  2359.               that byte and halfword operations are directly sup-
  2360.               ported by the hardware.  This is the default.
  2361.  
  2362.        --mmnnooddww Generate code that assumes the DW bit is not set.
  2363.  
  2364.        --mmbbww   Generate code that assumes the system supports byte
  2365.               and  halfword  write  operations.   This is the de-
  2366.               fault.
  2367.  
  2368.        --mmnnbbww  Generate code that assumes  the  systems  does  not
  2369.               support  byte  and halfword write operations.  This
  2370.               implies `--mmnnooddww'.
  2371.  
  2372.  
  2373.  
  2374. GNU Tools                   1993/10/13                         36
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380. GCC(1)                      GNU Tools                      GCC(1)
  2381.  
  2382.  
  2383.        --mmssmmaallll
  2384.               Use a small memory  model  that  assumes  that  all
  2385.               function  addresses  are either within a single 256
  2386.               KB segment or at an absolute address of  less  than
  2387.               256K.   This allows the ccaallll instruction to be used
  2388.               instead of a ccoonnsstt, ccoonnsstthh, ccaallllii sequence.
  2389.  
  2390.        --mmllaarrggee
  2391.               Do not assume that  the  ccaallll  instruction  can  be
  2392.               used; this is the default.
  2393.  
  2394.        --mm2299005500
  2395.               Generate code for the Am29050.
  2396.  
  2397.        --mm2299000000
  2398.               Generate  code  for  the  Am29000.  This is the de-
  2399.               fault.
  2400.  
  2401.        --mmkkeerrnneell--rreeggiisstteerrss
  2402.               Generate references to registers ggrr6644--ggrr9955  instead
  2403.               of  ggrr9966--ggrr112277.   This option can be used when com-
  2404.               piling kernel code that wants a set of global  reg-
  2405.               isters disjoint from that used by user-mode code.
  2406.  
  2407.               Note  that when this option is used, register names
  2408.               in `--ff'  flags  must  use  the  normal,  user-mode,
  2409.               names.
  2410.  
  2411.        --mmuusseerr--rreeggiisstteerrss
  2412.               Use the normal set of global registers, ggrr9966--ggrr112277.
  2413.               This is the default.
  2414.  
  2415.        --mmssttaacckk--cchheecckk
  2416.               Insert a call to ____mmsspp__cchheecckk after each  stack  ad-
  2417.               justment.  This is often used for kernel code.
  2418.  
  2419.        These  `--mm' options are defined for Motorola 88K architec-
  2420.        tures:
  2421.  
  2422.        --mm8888000000
  2423.               Generate code that works well on  both  the  m88100
  2424.               and the m88110.
  2425.  
  2426.        --mm8888110000
  2427.               Generate  code  that works best for the m88100, but
  2428.               that also runs on the m88110.
  2429.  
  2430.        --mm8888111100
  2431.               Generate code that works best for the  m88110,  and
  2432.               may not run on the m88100.
  2433.  
  2434.        --mmiiddeennttiiffyy--rreevviissiioonn
  2435.               Include  an iiddeenntt directive in the assembler output
  2436.               recording the source file name, compiler  name  and
  2437.  
  2438.  
  2439.  
  2440. GNU Tools                   1993/10/13                         37
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446. GCC(1)                      GNU Tools                      GCC(1)
  2447.  
  2448.  
  2449.               version, timestamp, and compilation flags used.
  2450.  
  2451.        --mmnnoo--uunnddeerrssccoorreess
  2452.               In  assembler  output,  emit  symbol  names without
  2453.               adding an underscore character at the beginning  of
  2454.               each  name.  The default is to use an underscore as
  2455.               prefix on each name.
  2456.  
  2457.        --mmnnoo--cchheecckk--zzeerroo--ddiivviissiioonn
  2458.  
  2459.        --mmcchheecckk--zzeerroo--ddiivviissiioonn
  2460.               Early models of the 88K architecture  had  problems
  2461.               with  division by zero; in particular, many of them
  2462.               didn't trap.  Use these options to avoid  including
  2463.               (or  to  include explicitly) additional code to de-
  2464.               tect division by zero and signal an exception.  All
  2465.               GCC     configurations     for    the    88K    use
  2466.               `--mmcchheecckk--zzeerroo--ddiivviissiioonn' by default.
  2467.  
  2468.        --mmooccss--ddeebbuugg--iinnffoo
  2469.  
  2470.        --mmnnoo--ooccss--ddeebbuugg--iinnffoo
  2471.               Include (or omit) additional debugging  information
  2472.               (about registers used in each stack frame) as spec-
  2473.               ified in the 88Open Object Compatibility  Standard,
  2474.               "OCS".   This  extra  information  is not needed by
  2475.               GDB.  The default for DG/UX,  SVr4,  and  Delta  88
  2476.               SVr3.2  is  to  include this information; other 88k
  2477.               configurations omit this information by default.
  2478.  
  2479.        --mmooccss--ffrraammee--ppoossiittiioonn
  2480.  
  2481.        --mmnnoo--ooccss--ffrraammee--ppoossiittiioonn
  2482.               Force (or do not require)  register  values  to  be
  2483.               stored  in  a  particular place in stack frames, as
  2484.               specified in OCS.  The DG/UX, Delta88  SVr3.2,  and
  2485.               BCS configurations use `--mmooccss--ffrraammee--ppoossiittiioonn'; oth-
  2486.               er   88k   configurations    have    the    default
  2487.               `--mmnnoo--ooccss--ffrraammee--ppoossiittiioonn'.
  2488.  
  2489.        --mmooppttiimmiizzee--aarrgg--aarreeaa
  2490.  
  2491.        --mmnnoo--ooppttiimmiizzee--aarrgg--aarreeaa
  2492.               Control  how  to  store function arguments in stack
  2493.               frames.  `--mmooppttiimmiizzee--aarrgg--aarreeaa' saves space, but may
  2494.               break      some      debuggers      (not      GDB).
  2495.               `--mmnnoo--ooppttiimmiizzee--aarrgg--aarreeaa' conforms better  to  stan-
  2496.               dards.   By default GCC does not optimize the argu-
  2497.               ment area.
  2498.  
  2499.        --mmsshhoorrtt--ddaattaa--_n_u_m
  2500.               _n_u_m Generate smaller data references by making them
  2501.               relative  to rr00, which allows loading a value using
  2502.               a single instruction (rather than the  usual  two).
  2503.  
  2504.  
  2505.  
  2506. GNU Tools                   1993/10/13                         38
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512. GCC(1)                      GNU Tools                      GCC(1)
  2513.  
  2514.  
  2515.               You  control  which data references are affected by
  2516.               specifying _n_u_m with this option.  For  example,  if
  2517.               you  specify `--mmsshhoorrtt--ddaattaa--551122', then the data ref-
  2518.               erences affected are those involving  displacements
  2519.               of  less than 512 bytes.  `--mmsshhoorrtt--ddaattaa--_n_u_m' is not
  2520.               effective for _n_u_m greater than 64K.
  2521.  
  2522.        --mmsseerriiaalliizzee--vvoollaattiillee
  2523.  
  2524.        --mmnnoo--sseerriiaalliizzee--vvoollaattiillee
  2525.               Do, or do not, generate code to  guarantee  sequen-
  2526.               tial consistency of volatile memory references.
  2527.  
  2528.               GNU  CC  always  guarantees consistency by default,
  2529.               for the preferred processor submodel.  How this  is
  2530.               done depends on the submodel.
  2531.  
  2532.               The m88100 processor does not reorder memory refer-
  2533.               ences and so always provides sequential  consisten-
  2534.               cy.  If you use `--mm8888110000', GNU CC does not generate
  2535.               any special instructions for sequential  consisten-
  2536.               cy.
  2537.  
  2538.               The  order  of memory references made by the m88110
  2539.               processor does not always match the  order  of  the
  2540.               instructions  requesting those references.  In par-
  2541.               ticular, a load instruction may  execute  before  a
  2542.               preceding  store instruction.  Such reordering vio-
  2543.               lates sequential  consistency  of  volatile  memory
  2544.               references,  when  there  are  multiple processors.
  2545.               When you use `--mm8888000000' or `--mm8888111100', GNU CC  gener-
  2546.               ates  special  instructions  when  appropriate,  to
  2547.               force execution in the proper order.
  2548.  
  2549.               The extra code generated to  guarantee  consistency
  2550.               may affect the performance of your application.  If
  2551.               you know that you can safely forgo this  guarantee,
  2552.               you may use the option `--mmnnoo--sseerriiaalliizzee--vvoollaattiillee'.
  2553.  
  2554.               If you use the `--mm8888110000' option but require sequen-
  2555.               tial consistency when running on the m88110 proces-
  2556.               sor, you should use `--mmsseerriiaalliizzee--vvoollaattiillee'.
  2557.  
  2558.        --mmssvvrr44
  2559.  
  2560.        --mmssvvrr33 Turn  on  (`--mmssvvrr44') or off (`--mmssvvrr33') compiler ex-
  2561.               tensions related to  System  V  release  4  (SVr4).
  2562.               This controls the following:
  2563.  
  2564.           +o   Which  variant  of  the  assembler  syntax  to emit
  2565.               (which   you   can   select   independently   using
  2566.               `--mmvveerrssiioonn--0033..0000').
  2567.  
  2568.           +o   `--mmssvvrr44' makes the C preprocessor recognize `##pprraagg--
  2569.  
  2570.  
  2571.  
  2572. GNU Tools                   1993/10/13                         39
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578. GCC(1)                      GNU Tools                      GCC(1)
  2579.  
  2580.  
  2581.               mmaa wweeaakk'
  2582.  
  2583.           +o   `--mmssvvrr44' makes GCC issue additional declaration di-
  2584.               rectives used in SVr4.
  2585.  
  2586.        `--mmssvvrr33' is the default for all m88K configurations except
  2587.        the SVr4 configuration.
  2588.  
  2589.        --mmttrraapp--llaarrggee--sshhiifftt
  2590.  
  2591.        --mmhhaannddllee--llaarrggee--sshhiifftt
  2592.               Include code to detect bit-shifts of more  than  31
  2593.               bits;  respectively,  trap such shifts or emit code
  2594.               to handle them properly.  By default GCC  makes  no
  2595.               special provision for large bit shifts.
  2596.  
  2597.        --mmuussee--ddiivv--iinnssttrruuccttiioonn
  2598.               Very  early  models  of the 88K architecture didn't
  2599.               have a divide instruction, so GCC avoids  that  in-
  2600.               struction  by  default.  Use this option to specify
  2601.               that it's safe to use the divide instruction.
  2602.  
  2603.        --mmvveerrssiioonn--0033..0000
  2604.               In the DG/UX configuration, there are  two  flavors
  2605.               of  SVr4.   This  option  modifies --mmssvvrr44 to select
  2606.               whether the hybrid-COFF or real-ELF flavor is used.
  2607.               All other configurations ignore this option.
  2608.  
  2609.        --mmwwaarrnn--ppaasssseedd--ssttrruuccttss
  2610.               Warn when a function passes a struct as an argument
  2611.               or  result.   Structure-passing  conventions   have
  2612.               changed during the evolution of the C language, and
  2613.               are often the source of portability  problems.   By
  2614.               default, GCC issues no such warning.
  2615.  
  2616.        These options are defined for the IBM RS6000:
  2617.  
  2618.        --mmffpp--iinn--ttoocc
  2619.  
  2620.        --mmnnoo--ffpp--iinn--ttoocc
  2621.               Control  whether or not floating-point constants go
  2622.               in the Table of Contents  (TOC),  a  table  of  all
  2623.               global variable and function addresses.  By default
  2624.               GCC puts floating-point constants there; if the TOC
  2625.               overflows, `--mmnnoo--ffpp--iinn--ttoocc' will reduce the size of
  2626.               the TOC, which may avoid the overflow.
  2627.  
  2628.        These `--mm' options are defined for the IBM RT PC:
  2629.  
  2630.        --mmiinn--lliinnee--mmuull
  2631.               Use an in-line code  sequence  for  integer  multi-
  2632.               plies.  This is the default.
  2633.  
  2634.  
  2635.  
  2636.  
  2637.  
  2638. GNU Tools                   1993/10/13                         40
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644. GCC(1)                      GNU Tools                      GCC(1)
  2645.  
  2646.  
  2647.        --mmccaallll--lliibb--mmuull
  2648.               Call llmmuull$$$$ for integer multiples.
  2649.  
  2650.        --mmffuullll--ffpp--bblloocckkss
  2651.               Generate  full-size floating point data blocks, in-
  2652.               cluding the minimum amount of scratch space  recom-
  2653.               mended by IBM.  This is the default.
  2654.  
  2655.        --mmmmiinniimmuumm--ffpp--bblloocckkss
  2656.               Do  not  include  extra  scratch  space in floating
  2657.               point data blocks.  This results in  smaller  code,
  2658.               but  slower  execution, since scratch space must be
  2659.               allocated dynamically.
  2660.  
  2661.        --mmffpp--aarrgg--iinn--ffpprreeggss
  2662.               Use a calling sequence incompatible  with  the  IBM
  2663.               calling  convention  in  which floating point argu-
  2664.               ments are passed in floating point registers.  Note
  2665.               that  vvaarraarrggss..hh  and  ssttddaarrggss..hh  will not work with
  2666.               floating point operands if this  option  is  speci-
  2667.               fied.
  2668.  
  2669.        --mmffpp--aarrgg--iinn--ggrreeggss
  2670.               Use  the  normal  calling  convention  for floating
  2671.               point arguments.  This is the default.
  2672.  
  2673.        --mmhhcc--ssttrruucctt--rreettuurrnn
  2674.               Return structures of more than one word in  memory,
  2675.               rather  than in a register.  This provides compati-
  2676.               bility with the MetaWare HighC (hc) compiler.   Use
  2677.               `--ffppcccc--ssttrruucctt--rreettuurrnn'  for  compatibility  with the
  2678.               Portable C Compiler (pcc).
  2679.  
  2680.        --mmnnoohhcc--ssttrruucctt--rreettuurrnn
  2681.               Return some structures of more  than  one  word  in
  2682.               registers,  when  convenient.  This is the default.
  2683.               For compatibility with the IBM-supplied  compilers,
  2684.               use       either      `--ffppcccc--ssttrruucctt--rreettuurrnn'      or
  2685.               `--mmhhcc--ssttrruucctt--rreettuurrnn'.
  2686.  
  2687.        These `--mm' options are defined for the MIPS family of com-
  2688.        puters:
  2689.  
  2690.        --mmccppuu==_c_p_u_-_t_y_p_e
  2691.               Assume  the  defaults for the machine type _c_p_u_-_t_y_p_e
  2692.               when scheduling instructions.  The default _c_p_u_-_t_y_p_e
  2693.               is  ddeeffaauulltt,  which  picks the longest cycles times
  2694.               for any of the machines, in order that the code run
  2695.               at  reasonable  rates  on  all  MIPS  cpu's.  Other
  2696.               choices for _c_p_u_-_t_y_p_e are rr22000000, rr33000000,  rr44000000,  and
  2697.               rr66000000.   While  picking  a  specific  _c_p_u_-_t_y_p_e will
  2698.               schedule things appropriately for  that  particular
  2699.               chip,  the compiler will not generate any code that
  2700.               does not meet level 1 of the MIPS ISA  (instruction
  2701.  
  2702.  
  2703.  
  2704. GNU Tools                   1993/10/13                         41
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710. GCC(1)                      GNU Tools                      GCC(1)
  2711.  
  2712.  
  2713.               set  architecture)  without  the  --mmiippss22  or --mmiippss33
  2714.               switches being used.
  2715.  
  2716.        --mmiippss22 Issue instructions from level 2  of  the  MIPS  ISA
  2717.               (branch  likely,  square  root  instructions).  The
  2718.               --mmccppuu==rr44000000 or --mmccppuu==rr66000000 switch must be  used  in
  2719.               conjunction with --mmiippss22.
  2720.  
  2721.        --mmiippss33 Issue instructions from level 3 of the MIPS ISA (64
  2722.               bit instructions).  The --mmccppuu==rr44000000 switch must  be
  2723.               used in conjunction with --mmiippss22.
  2724.  
  2725.        --mmiinntt6644
  2726.  
  2727.        --mmlloonngg6644
  2728.  
  2729.        --mmlloonngglloonngg112288
  2730.               These options don't work at present.
  2731.  
  2732.        --mmmmiippss--aass
  2733.               Generate  code  for  the MIPS assembler, and invoke
  2734.               mmiippss--ttffiillee to add normal debug  information.   This
  2735.               is  the  default  for  all platforms except for the
  2736.               OSF/1 reference platform, using the OSF/rose object
  2737.               format.   If any of the --ggggddbb, --ggssttaabbss, or --ggssttaabbss++
  2738.               switches are used, the mmiippss--ttffiillee program will  en-
  2739.               capsulate the stabs within MIPS ECOFF.
  2740.  
  2741.        --mmggaass  Generate  code  for the GNU assembler.  This is the
  2742.               default on the OSF/1 reference platform, using  the
  2743.               OSF/rose object format.
  2744.  
  2745.        --mmrrnnaammeess
  2746.  
  2747.        --mmnnoo--rrnnaammeess
  2748.               The  --mmrrnnaammeess  switch says to output code using the
  2749.               MIPS software names for the registers,  instead  of
  2750.               the hardware names (ie, aa00 instead of $$44).  The GNU
  2751.               assembler does not support the --mmrrnnaammeess switch, and
  2752.               the  MIPS  assembler  will be instructed to run the
  2753.               MIPS C preprocessor  over  the  source  file.   The
  2754.               --mmnnoo--rrnnaammeess switch is default.
  2755.  
  2756.        --mmggppoopptt
  2757.  
  2758.        --mmnnoo--ggppoopptt
  2759.               The  --mmggppoopptt  switch  says to write all of the data
  2760.               declarations before the instructions  in  the  text
  2761.               section,  to all the MIPS assembler to generate one
  2762.               word memory references instead of using  two  words
  2763.               for  short global or static data items.  This is on
  2764.               by default if optimization is selected.
  2765.  
  2766.  
  2767.  
  2768.  
  2769.  
  2770. GNU Tools                   1993/10/13                         42
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776. GCC(1)                      GNU Tools                      GCC(1)
  2777.  
  2778.  
  2779.        --mmssttaattss
  2780.  
  2781.        --mmnnoo--ssttaattss
  2782.               For each non-inline function processed, the --mmssttaattss
  2783.               switch  causes the compiler to emit one line to the
  2784.               standard error file to print statistics  about  the
  2785.               program  (number  of  registers  saved, stack size,
  2786.               etc.).
  2787.  
  2788.        --mmmmeemmccppyy
  2789.  
  2790.        --mmnnoo--mmeemmccppyy
  2791.               The --mmmmeemmccppyy switch makes all block moves call  the
  2792.               appropriate  string  function (mmeemmccppyy or bbccooppyy) in-
  2793.               stead of possibly generating inline code.
  2794.  
  2795.        --mmmmiippss--ttffiillee
  2796.  
  2797.        --mmnnoo--mmiippss--ttffiillee
  2798.               The --mmnnoo--mmiippss--ttffiillee switch causes the compiler  not
  2799.               postprocess  the  object  file  with the mmiippss--ttffiillee
  2800.               program, after the MIPS assembler has generated  it
  2801.               to  add  debug  support.  If mmiippss--ttffiillee is not run,
  2802.               then no local variables will be  available  to  the
  2803.               debugger.   In  addition, ssttaaggee22 and ssttaaggee33 objects
  2804.               will have the temporary file names  passed  to  the
  2805.               assembler  embedded in the object file, which means
  2806.               the objects will not compare the same.
  2807.  
  2808.        --mmssoofftt--ffllooaatt
  2809.               Generate output containing library calls for float-
  2810.               ing  point.   _W_A_R_N_I_N_G_:  the requisite libraries are
  2811.               not part of GNU CC.  Normally the facilities of the
  2812.               machine's usual C compiler are used, but this can't
  2813.               be done directly in  cross-compilation.   You  must
  2814.               make  your own arrangements to provide suitable li-
  2815.               brary functions for cross-compilation.
  2816.  
  2817.        --mmhhaarrdd--ffllooaatt
  2818.               Generate output containing floating point  instruc-
  2819.               tions.   This is the default if you use the unmodi-
  2820.               fied sources.
  2821.  
  2822.        --mmffpp6644 Assume that the FFRR bit in the status  word  is  on,
  2823.               and  that there are 32 64-bit floating point regis-
  2824.               ters, instead of 32 32-bit  floating  point  regis-
  2825.               ters.   You  must  also specify the --mmccppuu==rr44000000 and
  2826.               --mmiippss33 switches.
  2827.  
  2828.        --mmffpp3322 Assume that there are 32 32-bit floating point reg-
  2829.               isters.  This is the default.
  2830.  
  2831.        --mmaabbiiccaallllss
  2832.  
  2833.  
  2834.  
  2835.  
  2836. GNU Tools                   1993/10/13                         43
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842. GCC(1)                      GNU Tools                      GCC(1)
  2843.  
  2844.  
  2845.        --mmnnoo--aabbiiccaallllss
  2846.               Emit  (or  do not emit) the ..aabbiiccaallllss, ..ccppllooaadd, and
  2847.               ..ccpprreessttoorree pseudo operations that some  System  V.4
  2848.               ports use for position independent code.
  2849.  
  2850.        --mmhhaallff--ppiicc
  2851.  
  2852.        --mmnnoo--hhaallff--ppiicc
  2853.               The  --mmhhaallff--ppiicc  switch says to put pointers to ex-
  2854.               tern references into the data section and load them
  2855.               up, rather than put the references in the text sec-
  2856.               tion.  This option does not work at present.  --GG_n_u_m
  2857.               Put  global  and static items less than or equal to
  2858.               _n_u_m bytes into the small data or bss  sections  in-
  2859.               stead  of the normal data or bss section.  This al-
  2860.               lows the assembler to emit one word  memory  refer-
  2861.               ence  instructions  based on the global pointer (ggpp
  2862.               or $$2288), instead of the normal two words used.   By
  2863.               default,  _n_u_m is 8 when the MIPS assembler is used,
  2864.               and 0 when the GNU assembler is  used.   The  --GG_n_u_m
  2865.               switch  is also passed to the assembler and linker.
  2866.               All modules should be compiled with the same  --GG_n_u_m
  2867.               value.
  2868.  
  2869.        --nnooccpppp Tell  the MIPS assembler to not run it's preproces-
  2870.               sor over user assembler files (with a `..ss'  suffix)
  2871.               when assembling them.
  2872.  
  2873.        These  `--mm' options are defined for the Intel 80386 family
  2874.        of computers: --mm448866
  2875.  
  2876.        --mmnnoo--448866
  2877.               Control whether or not code is optimized for a  486
  2878.               instead  of  an 386.  Code generated for a 486 will
  2879.               run on a 386 and vice versa.
  2880.  
  2881.        --mmssoofftt--ffllooaatt
  2882.               Generate output containing library calls for float-
  2883.               ing  point.   _W_a_r_n_i_n_g_:  the requisite libraries are
  2884.               not part of GNU CC.  Normally the facilities of the
  2885.               machine's usual C compiler are used, but this can't
  2886.               be done directly in  cross-compilation.   You  must
  2887.               make  your own arrangements to provide suitable li-
  2888.               brary functions for cross-compilation.
  2889.  
  2890.               On machines where a function returns floating point
  2891.               results  in the 80387 register stack, some floating
  2892.               point opcodes may be emitted even if `--mmssoofftt--ffllooaatt'
  2893.               is used.
  2894.  
  2895.        --mmnnoo--ffpp--rreett--iinn--338877
  2896.               Do  not  use the FPU registers for return values of
  2897.               functions.
  2898.  
  2899.  
  2900.  
  2901.  
  2902. GNU Tools                   1993/10/13                         44
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908. GCC(1)                      GNU Tools                      GCC(1)
  2909.  
  2910.  
  2911.               The usual calling convention has  functions  return
  2912.               values  of  types ffllooaatt and ddoouubbllee in an FPU regis-
  2913.               ter, even if there is no FPU.  The idea is that the
  2914.               operating system should emulate an FPU.
  2915.  
  2916.               The  option `--mmnnoo--ffpp--rreett--iinn--338877' causes such values
  2917.               to be returned in ordinary CPU registers instead.
  2918.  
  2919.        These `--mm' options are defined for the HPPA family of com-
  2920.        puters:
  2921.  
  2922.        --mmppaa--rriisscc--11--00
  2923.               Generate code for a PA 1.0 processor.
  2924.  
  2925.        --mmppaa--rriisscc--11--11
  2926.               Generate code for a PA 1.1 processor.
  2927.  
  2928.        --mmkkeerrnneell
  2929.               Generate code which is suitable for use in kernels.
  2930.               Specifically, avoid aadddd instructions in  which  one
  2931.               of the arguments is the DP register; generate aaddddiill
  2932.               instructions instead.  This avoids a rather serious
  2933.               bug in the HP-UX linker.
  2934.  
  2935.        --mmsshhaarreedd--lliibbss
  2936.               Generate  code  that  can  be  linked against HP-UX
  2937.               shared libraries.  This option is not  fully  func-
  2938.               tion  yet, and is not on by default for any PA tar-
  2939.               get.  Using this option can cause incorrect code to
  2940.               be generated by the compiler.
  2941.  
  2942.        --mmnnoo--sshhaarreedd--lliibbss
  2943.               Don't  generate  code  that  will be linked against
  2944.               shared libraries.  This is the default for  all  PA
  2945.               targets.
  2946.  
  2947.        --mmlloonngg--ccaallllss
  2948.               Generate  code  which  allows  calls  to  functions
  2949.               greater than 256K away from  the  caller  when  the
  2950.               caller  and callee are in the same source file.  Do
  2951.               not turn this option on unless code refuses to link
  2952.               with "branch out of range errors from the linker.
  2953.  
  2954.        --mmddiissaabbllee--ffpprreeggss
  2955.               Prevent floating point registers from being used in
  2956.               any manner.  This is necessary for  compiling  ker-
  2957.               nels which perform lazy context switching of float-
  2958.               ing point registers.  If you use  this  option  and
  2959.               attempt  to  perform floating point operations, the
  2960.               compiler will abort.
  2961.  
  2962.        --mmddiissaabbllee--iinnddeexxiinngg
  2963.               Prevent the compiler from  using  indexing  address
  2964.               modes.   This  avoids  some rather obscure problems
  2965.  
  2966.  
  2967.  
  2968. GNU Tools                   1993/10/13                         45
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974. GCC(1)                      GNU Tools                      GCC(1)
  2975.  
  2976.  
  2977.               when compiling MIG generated code under MACH.
  2978.  
  2979.        --mmttrraaiilliinngg--ccoolloonn
  2980.               Add a colon to the end of  label  definitions  (for
  2981.               ELF assemblers).
  2982.  
  2983.        These  `--mm' options are defined for the Intel 80960 family
  2984.        of computers:
  2985.  
  2986.        --mm_c_p_u_-_t_y_p_e
  2987.               Assume the defaults for the machine  type  _c_p_u_-_t_y_p_e
  2988.               for  instruction  and  addressing-mode availability
  2989.               and alignment.  The default _c_p_u_-_t_y_p_e is  kkbb;  other
  2990.               choices are kkaa, mmcc, ccaa, ccff, ssaa, and ssbb.
  2991.  
  2992.        --mmnnuummeerriiccss
  2993.  
  2994.        --mmssoofftt--ffllooaatt
  2995.               The  --mmnnuummeerriiccss option indicates that the processor
  2996.               does  support  floating-point  instructions.    The
  2997.               --mmssoofftt--ffllooaatt  option  indicates that floating-point
  2998.               support should not be assumed.
  2999.  
  3000.        --mmlleeaaff--pprroocceedduurreess
  3001.  
  3002.        --mmnnoo--lleeaaff--pprroocceedduurreess
  3003.               Do (or do not) attempt to alter leaf procedures  to
  3004.               be  callable  with  the  _b_a_l instruction as well as
  3005.               _c_a_l_l.  This will result in more efficient code  for
  3006.               explicit calls when the _b_a_l instruction can be sub-
  3007.               stituted by the assembler or linker, but less effi-
  3008.               cient  code in other cases, such as calls via func-
  3009.               tion pointers, or using a linker that doesn't  sup-
  3010.               port this optimization.
  3011.  
  3012.        --mmttaaiill--ccaallll
  3013.  
  3014.        --mmnnoo--ttaaiill--ccaallll
  3015.               Do  (or  do  not)  make additional attempts (beyond
  3016.               those of the machine-independent  portions  of  the
  3017.               compiler)  to  optimize  tail-recursive  calls into
  3018.               branches.  You may not want to do this because  the
  3019.               detection  of  cases where this is not valid is not
  3020.               totally complete.  The default is --mmnnoo--ttaaiill--ccaallll.
  3021.  
  3022.        --mmccoommpplleexx--aaddddrr
  3023.  
  3024.        --mmnnoo--ccoommpplleexx--aaddddrr
  3025.               Assume (or do not assume) that the use of a complex
  3026.               addressing  mode is a win on this implementation of
  3027.               the i960.  Complex  addressing  modes  may  not  be
  3028.               worthwhile on the K-series, but they definitely are
  3029.               on the C-series.  The default is  currently  --mmccoomm--
  3030.               pplleexx--aaddddrr  for all processors except the CB and CC.
  3031.  
  3032.  
  3033.  
  3034. GNU Tools                   1993/10/13                         46
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040. GCC(1)                      GNU Tools                      GCC(1)
  3041.  
  3042.  
  3043.        --mmccooddee--aalliiggnn
  3044.  
  3045.        --mmnnoo--ccooddee--aalliiggnn
  3046.               Align code to 8-byte boundaries for faster fetching
  3047.               (or  don't bother).  Currently turned on by default
  3048.               for C-series implementations only.
  3049.  
  3050.        --mmiicc--ccoommppaatt
  3051.  
  3052.        --mmiicc22..00--ccoommppaatt
  3053.  
  3054.        --mmiicc33..00--ccoommppaatt
  3055.               Enable compatibility with iC960 v2.0 or v3.0.
  3056.  
  3057.        --mmaassmm--ccoommppaatt
  3058.  
  3059.        --mmiinntteell--aassmm
  3060.               Enable compatibility with the iC960 assembler.
  3061.  
  3062.        --mmssttrriicctt--aalliiggnn
  3063.  
  3064.        --mmnnoo--ssttrriicctt--aalliiggnn
  3065.               Do not permit (do permit) unaligned accesses.
  3066.  
  3067.        --mmoolldd--aalliiggnn
  3068.               Enable structure-alignment compatibility  with  In-
  3069.               tel's  gcc release version 1.3 (based on gcc 1.37).
  3070.               Currently this is buggy in that ##pprraaggmmaa aalliiggnn 11  is
  3071.               always assumed as well, and cannot be turned off.
  3072.  
  3073.        These `--mm' options are defined for the DEC Alpha implemen-
  3074.        tations:
  3075.  
  3076.        --mmnnoo--ssoofftt--ffllooaatt
  3077.  
  3078.        --mmssoofftt--ffllooaatt
  3079.               Use (do not use) the  hardware  floating-point  in-
  3080.               structions  for  floating-point  operations.   When
  3081.               --mmssoofftt--ffllooaatt is specified, functions in `lliibbggcccc11..cc'
  3082.               will  be used to perform floating-point operations.
  3083.               Unless they are replaced by routines  that  emulate
  3084.               the  floating-point operations, or compiled in such
  3085.               a way as to call such  emulations  routines,  these
  3086.               routines will issue floating-point operations.   If
  3087.               you are compiling for an  Alpha  without  floating-
  3088.               point  operations, you must ensure that the library
  3089.               is built so as not to call them.
  3090.  
  3091.               Note that Alpha implementations  without  floating-
  3092.               point  operations  are  required  to have floating-
  3093.               point registers.
  3094.  
  3095.        --mmffpp--rreegg
  3096.  
  3097.  
  3098.  
  3099.  
  3100. GNU Tools                   1993/10/13                         47
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106. GCC(1)                      GNU Tools                      GCC(1)
  3107.  
  3108.  
  3109.        --mmnnoo--ffpp--rreeggss
  3110.               Generate code that uses (does not use)  the  float-
  3111.               ing-point   register   set.   --mmnnoo--ffpp--rreeggss  implies
  3112.               --mmssoofftt--ffllooaatt.  If the floating-point  register  set
  3113.               is  not used, floating point operands are passed in
  3114.               integer registers as  if  they  were  integers  and
  3115.               floating-point  results are passed in $0 instead of
  3116.               $f0.  This is a non-standard calling  sequence,  so
  3117.               any  function with a floating-point argument or re-
  3118.               turn value called by code  compiled  with  --mmnnoo--ffpp--
  3119.               rreeggss must also be compiled with that option.
  3120.  
  3121.               A  typical  use of this option is building a kernel
  3122.               that does not use, and hence need not save and  re-
  3123.               store, any floating-point registers.
  3124.  
  3125.        These additional options are available on System V Release
  3126.        4 for compatibility with other compilers on those systems:
  3127.  
  3128.        --GG     On  SVr4  systems, ggcccc accepts the option `--GG' (and
  3129.               passes it to the system linker), for  compatibility
  3130.               with  other compilers.  However, we suggest you use
  3131.               `--ssyymmbboolliicc' or `--sshhaarreedd' as appropriate, instead of
  3132.               supplying linker options on the ggcccc command line.
  3133.  
  3134.        --QQyy    Identify the versions of each tool used by the com-
  3135.               piler, in a ..iiddeenntt assembler directive in the  out-
  3136.               put.
  3137.  
  3138.        --QQnn    Refrain from adding ..iiddeenntt directives to the output
  3139.               file (this is the default).
  3140.  
  3141.        --YYPP,,_d_i_r_s
  3142.               Search the directories _d_i_r_s, and no others, for li-
  3143.               braries  specified with `--ll'.  You can separate di-
  3144.               rectory entries  in  _d_i_r_s  from  one  another  with
  3145.               colons.
  3146.  
  3147.        --YYmm,,_d_i_r
  3148.               Look in the directory _d_i_r to find the M4 preproces-
  3149.               sor.  The assembler uses this option.
  3150.  
  3151. CCOODDEE GGEENNEERRAATTIIOONN OOPPTTIIOONNSS
  3152.        These machine-independent options  control  the  interface
  3153.        conventions used in code generation.
  3154.  
  3155.        Most  of  them  begin  with `-f'.  These options have both
  3156.        positive and negative forms; the negative form of  `--ffffoooo'
  3157.        would  be `--ffnnoo--ffoooo'.  In the table below, only one of the
  3158.        forms is listed--the one which is not  the  default.   You
  3159.        can  figure out the other form by either removing `nnoo--' or
  3160.        adding it.
  3161.  
  3162.  
  3163.  
  3164.  
  3165.  
  3166. GNU Tools                   1993/10/13                         48
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172. GCC(1)                      GNU Tools                      GCC(1)
  3173.  
  3174.  
  3175.        --ffnnoonnnnuullll--oobbjjeeccttss
  3176.               Assume that objects reached through references  are
  3177.               not null (C++ only).
  3178.  
  3179.               Normally,  GNU  C++  makes conservative assumptions
  3180.               about objects reached through references.  For  ex-
  3181.               ample,  the  compiler must check that aa is not null
  3182.               in code like the following:
  3183.  
  3184.               obj &a = g (); a.f (2);
  3185.  
  3186.               Checking that references of this sort have non-null
  3187.               values  requires extra code, however, and it is un-
  3188.               necessary  for  many   programs.    You   can   use
  3189.               `--ffnnoonnnnuullll--oobbjjeeccttss' to omit the checks for null, if
  3190.               your program doesn't require checking.
  3191.  
  3192.        --ffppcccc--ssttrruucctt--rreettuurrnn
  3193.               Use the same convention for  returning  ssttrruucctt  and
  3194.               uunniioonn  values  that is used by the usual C compiler
  3195.               on your system.  This convention is less  efficient
  3196.               for small structures, and on many machines it fails
  3197.               to be reentrant; but it has the advantage of allow-
  3198.               ing  intercallability between GCC-compiled code and
  3199.               PCC-compiled code.
  3200.  
  3201.        --ffrreegg--ssttrruucctt--rreettuurrnn
  3202.               Use the convention that ssttrruucctt and uunniioonn values are
  3203.               returned  in registers when possible.  This is more
  3204.               efficient     for     small     structures     than
  3205.               --ffppcccc--ssttrruucctt--rreettuurrnn.
  3206.  
  3207.               If  you  specify  neither  --ffppcccc--ssttrruucctt--rreettuurrnn  nor
  3208.               --ffrreegg--ssttrruucctt--rreettuurrnn, GNU CC defaults  to  whichever
  3209.               convention is standard for the target.  If there is
  3210.               no  standard  convention,  GNU   CC   defaults   to
  3211.               --ffppcccc--ssttrruucctt--rreettuurrnn.
  3212.  
  3213.        --ffsshhoorrtt--eennuummss
  3214.               Allocate  to  an eennuumm type only as many bytes as it
  3215.               needs for the declared range  of  possible  values.
  3216.               Specifically,  the  eennuumm type will be equivalent to
  3217.               the smallest integer type which has enough room.
  3218.  
  3219.        --ffsshhoorrtt--ddoouubbllee
  3220.               Use the same size for ddoouubbllee as for ffllooaatt .
  3221.  
  3222.        --ffsshhaarreedd--ddaattaa
  3223.               Requests that the data and non-ccoonnsstt  variables  of
  3224.               this compilation be shared data rather than private
  3225.               data.  The distinction makes sense only on  certain
  3226.               operating  systems, where shared data is shared be-
  3227.               tween processes running  the  same  program,  while
  3228.               private data exists in one copy per process.
  3229.  
  3230.  
  3231.  
  3232. GNU Tools                   1993/10/13                         49
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238. GCC(1)                      GNU Tools                      GCC(1)
  3239.  
  3240.  
  3241.        --ffnnoo--ccoommmmoonn
  3242.               Allocate even uninitialized global variables in the
  3243.               bss section of the object file, rather than  gener-
  3244.               ating  them  as common blocks.  This has the effect
  3245.               that if the same variable is declared (without  eexx--
  3246.               tteerrnn)  in  two different compilations, you will get
  3247.               an error when you link them.  The only reason  this
  3248.               might  be  useful is if you wish to verify that the
  3249.               program will work on  other  systems  which  always
  3250.               work this way.
  3251.  
  3252.        --ffnnoo--iiddeenntt
  3253.               Ignore the `##iiddeenntt' directive.
  3254.  
  3255.        --ffnnoo--ggnnuu--lliinnkkeerr
  3256.               Do  not  output global initializations (such as C++
  3257.               constructors and destructors) in the form  used  by
  3258.               the  GNU linker (on systems where the GNU linker is
  3259.               the standard method of handling  them).   Use  this
  3260.               option when you want to use a non-GNU linker, which
  3261.               also requires using the ccoolllleecctt22  program  to  make
  3262.               sure  the  system  linker includes constructors and
  3263.               destructors.  (ccoolllleecctt22 is included in the  GNU  CC
  3264.               distribution.)   For  systems  which  _m_u_s_t use ccooll--
  3265.               lleecctt22, the compiler driver ggcccc is configured to  do
  3266.               this automatically.
  3267.  
  3268.        --ffiinnhhiibbiitt--ssiizzee--ddiirreeccttiivvee
  3269.               Don't  output  a ..ssiizzee assembler directive, or any-
  3270.               thing else that would cause trouble if the function
  3271.               is  split  in  the  middle,  and the two halves are
  3272.               placed at locations far apart in memory.  This  op-
  3273.               tion  is  used  when  compiling  `ccrrttssttuuffff..cc';  you
  3274.               should not need to use it for anything else.
  3275.  
  3276.        --ffvveerrbboossee--aassmm
  3277.               Put extra commentary information in  the  generated
  3278.               assembly  code  to make it more readable.  This op-
  3279.               tion is generally only of use to those who actually
  3280.               need  to  read the generated assembly code (perhaps
  3281.               while debugging the compiler itself).
  3282.  
  3283.        --ffvvoollaattiillee
  3284.               Consider all memory references through pointers  to
  3285.               be volatile.
  3286.  
  3287.        --ffvvoollaattiillee--gglloobbaall
  3288.               Consider all memory references to extern and global
  3289.               data items to be volatile.
  3290.  
  3291.        --ffppiicc  If supported for the target machines, generate  po-
  3292.               sition-independent  code,  suitable  for  use  in a
  3293.               shared library.
  3294.  
  3295.  
  3296.  
  3297.  
  3298. GNU Tools                   1993/10/13                         50
  3299.  
  3300.  
  3301.  
  3302.  
  3303.  
  3304. GCC(1)                      GNU Tools                      GCC(1)
  3305.  
  3306.  
  3307.        --ffPPIICC  If supported for the target machine, emit position-
  3308.               independent  code,  suitable  for  dynamic linking,
  3309.               even if branches need large displacements.
  3310.  
  3311.        --ffffiixxeedd--_r_e_g
  3312.               Treat the register named _r_e_g as a  fixed  register;
  3313.               generated  code  should  never  refer to it (except
  3314.               perhaps as a stack pointer,  frame  pointer  or  in
  3315.               some other fixed role).
  3316.  
  3317.               _r_e_g  must  be the name of a register.  The register
  3318.               names accepted are machine-specific and are defined
  3319.               in the RREEGGIISSTTEERR__NNAAMMEESS macro in the machine descrip-
  3320.               tion macro file.
  3321.  
  3322.               This flag does not have a negative form, because it
  3323.               specifies a three-way choice.
  3324.  
  3325.        --ffccaallll--uusseedd--_r_e_g
  3326.               Treat the register named _r_e_g as an allocatable reg-
  3327.               ister that is clobbered by function calls.  It  may
  3328.               be  allocated  for temporaries or variables that do
  3329.               not live across a call.   Functions  compiled  this
  3330.               way will not save and restore the register _r_e_g.
  3331.  
  3332.               Use  of  this  flag for a register that has a fixed
  3333.               pervasive role in the  machine's  execution  model,
  3334.               such  as  the  stack pointer or frame pointer, will
  3335.               produce disastrous results.
  3336.  
  3337.               This flag does not have a negative form, because it
  3338.               specifies a three-way choice.
  3339.  
  3340.        --ffccaallll--ssaavveedd--_r_e_g
  3341.               Treat the register named _r_e_g as an allocatable reg-
  3342.               ister saved by functions.  It may be allocated even
  3343.               for  temporaries  or  variables  that live across a
  3344.               call.  Functions compiled this way  will  save  and
  3345.               restore the register _r_e_g if they use it.
  3346.  
  3347.               Use  of  this  flag for a register that has a fixed
  3348.               pervasive role in the  machine's  execution  model,
  3349.               such  as  the  stack pointer or frame pointer, will
  3350.               produce disastrous results.
  3351.  
  3352.               A different sort of disaster will result  from  the
  3353.               use  of  this flag for a register in which function
  3354.               values may be returned.
  3355.  
  3356.               This flag does not have a negative form, because it
  3357.               specifies a three-way choice.
  3358.  
  3359. PPRRAAGGMMAASS
  3360.        Two  `##pprraaggmmaa'  directives  are  supported for GNU C++, to
  3361.  
  3362.  
  3363.  
  3364. GNU Tools                   1993/10/13                         51
  3365.  
  3366.  
  3367.  
  3368.  
  3369.  
  3370. GCC(1)                      GNU Tools                      GCC(1)
  3371.  
  3372.  
  3373.        permit using the same header file for two purposes:  as  a
  3374.        definition  of  interfaces to a given object class, and as
  3375.        the full definition of the contents of that object  class.
  3376.  
  3377.        ##pprraaggmmaa iinntteerrffaaccee
  3378.               (C++  only.)   Use  this  directive in header files
  3379.               that define object classes, to save space  in  most
  3380.               of  the  object files that use those classes.  Nor-
  3381.               mally, local copies of certain information  (backup
  3382.               copies of inline member functions, debugging infor-
  3383.               mation, and the internal tables that implement vir-
  3384.               tual  functions)  must  be kept in each object file
  3385.               that includes class definitions.  You can use  this
  3386.               pragma  to  avoid  such duplication.  When a header
  3387.               file containing `##pprraaggmmaa iinntteerrffaaccee' is included  in
  3388.               a  compilation, this auxiliary information will not
  3389.               be generated (unless the main input source file it-
  3390.               self  uses `##pprraaggmmaa iimmpplleemmeennttaattiioonn').  Instead, the
  3391.               object files will contain references to be resolved
  3392.               at link time.
  3393.  
  3394.        ##pprraaggmmaa iimmpplleemmeennttaattiioonn
  3395.  
  3396.        ##pprraaggmmaa iimmpplleemmeennttaattiioonn ""_o_b_j_e_c_t_s..hh""
  3397.               (C++  only.)  Use this pragma in a main input file,
  3398.               when you want  full  output  from  included  header
  3399.               files  to be generated (and made globally visible).
  3400.               The included  header  file,  in  turn,  should  use
  3401.               `##pprraaggmmaa  iinntteerrffaaccee'.  Backup copies of inline mem-
  3402.               ber functions, debugging information, and  the  in-
  3403.               ternal  tables  used to implement virtual functions
  3404.               are all generated in implementation files.
  3405.  
  3406.               If you use `##pprraaggmmaa iimmpplleemmeennttaattiioonn' with  no  argu-
  3407.               ment,  it  applies to an include file with the same
  3408.               basename as  your  source  file;  for  example,  in
  3409.               `aallllccllaassss..cccc',  `##pprraaggmmaa  iimmpplleemmeennttaattiioonn' by itself
  3410.               is   equivalent    to    `##pprraaggmmaa    iimmpplleemmeennttaattiioonn
  3411.               ""aallllccllaassss..hh""'.  Use the string argument if you want
  3412.               a single implementation file to include  code  from
  3413.               multiple header files.
  3414.  
  3415.               There  is no way to split up the contents of a sin-
  3416.               gle header file into multiple implementation files.
  3417.  
  3418. FFIILLEESS
  3419.        file.c             C source file
  3420.        file.h             C header (preprocessor) file
  3421.        file.i             preprocessed C source file
  3422.        file.C             C++ source file
  3423.        file.cc            C++ source file
  3424.        file.cxx           C++ source file
  3425.        file.m             Objective-C source file
  3426.        file.s             assembly language file
  3427.  
  3428.  
  3429.  
  3430. GNU Tools                   1993/10/13                         52
  3431.  
  3432.  
  3433.  
  3434.  
  3435.  
  3436. GCC(1)                      GNU Tools                      GCC(1)
  3437.  
  3438.  
  3439.        file.o             object file
  3440.        a.out              link edited output
  3441.        _T_M_P_D_I_R/cc*         temporary files
  3442.        _L_I_B_D_I_R/cpp         preprocessor
  3443.        _L_I_B_D_I_R/cc1         compiler for C
  3444.        _L_I_B_D_I_R/cc1plus     compiler for C++
  3445.        _L_I_B_D_I_R/collect     linker front end needed on some machines
  3446.        _L_I_B_D_I_R/libgcc.a    GCC subroutine library
  3447.        /lib/crt[01n].o    start-up routine
  3448.        _L_I_B_D_I_R/ccrt0       additional start-up routine for C++
  3449.        /lib/libc.a        standard C library, see
  3450.        _i_n_t_r_o(3)
  3451.        /usr/include       standard directory for ##iinncclluuddee files
  3452.        _L_I_B_D_I_R/include     standard gcc directory for ##iinncclluuddee files
  3453.        _L_I_B_D_I_R/g++-include additional g++ directory for ##iinncclluuddee
  3454.  
  3455.        _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.
  3456.        _T_M_P_D_I_R comes from the environment variable TTMMPPDDIIRR (default
  3457.        //uussrr//ttmmpp if available, else //ttmmpp).
  3458.  
  3459. SSEEEE AALLSSOO
  3460.        cpp(1), as(1), ld(1), gdb(1), adb(1), dbx(1), sdb(1).
  3461.        `ggcccc', `ccpppp', `aass', `lldd', and `ggddbb' entries in iinnffoo.
  3462.        _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.
  3463.        Stallman;  _T_h_e _C _P_r_e_p_r_o_c_e_s_s_o_r, Richard M. Stallman; _D_e_b_u_g_-
  3464.        _g_i_n_g _w_i_t_h _G_D_B_: _t_h_e _G_N_U _S_o_u_r_c_e_-_L_e_v_e_l _D_e_b_u_g_g_e_r,  Richard  M.
  3465.        Stallman and Roland H. Pesch; _U_s_i_n_g _a_s_: _t_h_e _G_N_U _A_s_s_e_m_b_l_e_r,
  3466.        Dean Elsner, Jay Fenlason & friends; _l_d_: _t_h_e  _G_N_U  _l_i_n_k_e_r,
  3467.        Steve Chamberlain and Roland Pesch.
  3468.  
  3469. BBUUGGSS
  3470.        For instructions on reporting bugs, see the GCC manual.
  3471.  
  3472. CCOOPPYYIINNGG
  3473.        Copyright  1991, 1992, 1993 Free Software Foundation, Inc.
  3474.  
  3475.        Permission is granted  to  make  and  distribute  verbatim
  3476.        copies  of  this  manual provided the copyright notice and
  3477.        this permission notice are preserved on all copies.
  3478.  
  3479.        Permission is granted to copy and distribute modified ver-
  3480.        sions  of  this  manual  under the conditions for verbatim
  3481.        copying, provided that the entire resulting  derived  work
  3482.        is  distributed  under  the  terms  of a permission notice
  3483.        identical to this one.
  3484.  
  3485.        Permission is granted to copy and distribute  translations
  3486.        of this manual into another language, under the above con-
  3487.        ditions for modified versions, except that this permission
  3488.        notice  may  be  included  in translations approved by the
  3489.        Free Software Foundation instead of in  the  original  En-
  3490.        glish.
  3491.  
  3492.  
  3493.  
  3494.  
  3495.  
  3496. GNU Tools                   1993/10/13                         53
  3497.  
  3498.  
  3499.  
  3500.  
  3501.  
  3502. GCC(1)                      GNU Tools                      GCC(1)
  3503.  
  3504.  
  3505. AAUUTTHHOORRSS
  3506.        See the GNU CC Manual for the contributors to GNU CC.
  3507.  
  3508.  
  3509.  
  3510.  
  3511.  
  3512.  
  3513.  
  3514.  
  3515.  
  3516.  
  3517.  
  3518.  
  3519.  
  3520.  
  3521.  
  3522.  
  3523.  
  3524.  
  3525.  
  3526.  
  3527.  
  3528.  
  3529.  
  3530.  
  3531.  
  3532.  
  3533.  
  3534.  
  3535.  
  3536.  
  3537.  
  3538.  
  3539.  
  3540.  
  3541.  
  3542.  
  3543.  
  3544.  
  3545.  
  3546.  
  3547.  
  3548.  
  3549.  
  3550.  
  3551.  
  3552.  
  3553.  
  3554.  
  3555.  
  3556.  
  3557.  
  3558.  
  3559.  
  3560.  
  3561.  
  3562. GNU Tools                   1993/10/13                         54
  3563.  
  3564.  
  3565.