Annotation of GNUtools/cc/gcc.info-4, revision 1.1

1.1     ! root        1: This is Info file gcc.info, produced by Makeinfo-1.54 from the input
        !             2: file gcc.texi.
        !             3: 
        !             4:    This file documents the use and the internals of the GNU compiler.
        !             5: 
        !             6:    Published by the Free Software Foundation 675 Massachusetts Avenue
        !             7: Cambridge, MA 02139 USA
        !             8: 
        !             9:    Copyright (C) 1988, 1989, 1992, 1993 Free Software Foundation, Inc.
        !            10: 
        !            11:    Permission is granted to make and distribute verbatim copies of this
        !            12: manual provided the copyright notice and this permission notice are
        !            13: preserved on all copies.
        !            14: 
        !            15:    Permission is granted to copy and distribute modified versions of
        !            16: this manual under the conditions for verbatim copying, provided also
        !            17: that the sections entitled "GNU General Public License" and "Protect
        !            18: Your Freedom--Fight `Look And Feel'" are included exactly as in the
        !            19: original, and provided that the entire resulting derived work is
        !            20: distributed under the terms of a permission notice identical to this
        !            21: one.
        !            22: 
        !            23:    Permission is granted to copy and distribute translations of this
        !            24: manual into another language, under the above conditions for modified
        !            25: versions, except that the sections entitled "GNU General Public
        !            26: License" and "Protect Your Freedom--Fight `Look And Feel'", and this
        !            27: permission notice, may be included in translations approved by the Free
        !            28: Software Foundation instead of in the original English.
        !            29: 
        !            30: 
        !            31: File: gcc.info,  Node: RS/6000 and PowerPC Options,  Next: RT Options,  Prev: M88K Options,  Up: Submodel Options
        !            32: 
        !            33: IBM RS/6000 and PowerPC Options
        !            34: -------------------------------
        !            35: 
        !            36:    These `-m' options are defined for the IBM RS/6000 and PowerPC:
        !            37: `-mpower'
        !            38: `-mno-power'
        !            39: `-mpower2'
        !            40: `-mno-power2'
        !            41: `-mpowerpc'
        !            42: `-mno-powerpc'
        !            43: `-mpowerpcsqr'
        !            44: `-mno-powerpcsqr'
        !            45: `-mpowerpc64'
        !            46: `-mno-powerpc64'
        !            47:      GNU CC supports two related instruction set architectures for the
        !            48:      RS/6000 and PowerPC.  The "POWER" instruction set are those
        !            49:      instructions supported by the `rios' chip set used in the original
        !            50:      RS/6000 systems and the "PowerPC" instruction set is the
        !            51:      architecture of the Motorola MPC6xx microprocessors.  The PowerPC
        !            52:      architecture defines 64-bit instructions, but they are not
        !            53:      supported by any current processors.
        !            54: 
        !            55:      Neither architecture is a subset of the other.  However there is a
        !            56:      large common subset of instructions supported by both.  An MQ
        !            57:      register is included in processors supporting the POWER
        !            58:      architecture.
        !            59: 
        !            60:      You use these options to specify which instructions are available
        !            61:      on the processor you are using.  The default value of these
        !            62:      options is determined when configuring GNU CC.  Specifying the
        !            63:      `-mcpu=CPU_TYPE' overrides the specification of these options.  We
        !            64:      recommend you use that option rather than these.
        !            65: 
        !            66:      The `-mpower' option allows GNU CC to generate instructions that
        !            67:      are found only in the POWER architecture and to use the MQ
        !            68:      register.  Specifying `-mpower2' implies `-power' and also allows
        !            69:      GNU CC to generate instructions that are present in the POWER2
        !            70:      architecture but not the original POWER architecture.
        !            71: 
        !            72:      The `-mpowerpc' option allows GNU CC to generate instructions that
        !            73:      are found only in the 32-bit subset of the PowerPC architecture.
        !            74:      Specifying `-mpowerpcsqr' implies `-mpowerpc' and also allows GNU
        !            75:      CC to use the floating point square root instructions in the
        !            76:      PowerPC architecture but not in its first implementation.
        !            77:      Likewise, specifying `-mpowerpc64' implies `-mpowerpc' and also
        !            78:      allows GNU CC to use the 64-bit instructions in the PowerPC
        !            79:      architecture.
        !            80: 
        !            81:      If you specify both `-mno-power' and `-mno-powerpc', GNU CC will
        !            82:      use only the instructions in the common subset of both
        !            83:      architectures and will not use the MQ register.  Specifying both
        !            84:      `-mpower' and `-mpowerpc' permits GNU CC to use any instruction
        !            85:      from either architecture and to allow use of the MQ register;
        !            86:      specify this for the Motorola MPC601.
        !            87: 
        !            88: `-mnew-mnemonics'
        !            89: `-mold-mnemonics'
        !            90:      Select the mnemonics for GNU CC to use in the generated assembler
        !            91:      code.  `-mnew-mnemonics' requests GNU CC to produce output that
        !            92:      uses the assembler mnemonics defined for the PowerPC architecture
        !            93:      and the `-mold-mnemonics' requests GNU CC to use the assembler
        !            94:      mnemonics defined for the POWER architecture.  Instructions
        !            95:      defined in only one architecture have only one mnemonic; GNU CC
        !            96:      uses that mnemonic irrespective of which of thse options is
        !            97:      specified.
        !            98: 
        !            99:      PowerPC assemblers support both the old and new mnemonics, as will
        !           100:      later POWER assemblers.  Current POWER assemblers only support the
        !           101:      old mnemonics.  Specify `-mnew-mnemonics' if you have an assembler
        !           102:      that sypports them, otherwise specify `-mold-mnemonics'.
        !           103: 
        !           104:      The default value of these options depends on how GNU CC was
        !           105:      configured.  Specifing `-mcpu=CPU_TYPE' sometimes overrides the
        !           106:      value of these option.  Unless you are building a cross-compiled,
        !           107:      you should normally not specify either `-mnew-mnemonics' or
        !           108:      `-mold-mnemonics', but should instead accept the default.
        !           109: 
        !           110: `-mcpu=CPU_TYPE'
        !           111:      Set architecture type, register usage, choice of mnemonics, and
        !           112:      instruction scheduling parameters for machine type CPU_TYPE.  By
        !           113:      default, CPU_TYPE is the target system defined when GNU CC was
        !           114:      configured.  Supported values for CPU_TYPE are `rios1', `rios2',
        !           115:      `601', `603', `604', `620' and `all'.
        !           116: 
        !           117:      Specifying `-mcpu=rios1' or `-mcpu=rios2' enables the `-mpower'
        !           118:      option and disables the `-mpowerpc' option, `-mcpu=601' enables
        !           119:      both the `-mpower' and `-mpowerpc' options, `-mcpu=603' and
        !           120:      `-mcpu=604' enable the `-mpowerpc' option and disables the
        !           121:      `-mpower' option, and `-mcpu=620' enables both the `-mpowerpc' and
        !           122:      `-mpowerpc64' options and also disables the `-mpower' option.
        !           123: 
        !           124:      To generate code that will operate on all members of the RS/6000
        !           125:      and PowerPC family, specify `-mcpu=all'.  In that case, GNU CC will
        !           126:      only use instructions in the common subset and will not use the MQ
        !           127:      register.  The instruction scheduling parameters and choice of
        !           128:      mnemonics are not affected.
        !           129: 
        !           130:      Specifying `-mcpu=601', `-mcpu=603', `-mcpu=604', or `-mcpu=620'
        !           131:      also enables the `new-mnemonics' option.
        !           132: 
        !           133: `-mnormal-toc'
        !           134: `-mno-fp-in-toc'
        !           135: `-mminimal-toc'
        !           136:      Modify generation of the TOC (Table Of Contents), which is created
        !           137:      for every executable file.  The `-mnormal-toc' option is selected
        !           138:      by default.  In that case, GNU CC will allocate at least one TOC
        !           139:      entry for each unique non-automatic variable reference in your
        !           140:      program.  GNU CC will also place floating-point constants in the
        !           141:      TOC.  However, only 16K entries are available in the TOC.
        !           142: 
        !           143:      If you receive a linker error message that says you have
        !           144:      overflowed the available TOC space, recompile your files with
        !           145:      either the `-mno-fp-in-toc' or `-mminimal-toc' options.
        !           146:      `-mno-fp-in-toc' prevents GNU CC from putting floating-point
        !           147:      constants in the TOC.  `-mminimal-toc' causes GNU CC to make only
        !           148:      one TOC entry for every file.  Using the `-minimal-toc' option
        !           149:      produces slightly slower and larger code than the `-mnormal-toc' or
        !           150:      `-mno-fp-in-toc' options.  If you use floating-point, try the
        !           151:      `-mno-fp-in-toc' option before you specify `-mminimal-toc'.
        !           152: 
        !           153: 
        !           154: File: gcc.info,  Node: RT Options,  Next: MIPS Options,  Prev: RS/6000 and PowerPC Options,  Up: Submodel Options
        !           155: 
        !           156: IBM RT Options
        !           157: --------------
        !           158: 
        !           159:    These `-m' options are defined for the IBM RT PC:
        !           160: 
        !           161: `-min-line-mul'
        !           162:      Use an in-line code sequence for integer multiplies.  This is the
        !           163:      default.
        !           164: 
        !           165: `-mcall-lib-mul'
        !           166:      Call `lmul$$' for integer multiples.
        !           167: 
        !           168: `-mfull-fp-blocks'
        !           169:      Generate full-size floating point data blocks, including the
        !           170:      minimum amount of scratch space recommended by IBM.  This is the
        !           171:      default.
        !           172: 
        !           173: `-mminimum-fp-blocks'
        !           174:      Do not include extra scratch space in floating point data blocks.
        !           175:      This results in smaller code, but slower execution, since scratch
        !           176:      space must be allocated dynamically.
        !           177: 
        !           178: `-mfp-arg-in-fpregs'
        !           179:      Use a calling sequence incompatible with the IBM calling
        !           180:      convention in which floating point arguments are passed in
        !           181:      floating point registers.  Note that `varargs.h' and `stdargs.h'
        !           182:      will not work with floating point operands if this option is
        !           183:      specified.
        !           184: 
        !           185: `-mfp-arg-in-gregs'
        !           186:      Use the normal calling convention for floating point arguments.
        !           187:      This is the default.
        !           188: 
        !           189: `-mhc-struct-return'
        !           190:      Return structures of more than one word in memory, rather than in a
        !           191:      register.  This provides compatibility with the MetaWare HighC (hc)
        !           192:      compiler.  Use the option `-fpcc-struct-return' for compatibility
        !           193:      with the Portable C Compiler (pcc).
        !           194: 
        !           195: `-mnohc-struct-return'
        !           196:      Return some structures of more than one word in registers, when
        !           197:      convenient.  This is the default.  For compatibility with the
        !           198:      IBM-supplied compilers, use the option `-fpcc-struct-return' or the
        !           199:      option `-mhc-struct-return'.
        !           200: 
        !           201: 
        !           202: File: gcc.info,  Node: MIPS Options,  Next: i386 Options,  Prev: RT Options,  Up: Submodel Options
        !           203: 
        !           204: MIPS Options
        !           205: ------------
        !           206: 
        !           207:    These `-m' options are defined for the MIPS family of computers:
        !           208: 
        !           209: `-mcpu=CPU TYPE'
        !           210:      Assume the defaults for the machine type CPU TYPE when scheduling
        !           211:      instructions.  The default CPU TYPE is `default', which picks the
        !           212:      longest cycles times for any of the machines, in order that the
        !           213:      code run at reasonable rates on all MIPS cpu's.  Other choices for
        !           214:      CPU TYPE are `r2000', `r3000', `r4000', and `r6000'.  While
        !           215:      picking a specific CPU TYPE will schedule things appropriately for
        !           216:      that particular chip, the compiler will not generate any code that
        !           217:      does not meet level 1 of the MIPS ISA (instruction set
        !           218:      architecture) without the `-mips2' or `-mips3' switches being used.
        !           219: 
        !           220: `-mips2'
        !           221:      Issue instructions from level 2 of the MIPS ISA (branch likely,
        !           222:      square root instructions).  The `-mcpu=r4000' or `-mcpu=r6000'
        !           223:      switch must be used in conjunction with `-mips2'.
        !           224: 
        !           225: `-mips3'
        !           226:      Issue instructions from level 3 of the MIPS ISA (64 bit
        !           227:      instructions).  You must use the `-mcpu=r4000' switch along with
        !           228:      `-mips3'.
        !           229: 
        !           230: `-mint64'
        !           231: `-mlong64'
        !           232: `-mlonglong128'
        !           233:      These options don't work at present.
        !           234: 
        !           235: `-mmips-as'
        !           236:      Generate code for the MIPS assembler, and invoke `mips-tfile' to
        !           237:      add normal debug information.  This is the default for all
        !           238:      platforms except for the OSF/1 reference platform, using the
        !           239:      OSF/rose object format.  If the either of the `-gstabs' or
        !           240:      `-gstabs+' switches are used, the `mips-tfile' program will
        !           241:      encapsulate the stabs within MIPS ECOFF.
        !           242: 
        !           243: `-mgas'
        !           244:      Generate code for the GNU assembler.  This is the default on the
        !           245:      OSF/1 reference platform, using the OSF/rose object format.
        !           246: 
        !           247: `-mrnames'
        !           248: `-mno-rnames'
        !           249:      The `-mrnames' switch says to output code using the MIPS software
        !           250:      names for the registers, instead of the hardware names (ie, A0
        !           251:      instead of $4).  The GNU assembler does not support the `-mrnames'
        !           252:      switch, and the MIPS assembler will be instructed to run the MIPS
        !           253:      C preprocessor over the source file.  The `-mno-rnames' switch is
        !           254:      default.
        !           255: 
        !           256: `-mgpopt'
        !           257: `-mno-gpopt'
        !           258:      The `-mgpopt' switch says to write all of the data declarations
        !           259:      before the instructions in the text section, this allows the MIPS
        !           260:      assembler to generate one word memory references instead of using
        !           261:      two words for short global or static data items.  This is on by
        !           262:      default if optimization is selected.
        !           263: 
        !           264: `-mstats'
        !           265: `-mno-stats'
        !           266:      For each non-inline function processed, the `-mstats' switch
        !           267:      causes the compiler to emit one line to the standard error file to
        !           268:      print statistics about the program (number of registers saved,
        !           269:      stack size, etc.).
        !           270: 
        !           271: `-mmemcpy'
        !           272: `-mno-memcpy'
        !           273:      The `-mmemcpy' switch makes all block moves call the appropriate
        !           274:      string function (`memcpy' or `bcopy') instead of possibly
        !           275:      generating inline code.
        !           276: 
        !           277: `-mmips-tfile'
        !           278: `-mno-mips-tfile'
        !           279:      The `-mno-mips-tfile' switch causes the compiler not postprocess
        !           280:      the object file with the `mips-tfile' program, after the MIPS
        !           281:      assembler has generated it to add debug support.  If `mips-tfile'
        !           282:      is not run, then no local variables will be available to the
        !           283:      debugger.  In addition, `stage2' and `stage3' objects will have
        !           284:      the temporary file names passed to the assembler embedded in the
        !           285:      object file, which means the objects will not compare the same.
        !           286:      The `-mno-mips-tfile' switch should only be used when there are
        !           287:      bugs in the `mips-tfile' program that prevents compilation.
        !           288: 
        !           289: `-msoft-float'
        !           290:      Generate output containing library calls for floating point.
        !           291:      *Warning:* the requisite libraries are not part of GNU CC.
        !           292:      Normally the facilities of the machine's usual C compiler are
        !           293:      used, but this can't be done directly in cross-compilation.  You
        !           294:      must make your own arrangements to provide suitable library
        !           295:      functions for cross-compilation.
        !           296: 
        !           297: `-mhard-float'
        !           298:      Generate output containing floating point instructions.  This is
        !           299:      the default if you use the unmodified sources.
        !           300: 
        !           301: `-mfp64'
        !           302:      Assume that the FR bit in the status word is on, and that there
        !           303:      are 32 64-bit floating point registers, instead of 32 32-bit
        !           304:      floating point registers.  You must also specify the `-mcpu=r4000'
        !           305:      and `-mips3' switches.
        !           306: 
        !           307: `-mfp32'
        !           308:      Assume that there are 32 32-bit floating point registers.  This is
        !           309:      the default.
        !           310: 
        !           311: `-mabicalls'
        !           312: `-mno-abicalls'
        !           313:      Emit (or do not emit) the pseudo operations `.abicalls',
        !           314:      `.cpload', and `.cprestore' that some System V.4 ports use for
        !           315:      position independent code.
        !           316: 
        !           317: `-mlong-calls'
        !           318: `-mlong-calls'
        !           319:      Do all calls with the `JALR' instruction, which requires loading
        !           320:      up a function's address into a register before the call.  You need
        !           321:      to use this switch, if you call outside of the current 512
        !           322:      megabyte segment to functions that are not through pointers.
        !           323: 
        !           324: `-mhalf-pic'
        !           325: `-mno-half-pic'
        !           326:      Put pointers to extern references into the data section and load
        !           327:      them up, rather than put the references in the text section.
        !           328: 
        !           329: `-G NUM'
        !           330:      Put global and static items less than or equal to NUM bytes into
        !           331:      the small data or bss sections instead of the normal data or bss
        !           332:      section.  This allows the assembler to emit one word memory
        !           333:      reference instructions based on the global pointer (GP or $28),
        !           334:      instead of the normal two words used.  By default, NUM is 8 when
        !           335:      the MIPS assembler is used, and 0 when the GNU assembler is used.
        !           336:      The `-G NUM' switch is also passed to the assembler and linker.
        !           337:      All modules should be compiled with the same `-G NUM' value.
        !           338: 
        !           339: `-nocpp'
        !           340:      Tell the MIPS assembler to not run it's preprocessor over user
        !           341:      assembler files (with a `.s' suffix) when assembling them.
        !           342: 
        !           343:    These options are defined by the macro `TARGET_SWITCHES' in the
        !           344: machine description.  The default for the options is also defined by
        !           345: that macro, which enables you to change the defaults.
        !           346: 
        !           347: 
        !           348: File: gcc.info,  Node: i386 Options,  Next: HPPA Options,  Prev: MIPS Options,  Up: Submodel Options
        !           349: 
        !           350: Intel 386 Options
        !           351: -----------------
        !           352: 
        !           353:    These `-m' options are defined for the i386 family of computers:
        !           354: 
        !           355: `-m486'
        !           356: `-mno-486'
        !           357:      Control whether or not code is optimized for a 486 instead of an
        !           358:      386.  Code generated for an 486 will run on a 386 and vice versa.
        !           359: 
        !           360: `-msoft-float'
        !           361:      Generate output containing library calls for floating point.
        !           362:      *Warning:* the requisite libraries are not part of GNU CC.
        !           363:      Normally the facilities of the machine's usual C compiler are
        !           364:      used, but this can't be done directly in cross-compilation.  You
        !           365:      must make your own arrangements to provide suitable library
        !           366:      functions for cross-compilation.
        !           367: 
        !           368:      On machines where a function returns floating point results in the
        !           369:      80387 register stack, some floating point opcodes may be emitted
        !           370:      even if `-msoft-float' is used.
        !           371: 
        !           372: `-mno-fp-ret-in-387'
        !           373:      Do not use the FPU registers for return values of functions.
        !           374: 
        !           375:      The usual calling convention has functions return values of types
        !           376:      `float' and `double' in an FPU register, even if there is no FPU.
        !           377:      The idea is that the operating system should emulate an FPU.
        !           378: 
        !           379:      The option `-mno-fp-ret-in-387' causes such values to be returned
        !           380:      in ordinary CPU registers instead.
        !           381: 
        !           382: 
        !           383: File: gcc.info,  Node: HPPA Options,  Next: Intel 960 Options,  Prev: i386 Options,  Up: Submodel Options
        !           384: 
        !           385: HPPA Options
        !           386: ------------
        !           387: 
        !           388:    These `-m' options are defined for the HPPA family of computers:
        !           389: 
        !           390: `-mpa-risc-1-0'
        !           391:      Generate code for a PA 1.0 processor.
        !           392: 
        !           393: `-mpa-risc-1-1'
        !           394:      Generate code for a PA 1.1 processor.
        !           395: 
        !           396: `-mlong-calls'
        !           397:      Generate code which allows calls to functions greater than 256k
        !           398:      away from the caller when the caller and callee are in the same
        !           399:      source file.  Do not turn this option on unless code refuses to
        !           400:      link with "branch out of range errors" from the linker.
        !           401: 
        !           402: `-mdisable-fpregs'
        !           403:      Prevent floating point registers from being used in any manner.
        !           404:      This is necessary for compiling kernels which perform lazy context
        !           405:      switching of floating point registers.  If you use this option and
        !           406:      attempt to perform floating point operations, the compiler will
        !           407:      abort.
        !           408: 
        !           409: `-mdisable-indexing'
        !           410:      Prevent the compiler from using indexing address modes.  This
        !           411:      avoids some rather obscure problems when compiling MIG generated
        !           412:      code under MACH.
        !           413: 
        !           414: `-mtrailing-colon'
        !           415:      Add a colon to the end of label definitions (for ELF assemblers).
        !           416: 
        !           417: 
        !           418: File: gcc.info,  Node: Intel 960 Options,  Next: DEC Alpha Options,  Prev: HPPA Options,  Up: Submodel Options
        !           419: 
        !           420: Intel 960 Options
        !           421: -----------------
        !           422: 
        !           423:    These `-m' options are defined for the Intel 960 implementations:
        !           424: 
        !           425: `-mCPU TYPE'
        !           426:      Assume the defaults for the machine type CPU TYPE for some of the
        !           427:      other options, including instruction scheduling, floating point
        !           428:      support, and addressing modes.  The choices for CPU TYPE are `ka',
        !           429:      `kb', `mc', `ca', `cf', `sa', and `sb'.  The default is `kb'.
        !           430: 
        !           431: `-mnumerics'
        !           432: `-msoft-float'
        !           433:      The `-mnumerics' option indicates that the processor does support
        !           434:      floating-point instructions.  The `-msoft-float' option indicates
        !           435:      that floating-point support should not be assumed.
        !           436: 
        !           437: `-mleaf-procedures'
        !           438: `-mno-leaf-procedures'
        !           439:      Do (or do not) attempt to alter leaf procedures to be callable
        !           440:      with the `bal' instruction as well as `call'.  This will result in
        !           441:      more efficient code for explicit calls when the `bal' instruction
        !           442:      can be substituted by the assembler or linker, but less efficient
        !           443:      code in other cases, such as calls via function pointers, or using
        !           444:      a linker that doesn't support this optimization.
        !           445: 
        !           446: `-mtail-call'
        !           447: `-mno-tail-call'
        !           448:      Do (or do not) make additional attempts (beyond those of the
        !           449:      machine-independent portions of the compiler) to optimize
        !           450:      tail-recursive calls into branches.  You may not want to do this
        !           451:      because the detection of cases where this is not valid is not
        !           452:      totally complete.  The default is `-mno-tail-call'.
        !           453: 
        !           454: `-mcomplex-addr'
        !           455: `-mno-complex-addr'
        !           456:      Assume (or do not assume) that the use of a complex addressing
        !           457:      mode is a win on this implementation of the i960.  Complex
        !           458:      addressing modes may not be worthwhile on the K-series, but they
        !           459:      definitely are on the C-series.  The default is currently
        !           460:      `-mcomplex-addr' for all processors except the CB and CC.
        !           461: 
        !           462: `-mcode-align'
        !           463: `-mno-code-align'
        !           464:      Align code to 8-byte boundaries for faster fetching (or don't
        !           465:      bother).  Currently turned on by default for C-series
        !           466:      implementations only.
        !           467: 
        !           468: `-mic-compat'
        !           469: `-mic2.0-compat'
        !           470: `-mic3.0-compat'
        !           471:      Enable compatibility with iC960 v2.0 or v3.0.
        !           472: 
        !           473: `-masm-compat'
        !           474: `-mintel-asm'
        !           475:      Enable compatibility with the iC960 assembler.
        !           476: 
        !           477: `-mstrict-align'
        !           478: `-mno-strict-align'
        !           479:      Do not permit (do permit) unaligned accesses.
        !           480: 
        !           481: `-mold-align'
        !           482:      Enable structure-alignment compatibility with Intel's gcc release
        !           483:      version 1.3 (based on gcc 1.37).  Currently this is buggy in that
        !           484:      `#pragma align 1' is always assumed as well, and cannot be turned
        !           485:      off.
        !           486: 
        !           487: 
        !           488: File: gcc.info,  Node: DEC Alpha Options,  Next: Clipper Options,  Prev: Intel 960 Options,  Up: Submodel Options
        !           489: 
        !           490: DEC Alpha Options
        !           491: -----------------
        !           492: 
        !           493:    These `-m' options are defined for the DEC Alpha implementations:
        !           494: 
        !           495: `-mno-soft-float'
        !           496: `-msoft-float'
        !           497:      Use (do not use) the hardware floating-point instructions for
        !           498:      floating-point operations.  When `-msoft-float' is specified,
        !           499:      functions in `libgcc1.c' will be used to perform floating-point
        !           500:      operations.  Unless they are replaced by routines that emulate the
        !           501:      floating-point operations, or compiled in such a way as to call
        !           502:      such emulations routines, these routines will issue floating-point
        !           503:      operations.   If you are compiling for an Alpha without
        !           504:      floating-point operations, you must ensure that the library is
        !           505:      built so as not to call them.
        !           506: 
        !           507:      Note that Alpha implementations without floating-point operations
        !           508:      are required to have floating-point registers.
        !           509: 
        !           510: `-mfp-reg'
        !           511: `-mno-fp-regs'
        !           512:      Generate code that uses (does not use) the floating-point register
        !           513:      set.  `-mno-fp-regs' implies `-msoft-float'.  If the floating-point
        !           514:      register set is not used, floating point operands are passed in
        !           515:      integer registers as if they were integers and floating-point
        !           516:      results are passed in $0 instead of $f0.  This is a non-standard
        !           517:      calling sequence, so any function with a floating-point argument
        !           518:      or return value called by code compiled with `-mno-fp-regs' must
        !           519:      also be compiled with that option.
        !           520: 
        !           521:      A typical use of this option is building a kernel that does not
        !           522:      use, and hence need not save and restore, any floating-point
        !           523:      registers.
        !           524: 
        !           525: 
        !           526: File: gcc.info,  Node: Clipper Options,  Next: System V Options,  Prev: DEC Alpha Options,  Up: Submodel Options
        !           527: 
        !           528: Clipper Options
        !           529: ---------------
        !           530: 
        !           531:    These `-m' options are defined for the Clipper implementations:
        !           532: 
        !           533: `-mc300'
        !           534:      Produce code for a C300 Clipper processor. This is the default.
        !           535: 
        !           536: `-mc400'
        !           537:      Produce code for a C400 Clipper processor i.e. use floting point
        !           538:      registers f8..f15.
        !           539: 
        !           540: 
        !           541: File: gcc.info,  Node: System V Options,  Prev: Clipper Options,  Up: Submodel Options
        !           542: 
        !           543: Options for System V
        !           544: --------------------
        !           545: 
        !           546:    These additional options are available on System V Release 4 for
        !           547: compatibility with other compilers on those systems:
        !           548: 
        !           549: `-Qy'
        !           550:      Identify the versions of each tool used by the compiler, in a
        !           551:      `.ident' assembler directive in the output.
        !           552: 
        !           553: `-Qn'
        !           554:      Refrain from adding `.ident' directives to the output file (this is
        !           555:      the default).
        !           556: 
        !           557: `-YP,DIRS'
        !           558:      Search the directories DIRS, and no others, for libraries
        !           559:      specified with `-l'.
        !           560: 
        !           561: `-Ym,DIR'
        !           562:      Look in the directory DIR to find the M4 preprocessor.  The
        !           563:      assembler uses this option.
        !           564: 
        !           565: 
        !           566: File: gcc.info,  Node: Code Gen Options,  Next: Environment Variables,  Prev: Submodel Options,  Up: Invoking GCC
        !           567: 
        !           568: Options for Code Generation Conventions
        !           569: =======================================
        !           570: 
        !           571:    These machine-independent options control the interface conventions
        !           572: used in code generation.
        !           573: 
        !           574:    Most of them have both positive and negative forms; the negative form
        !           575: of `-ffoo' would be `-fno-foo'.  In the table below, only one of the
        !           576: forms is listed--the one which is not the default.  You can figure out
        !           577: the other form by either removing `no-' or adding it.
        !           578: 
        !           579: `-fpcc-struct-return'
        !           580:      Return "short" `struct' and `union' values in memory like longer
        !           581:      ones, rather than in registers.  This convention is less
        !           582:      efficient, but it has the advantage of allowing intercallability
        !           583:      between GNU CC-compiled files and files compiled with other
        !           584:      compilers.
        !           585: 
        !           586:      The precise convention for returning structures in memory depends
        !           587:      on the target configuration macros.
        !           588: 
        !           589:      Short structures and unions are those whose size and alignment
        !           590:      match that of some integer type.
        !           591: 
        !           592: `-freg-struct-return'
        !           593:      Use the convention that `struct' and `union' values are returned
        !           594:      in registers when possible.  This is more efficient for small
        !           595:      structures than `-fpcc-struct-return'.
        !           596: 
        !           597:      If you specify neither `-fpcc-struct-return' nor its contrary
        !           598:      `-freg-struct-return', GNU CC defaults to whichever convention is
        !           599:      standard for the target.  If there is no standard convention, GNU
        !           600:      CC defaults to `-fpcc-struct-return', except on targets where GNU
        !           601:      CC is the principal compiler.  In those cases, we can choose the
        !           602:      standard, and we chose the more efficient register return
        !           603:      alternative.
        !           604: 
        !           605: `-fshort-enums'
        !           606:      Allocate to an `enum' type only as many bytes as it needs for the
        !           607:      declared range of possible values.  Specifically, the `enum' type
        !           608:      will be equivalent to the smallest integer type which has enough
        !           609:      room.
        !           610: 
        !           611: `-fshort-double'
        !           612:      Use the same size for `double' as for `float'.
        !           613: 
        !           614: `-fshared-data'
        !           615:      Requests that the data and non-`const' variables of this
        !           616:      compilation be shared data rather than private data.  The
        !           617:      distinction makes sense only on certain operating systems, where
        !           618:      shared data is shared between processes running the same program,
        !           619:      while private data exists in one copy per process.
        !           620: 
        !           621: `-fno-common'
        !           622:      Allocate even uninitialized global variables in the bss section of
        !           623:      the object file, rather than generating them as common blocks.
        !           624:      This has the effect that if the same variable is declared (without
        !           625:      `extern') in two different compilations, you will get an error
        !           626:      when you link them.  The only reason this might be useful is if
        !           627:      you wish to verify that the program will work on other systems
        !           628:      which always work this way.
        !           629: 
        !           630: `-fno-ident'
        !           631:      Ignore the `#ident' directive.
        !           632: 
        !           633: `-fno-gnu-linker'
        !           634:      Do not output global initializations (such as C++ constructors and
        !           635:      destructors) in the form used by the GNU linker (on systems where
        !           636:      the GNU linker is the standard method of handling them).  Use this
        !           637:      option when you want to use a non-GNU linker, which also requires
        !           638:      using the `collect2' program to make sure the system linker
        !           639:      includes constructors and destructors.  (`collect2' is included in
        !           640:      the GNU CC distribution.)  For systems which *must* use
        !           641:      `collect2', the compiler driver `gcc' is configured to do this
        !           642:      automatically.
        !           643: 
        !           644: `-finhibit-size-directive'
        !           645:      Don't output a `.size' assembler directive, or anything else that
        !           646:      would cause trouble if the function is split in the middle, and the
        !           647:      two halves are placed at locations far apart in memory.  This
        !           648:      option is used when compiling `crtstuff.c'; you should not need to
        !           649:      use it for anything else.
        !           650: 
        !           651: `-fverbose-asm'
        !           652:      Put extra commentary information in the generated assembly code to
        !           653:      make it more readable.  This option is generally only of use to
        !           654:      those who actually need to read the generated assembly code
        !           655:      (perhaps while debugging the compiler itself).
        !           656: 
        !           657: `-fvolatile'
        !           658:      Consider all memory references through pointers to be volatile.
        !           659: 
        !           660: `-fvolatile-global'
        !           661:      Consider all memory references to extern and global data items to
        !           662:      be volatile.
        !           663: 
        !           664: `-fpic'
        !           665:      Generate position-independent code (PIC) suitable for use in a
        !           666:      shared library, if supported for the target machine.  Such code
        !           667:      accesses all constant addresses through a global offset table
        !           668:      (GOT).  If the GOT size for the linked executable exceeds a
        !           669:      machine-specific maximum size, you get an error message from the
        !           670:      linker indicating that `-fpic' does not work; in that case,
        !           671:      recompile with `-fPIC' instead.  (These maximums are 16k on the
        !           672:      m88k, 8k on the Sparc, and 32k on the m68k and RS/6000.  The 386
        !           673:      has no such limit.)
        !           674: 
        !           675:      Position-independent code requires special support, and therefore
        !           676:      works only on certain machines.  For the 386, GNU CC supports PIC
        !           677:      for System V but not for the Sun 386i.  Code generated for the IBM
        !           678:      RS/6000 is always position-independent.
        !           679: 
        !           680:      The GNU assembler does not fully support PIC.  Currently, you must
        !           681:      use some other assembler in order for PIC to work.  We would
        !           682:      welcome volunteers to upgrade GAS to handle this; the first part
        !           683:      of the job is to figure out what the assembler must do differently.
        !           684: 
        !           685: `-fPIC'
        !           686:      If supported for the target machine, emit position-independent
        !           687:      code, suitable for dynamic linking and avoiding any limit on the
        !           688:      size of the global offset table.  This option makes a difference
        !           689:      on the m68k, m88k and the Sparc.
        !           690: 
        !           691:      Position-independent code requires special support, and therefore
        !           692:      works only on certain machines.
        !           693: 
        !           694: `-ffixed-REG'
        !           695:      Treat the register named REG as a fixed register; generated code
        !           696:      should never refer to it (except perhaps as a stack pointer, frame
        !           697:      pointer or in some other fixed role).
        !           698: 
        !           699:      REG must be the name of a register.  The register names accepted
        !           700:      are machine-specific and are defined in the `REGISTER_NAMES' macro
        !           701:      in the machine description macro file.
        !           702: 
        !           703:      This flag does not have a negative form, because it specifies a
        !           704:      three-way choice.
        !           705: 
        !           706: `-fcall-used-REG'
        !           707:      Treat the register named REG as an allocatable register that is
        !           708:      clobbered by function calls.  It may be allocated for temporaries
        !           709:      or variables that do not live across a call.  Functions compiled
        !           710:      this way will not save and restore the register REG.
        !           711: 
        !           712:      Use of this flag for a register that has a fixed pervasive role in
        !           713:      the machine's execution model, such as the stack pointer or frame
        !           714:      pointer, will produce disastrous results.
        !           715: 
        !           716:      This flag does not have a negative form, because it specifies a
        !           717:      three-way choice.
        !           718: 
        !           719: `-fcall-saved-REG'
        !           720:      Treat the register named REG as an allocatable register saved by
        !           721:      functions.  It may be allocated even for temporaries or variables
        !           722:      that live across a call.  Functions compiled this way will save
        !           723:      and restore the register REG if they use it.
        !           724: 
        !           725:      Use of this flag for a register that has a fixed pervasive role in
        !           726:      the machine's execution model, such as the stack pointer or frame
        !           727:      pointer, will produce disastrous results.
        !           728: 
        !           729:      A different sort of disaster will result from the use of this flag
        !           730:      for a register in which function values may be returned.
        !           731: 
        !           732:      This flag does not have a negative form, because it specifies a
        !           733:      three-way choice.
        !           734: 
        !           735: `+e0'
        !           736: `+e1'
        !           737:      Control whether virtual function definitions in classes are used to
        !           738:      generate code, or only to define interfaces for their callers.
        !           739:      (C++ only).
        !           740: 
        !           741:      These options are provided for compatibility with `cfront' 1.x
        !           742:      usage; the recommended alternative GNU C++ usage is in flux.
        !           743:      *Note Declarations and Definitions in One Header: C++ Interface.
        !           744: 
        !           745:      With `+e0', virtual function definitions in classes are declared
        !           746:      `extern'; the declaration is used only as an interface
        !           747:      specification, not to generate code for the virtual functions (in
        !           748:      this compilation).
        !           749: 
        !           750:      With `+e1', G++ actually generates the code implementing virtual
        !           751:      functions defined in the code, and makes them publicly visible.
        !           752: 
        !           753: 
        !           754: File: gcc.info,  Node: Environment Variables,  Next: Running Protoize,  Prev: Code Gen Options,  Up: Invoking GCC
        !           755: 
        !           756: Environment Variables Affecting GNU CC
        !           757: ======================================
        !           758: 
        !           759:    This section describes several environment variables that affect how
        !           760: GNU CC operates.  They work by specifying directories or prefixes to use
        !           761: when searching for various kinds of files.
        !           762: 
        !           763:    Note that you can also specify places to search using options such as
        !           764: `-B', `-I' and `-L' (*note Directory Options::.).  These take
        !           765: precedence over places specified using environment variables, which in
        !           766: turn take precedence over those specified by the configuration of GNU
        !           767: CC.  *Note Driver::.
        !           768: 
        !           769: `TMPDIR'
        !           770:      If `TMPDIR' is set, it specifies the directory to use for temporary
        !           771:      files.  GNU CC uses temporary files to hold the output of one
        !           772:      stage of compilation which is to be used as input to the next
        !           773:      stage: for example, the output of the preprocessor, which is the
        !           774:      input to the compiler proper.
        !           775: 
        !           776: `GCC_EXEC_PREFIX'
        !           777:      If `GCC_EXEC_PREFIX' is set, it specifies a prefix to use in the
        !           778:      names of the subprograms executed by the compiler.  No slash is
        !           779:      added when this prefix is combined with the name of a subprogram,
        !           780:      but you can specify a prefix that ends with a slash if you wish.
        !           781: 
        !           782:      If GNU CC cannot find the subprogram using the specified prefix, it
        !           783:      tries looking in the usual places for the subprogram.
        !           784: 
        !           785:      Other prefixes specified with `-B' take precedence over this
        !           786:      prefix.
        !           787: 
        !           788:      This prefix is also used for finding files such as `crt0.o' that
        !           789:      are used for linking.
        !           790: 
        !           791:      In addition, the prefix is used in an unusual way in finding the
        !           792:      directories to search for header files.  For each of the standard
        !           793:      directories whose name normally begins with
        !           794:      `/usr/local/lib/gcc-lib' (more precisely, with the value of
        !           795:      `GCC_INCLUDE_DIR'), GNU CC tries replacing that beginning with the
        !           796:      specified prefix to produce an alternate directory name.  Thus,
        !           797:      with `-Bfoo/', GNU CC will search `foo/bar' where it would
        !           798:      normally search `/usr/local/lib/bar'.  These alternate directories
        !           799:      are searched first; the standard directories come next.
        !           800: 
        !           801: `COMPILER_PATH'
        !           802:      The value of `COMPILER_PATH' is a colon-separated list of
        !           803:      directories, much like `PATH'.  GNU CC tries the directories thus
        !           804:      specified when searching for subprograms, if it can't find the
        !           805:      subprograms using `GCC_EXEC_PREFIX'.
        !           806: 
        !           807: `LIBRARY_PATH'
        !           808:      The value of `LIBRARY_PATH' is a colon-separated list of
        !           809:      directories, much like `PATH'.  GNU CC tries the directories thus
        !           810:      specified when searching for special linker files, if it can't
        !           811:      find them using `GCC_EXEC_PREFIX'.  Linking using GNU CC also uses
        !           812:      these directories when searching for ordinary libraries for the
        !           813:      `-l' option (but directories specified with `-L' come first).
        !           814: 
        !           815: `C_INCLUDE_PATH'
        !           816: `CPLUS_INCLUDE_PATH'
        !           817: `OBJC_INCLUDE_PATH'
        !           818:      These environment variables pertain to particular languages.  Each
        !           819:      variable's value is a colon-separated list of directories, much
        !           820:      like `PATH'.  When GNU CC searches for header files, it tries the
        !           821:      directories listed in the variable for the language you are using,
        !           822:      after the directories specified with `-I' but before the standard
        !           823:      header file directories.
        !           824: 
        !           825: `DEPENDENCIES_OUTPUT'
        !           826:      If this variable is set, its value specifies how to output
        !           827:      dependencies for Make based on the header files processed by the
        !           828:      compiler.  This output looks much like the output from the `-M'
        !           829:      option (*note Preprocessor Options::.), but it goes to a separate
        !           830:      file, and is in addition to the usual results of compilation.
        !           831: 
        !           832:      The value of `DEPENDENCIES_OUTPUT' can be just a file name, in
        !           833:      which case the Make rules are written to that file, guessing the
        !           834:      target name from the source file name.  Or the value can have the
        !           835:      form `FILE TARGET', in which case the rules are written to file
        !           836:      FILE using TARGET as the target name.
        !           837: 
        !           838: 
        !           839: File: gcc.info,  Node: Running Protoize,  Prev: Environment Variables,  Up: Invoking GCC
        !           840: 
        !           841: Running Protoize
        !           842: ================
        !           843: 
        !           844:    The program `protoize' is an optional part of GNU C.  You can use it
        !           845: to add prototypes to a program, thus converting the program to ANSI C
        !           846: in one respect.  The companion program `unprotoize' does the reverse:
        !           847: it removes argument types from any prototypes that are found.
        !           848: 
        !           849:    When you run these programs, you must specify a set of source files
        !           850: as command line arguments.  The conversion programs start out by
        !           851: compiling these files to see what functions they define.  The
        !           852: information gathered about a file FOO is saved in a file named `FOO.X'.
        !           853: 
        !           854:    After scanning comes actual conversion.  The specified files are all
        !           855: eligible to be converted; any files they include (whether sources or
        !           856: just headers) are eligible as well.
        !           857: 
        !           858:    But not all the eligible files are converted.  By default,
        !           859: `protoize' and `unprotoize' convert only source and header files in the
        !           860: current directory.  You can specify additional directories whose files
        !           861: should be converted with the `-d DIRECTORY' option.  You can also
        !           862: specify particular files to exclude with the `-x FILE' option.  A file
        !           863: is converted if it is eligible, its directory name matches one of the
        !           864: specified directory names, and its name within the directory has not
        !           865: been excluded.
        !           866: 
        !           867:    Basic conversion with `protoize' consists of rewriting most function
        !           868: definitions and function declarations to specify the types of the
        !           869: arguments.  The only ones not rewritten are those for varargs functions.
        !           870: 
        !           871:    `protoize' optionally inserts prototype declarations at the
        !           872: beginning of the source file, to make them available for any calls that
        !           873: precede the function's definition.  Or it can insert prototype
        !           874: declarations with block scope in the blocks where undeclared functions
        !           875: are called.
        !           876: 
        !           877:    Basic conversion with `unprotoize' consists of rewriting most
        !           878: function declarations to remove any argument types, and rewriting
        !           879: function definitions to the old-style pre-ANSI form.
        !           880: 
        !           881:    Both conversion programs print a warning for any function
        !           882: declaration or definition that they can't convert.  You can suppress
        !           883: these warnings with `-q'.
        !           884: 
        !           885:    The output from `protoize' or `unprotoize' replaces the original
        !           886: source file.  The original file is renamed to a name ending with
        !           887: `.save'.  If the `.save' file already exists, then the source file is
        !           888: simply discarded.
        !           889: 
        !           890:    `protoize' and `unprotoize' both depend on GNU CC itself to scan the
        !           891: program and collect information about the functions it uses.  So
        !           892: neither of these programs will work until GNU CC is installed.
        !           893: 
        !           894:    Here is a table of the options you can use with `protoize' and
        !           895: `unprotoize'.  Each option works with both programs unless otherwise
        !           896: stated.
        !           897: 
        !           898: `-B DIRECTORY'
        !           899:      Look for the file `SYSCALLS.c.X' in DIRECTORY, instead of the
        !           900:      usual directory (normally `/usr/local/lib').  This file contains
        !           901:      prototype information about standard system functions.  This option
        !           902:      applies only to `protoize'.
        !           903: 
        !           904: `-c COMPILATION-OPTIONS'
        !           905:      Use  COMPILATION-OPTIONS as the options when running `gcc' to
        !           906:      produce the `.X' files.  The special option `-aux-info' is always
        !           907:      passed in addition, to tell `gcc' to write a `.X' file.
        !           908: 
        !           909:      Note that the compilation options must be given as a single
        !           910:      argument to `protoize' or `unprotoize'.  If you want to specify
        !           911:      several `gcc' options, you must quote the entire set of
        !           912:      compilation options to make them a single word in the shell.
        !           913: 
        !           914:      There are certain `gcc' arguments that you cannot use, because they
        !           915:      would produce the wrong kind of output.  These include `-g', `-O',
        !           916:      `-c', `-S', and `-o' If you include these in the
        !           917:      COMPILATION-OPTIONS, they are ignored.
        !           918: 
        !           919: `-C'
        !           920:      Rename files to end in `.C' instead of `.c'.  This is convenient
        !           921:      if you are converting a C program to C++.  This option applies
        !           922:      only to `protoize'.
        !           923: 
        !           924: `-g'
        !           925:      Add explicit global declarations.  This means inserting explicit
        !           926:      declarations at the beginning of each source file for each function
        !           927:      that is called in the file and was not declared.  These
        !           928:      declarations precede the first function definition that contains a
        !           929:      call to an undeclared function.  This option applies only to
        !           930:      `protoize'.
        !           931: 
        !           932: `-i STRING'
        !           933:      Indent old-style parameter declarations with the string STRING.
        !           934:      This option applies only to `protoize'.
        !           935: 
        !           936:      `unprotoize' converts prototyped function definitions to old-style
        !           937:      function definitions, where the arguments are declared between the
        !           938:      argument list and the initial `{'.  By default, `unprotoize' uses
        !           939:      five spaces as the indentation.  If you want to indent with just
        !           940:      one space instead, use `-i " "'.
        !           941: 
        !           942: `-k'
        !           943:      Keep the `.X' files.  Normally, they are deleted after conversion
        !           944:      is finished.
        !           945: 
        !           946: `-l'
        !           947:      Add explicit local declarations.  `protoize' with `-l' inserts a
        !           948:      prototype declaration for each function in each block which calls
        !           949:      the function without any declaration.  This option applies only to
        !           950:      `protoize'.
        !           951: 
        !           952: `-n'
        !           953:      Make no real changes.  This mode just prints information about the
        !           954:      conversions that would have been done without `-n'.
        !           955: 
        !           956: `-N'
        !           957:      Make no `.save' files.  The original files are simply deleted.
        !           958:      Use this option with caution.
        !           959: 
        !           960: `-p PROGRAM'
        !           961:      Use the program PROGRAM as the compiler.  Normally, the name `gcc'
        !           962:      is used.
        !           963: 
        !           964: `-q'
        !           965:      Work quietly.  Most warnings are suppressed.
        !           966: 
        !           967: `-v'
        !           968:      Print the version number, just like `-v' for `gcc'.
        !           969: 
        !           970:    If you need special compiler options to compile one of your program's
        !           971: source files, then you should generate that file's `.X' file specially,
        !           972: by running `gcc' on that source file with the appropriate options and
        !           973: the option `-aux-info'.  Then run `protoize' on the entire set of
        !           974: files.  `protoize' will use the existing `.X' file because it is newer
        !           975: than the source file.  For example:
        !           976: 
        !           977:      gcc -Dfoo=bar file1.c -aux-info
        !           978:      protoize *.c
        !           979: 
        !           980: You need to include the special files along with the rest in the
        !           981: `protoize' command, even though their `.X' files already exist, because
        !           982: otherwise they won't get converted.
        !           983: 
        !           984:    *Note Protoize Caveats::, for more information on how to use
        !           985: `protoize' successfully.
        !           986: 

unix.superglobalmegacorp.com

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