Annotation of gcc/gcc.info-4, revision 1.1.1.6

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

unix.superglobalmegacorp.com

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