Annotation of GNUtools/cc/gcc.info-3, 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: Optimize Options,  Next: Preprocessor Options,  Prev: Debugging Options,  Up: Invoking GCC
        !            32: 
        !            33: Options That Control Optimization
        !            34: =================================
        !            35: 
        !            36:    These options control various sorts of optimizations:
        !            37: 
        !            38: `-O'
        !            39: `-O1'
        !            40:      Optimize.  Optimizing compilation takes somewhat more time, and a
        !            41:      lot more memory for a large function.
        !            42: 
        !            43:      Without `-O', the compiler's goal is to reduce the cost of
        !            44:      compilation and to make debugging produce the expected results.
        !            45:      Statements are independent: if you stop the program with a
        !            46:      breakpoint between statements, you can then assign a new value to
        !            47:      any variable or change the program counter to any other statement
        !            48:      in the function and get exactly the results you would expect from
        !            49:      the source code.
        !            50: 
        !            51:      Without `-O', only variables declared `register' are allocated in
        !            52:      registers.  The resulting compiled code is a little worse than
        !            53:      produced by PCC without `-O'.
        !            54: 
        !            55:      With `-O', the compiler tries to reduce code size and execution
        !            56:      time.
        !            57: 
        !            58:      When `-O' is specified, the two options `-fthread-jumps' and
        !            59:      `-fdelayed-branch' are turned on.  On some machines other flags may
        !            60:      also be turned on.
        !            61: 
        !            62: `-O2'
        !            63:      Optimize even more.  Nearly all supported optimizations that do not
        !            64:      involve a space-speed tradeoff are performed.  As compared to `-O',
        !            65:      this option increases both compilation time and the performance of
        !            66:      the generated code.
        !            67: 
        !            68:      `-O2' turns on all optional optimizations except for loop unrolling
        !            69:      and frame pointer elimination.
        !            70: 
        !            71: `-O0'
        !            72:      Do not optimize.
        !            73: 
        !            74:      If you use multiple `-O' options, with or without level numbers,
        !            75:      the last such option is the one that is effective.
        !            76: 
        !            77:    Options of the form `-fFLAG' specify machine-independent flags.
        !            78: Most flags have both positive and negative forms; the negative form of
        !            79: `-ffoo' would be `-fno-foo'.  In the table below, only one of the forms
        !            80: is listed--the one which is not the default.  You can figure out the
        !            81: other form by either removing `no-' or adding it.
        !            82: 
        !            83: `-ffloat-store'
        !            84:      Do not store floating point variables in registers, and inhibit
        !            85:      other options that might change whether a floating point value is
        !            86:      taken from a register or memory.
        !            87: 
        !            88:      This option prevents undesirable excess precision on machines such
        !            89:      as the 68000 where the floating registers (of the 68881) keep more
        !            90:      precision than a `double' is supposed to have.  For most programs,
        !            91:      the excess precision does only good, but a few programs rely on the
        !            92:      precise definition of IEEE floating point.  Use `-ffloat-store' for
        !            93:      such programs.
        !            94: 
        !            95: `-fno-default-inline'
        !            96:      Do not make member functions inline by default merely because they
        !            97:      are defined inside the class scope (C++ only).  Otherwise, when
        !            98:      you specify `-O', member functions defined inside class scope are
        !            99:      compiled inline by default; i.e., you don't need to add `inline'
        !           100:      in front of the member function name.
        !           101: 
        !           102: `-fno-defer-pop'
        !           103:      Always pop the arguments to each function call as soon as that
        !           104:      function returns.  For machines which must pop arguments after a
        !           105:      function call, the compiler normally lets arguments accumulate on
        !           106:      the stack for several function calls and pops them all at once.
        !           107: 
        !           108: `-fforce-mem'
        !           109:      Force memory operands to be copied into registers before doing
        !           110:      arithmetic on them.  This may produce better code by making all
        !           111:      memory references potential common subexpressions.  When they are
        !           112:      not common subexpressions, instruction combination should
        !           113:      eliminate the separate register-load.  I am interested in hearing
        !           114:      about the difference this makes.
        !           115: 
        !           116: `-fforce-addr'
        !           117:      Force memory address constants to be copied into registers before
        !           118:      doing arithmetic on them.  This may produce better code just as
        !           119:      `-fforce-mem' may.  I am interested in hearing about the
        !           120:      difference this makes.
        !           121: 
        !           122: `-fomit-frame-pointer'
        !           123:      Don't keep the frame pointer in a register for functions that
        !           124:      don't need one.  This avoids the instructions to save, set up and
        !           125:      restore frame pointers; it also makes an extra register available
        !           126:      in many functions.  *It also makes debugging impossible on some
        !           127:      machines.*
        !           128: 
        !           129:      On some machines, such as the Vax, this flag has no effect, because
        !           130:      the standard calling sequence automatically handles the frame
        !           131:      pointer and nothing is saved by pretending it doesn't exist.  The
        !           132:      machine-description macro `FRAME_POINTER_REQUIRED' controls
        !           133:      whether a target machine supports this flag.  *Note Registers::.
        !           134: 
        !           135: `-fno-inline'
        !           136:      Don't pay attention to the `inline' keyword.  Normally this option
        !           137:      is used to keep the compiler from expanding any functions inline.
        !           138:      Note that if you are not optimizing, no functions can be expanded
        !           139:      inline.
        !           140: 
        !           141: `-finline-functions'
        !           142:      Integrate all simple functions into their callers.  The compiler
        !           143:      heuristically decides which functions are simple enough to be worth
        !           144:      integrating in this way.
        !           145: 
        !           146:      If all calls to a given function are integrated, and the function
        !           147:      is declared `static', then the function is normally not output as
        !           148:      assembler code in its own right.
        !           149: 
        !           150: `-fkeep-inline-functions'
        !           151:      Even if all calls to a given function are integrated, and the
        !           152:      function is declared `static', nevertheless output a separate
        !           153:      run-time callable version of the function.
        !           154: 
        !           155: `-fno-function-cse'
        !           156:      Do not put function addresses in registers; make each instruction
        !           157:      that calls a constant function contain the function's address
        !           158:      explicitly.
        !           159: 
        !           160:      This option results in less efficient code, but some strange hacks
        !           161:      that alter the assembler output may be confused by the
        !           162:      optimizations performed when this option is not used.
        !           163: 
        !           164: `-ffast-math'
        !           165:      This option allows GCC to violate some ANSI or IEEE rules and/or
        !           166:      specifications in the interest of optimizing code for speed.  For
        !           167:      example, it allows the compiler to assume arguments to the `sqrt'
        !           168:      function are non-negative numbers.
        !           169: 
        !           170:      This option should never be turned on by any `-O' option since it
        !           171:      can result in incorrect output for programs which depend on an
        !           172:      exact implementation of IEEE or ANSI rules/specifications for math
        !           173:      functions.
        !           174: 
        !           175:    The following options control specific optimizations.  The `-O2'
        !           176: option turns on all of these optimizations except `-funroll-loops' and
        !           177: `-funroll-all-loops'.  On most machines, the `-O' option turns on the
        !           178: `-fthread-jumps' and `-fdelayed-branch' options, but specific machines
        !           179: may handle it differently.
        !           180: 
        !           181:    You can use the following flags in the rare cases when "fine-tuning"
        !           182: of optimizations to be performed is desired.
        !           183: 
        !           184: `-fstrength-reduce'
        !           185:      Perform the optimizations of loop strength reduction and
        !           186:      elimination of iteration variables.
        !           187: 
        !           188: `-fthread-jumps'
        !           189:      Perform optimizations where we check to see if a jump branches to a
        !           190:      location where another comparison subsumed by the first is found.
        !           191:      If so, the first branch is redirected to either the destination of
        !           192:      the second branch or a point immediately following it, depending
        !           193:      on whether the condition is known to be true or false.
        !           194: 
        !           195: `-fcse-follow-jumps'
        !           196:      In common subexpression elimination, scan through jump instructions
        !           197:      when the target of the jump is not reached by any other path.  For
        !           198:      example, when CSE encounters an `if' statement with an `else'
        !           199:      clause, CSE will follow the jump when the condition tested is
        !           200:      false.
        !           201: 
        !           202: `-fcse-skip-blocks'
        !           203:      This is similar to `-fcse-follow-jumps', but causes CSE to follow
        !           204:      jumps which conditionally skip over blocks.  When CSE encounters a
        !           205:      simple `if' statement with no else clause, `-fcse-skip-blocks'
        !           206:      causes CSE to follow the jump around the body of the `if'.
        !           207: 
        !           208: `-frerun-cse-after-loop'
        !           209:      Re-run common subexpression elimination after loop optimizations
        !           210:      has been performed.
        !           211: 
        !           212: `-fexpensive-optimizations'
        !           213:      Perform a number of minor optimizations that are relatively
        !           214:      expensive.
        !           215: 
        !           216: `-fdelayed-branch'
        !           217:      If supported for the target machine, attempt to reorder
        !           218:      instructions to exploit instruction slots available after delayed
        !           219:      branch instructions.
        !           220: 
        !           221: `-fschedule-insns'
        !           222:      If supported for the target machine, attempt to reorder
        !           223:      instructions to eliminate execution stalls due to required data
        !           224:      being unavailable.  This helps machines that have slow floating
        !           225:      point or memory load instructions by allowing other instructions
        !           226:      to be issued until the result of the load or floating point
        !           227:      instruction is required.
        !           228: 
        !           229: `-fschedule-insns2'
        !           230:      Similar to `-fschedule-insns', but requests an additional pass of
        !           231:      instruction scheduling after register allocation has been done.
        !           232:      This is especially useful on machines with a relatively small
        !           233:      number of registers and where memory load instructions take more
        !           234:      than one cycle.
        !           235: 
        !           236: `-fcaller-saves'
        !           237:      Enable values to be allocated in registers that will be clobbered
        !           238:      by function calls, by emitting extra instructions to save and
        !           239:      restore the registers around such calls.  Such allocation is done
        !           240:      only when it seems to result in better code than would otherwise
        !           241:      be produced.
        !           242: 
        !           243:      This option is enabled by default on certain machines, usually
        !           244:      those which have no call-preserved registers to use instead.
        !           245: 
        !           246: `-funroll-loops'
        !           247:      Perform the optimization of loop unrolling.  This is only done for
        !           248:      loops whose number of iterations can be determined at compile time
        !           249:      or run time.  `-funroll-loop' implies both `-fstrength-reduce' and
        !           250:      `-frerun-cse-after-loop'.
        !           251: 
        !           252: `-funroll-all-loops'
        !           253:      Perform the optimization of loop unrolling.  This is done for all
        !           254:      loops and usually makes programs run more slowly.
        !           255:      `-funroll-all-loops' implies `-fstrength-reduce' as well as
        !           256:      `-frerun-cse-after-loop'.
        !           257: 
        !           258: `-fno-peephole'
        !           259:      Disable any machine-specific peephole optimizations.
        !           260: 
        !           261: 
        !           262: File: gcc.info,  Node: Preprocessor Options,  Next: Assembler Options,  Prev: Optimize Options,  Up: Invoking GCC
        !           263: 
        !           264: Options Controlling the Preprocessor
        !           265: ====================================
        !           266: 
        !           267:    These options control the C preprocessor, which is run on each C
        !           268: source file before actual compilation.
        !           269: 
        !           270:    If you use the `-E' option, nothing is done except preprocessing.
        !           271: Some of these options make sense only together with `-E' because they
        !           272: cause the preprocessor output to be unsuitable for actual compilation.
        !           273: 
        !           274: `-include FILE'
        !           275:      Process FILE as input before processing the regular input file.
        !           276:      In effect, the contents of FILE are compiled first.  Any `-D' and
        !           277:      `-U' options on the command line are always processed before
        !           278:      `-include FILE', regardless of the order in which they are
        !           279:      written.  All the `-include' and `-imacros' options are processed
        !           280:      in the order in which they are written.
        !           281: 
        !           282: `-imacros FILE'
        !           283:      Process FILE as input, discarding the resulting output, before
        !           284:      processing the regular input file.  Because the output generated
        !           285:      from FILE is discarded, the only effect of `-imacros FILE' is to
        !           286:      make the macros defined in FILE available for use in the main
        !           287:      input.
        !           288: 
        !           289:      Any `-D' and `-U' options on the command line are always processed
        !           290:      before `-imacros FILE', regardless of the order in which they are
        !           291:      written.  All the `-include' and `-imacros' options are processed
        !           292:      in the order in which they are written.
        !           293: 
        !           294: `-idirafter DIR'
        !           295:      Add the directory DIR to the second include path.  The directories
        !           296:      on the second include path are searched when a header file is not
        !           297:      found in any of the directories in the main include path (the one
        !           298:      that `-I' adds to).
        !           299: 
        !           300: `-iprefix PREFIX'
        !           301:      Specify PREFIX as the prefix for subsequent `-iwithprefix' options.
        !           302: 
        !           303: `-iwithprefix DIR'
        !           304:      Add a directory to the second include path.  The directory's name
        !           305:      is made by concatenating PREFIX and DIR, where PREFIX was
        !           306:      specified previously with `-iprefix'.  If you have not specified a
        !           307:      prefix yet, the directory containing the installed passes of the
        !           308:      compiler is used as the default.
        !           309: 
        !           310: `-iwithprefixbefore DIR'
        !           311:      Add a directory to the main include path.  The directory's name is
        !           312:      made by concatenating PREFIX and DIR, as in the case of
        !           313:      `-iwithprefix'.
        !           314: 
        !           315: `-nostdinc'
        !           316:      Do not search the standard system directories for header files.
        !           317:      Only the directories you have specified with `-I' options (and the
        !           318:      current directory, if appropriate) are searched.  *Note Directory
        !           319:      Options::, for information on `-I'.
        !           320: 
        !           321:      By using both `-nostdinc' and `-I-', you can limit the include-file
        !           322:      search path to only those directories you specify explicitly.
        !           323: 
        !           324: `-undef'
        !           325:      Do not predefine any nonstandard macros.  (Including architecture
        !           326:      flags).
        !           327: 
        !           328: `-E'
        !           329:      Run only the C preprocessor.  Preprocess all the C source files
        !           330:      specified and output the results to standard output or to the
        !           331:      specified output file.
        !           332: 
        !           333: `-C'
        !           334:      Tell the preprocessor not to discard comments.  Used with the `-E'
        !           335:      option.
        !           336: 
        !           337: `-P'
        !           338:      Tell the preprocessor not to generate `#line' commands.  Used with
        !           339:      the `-E' option.
        !           340: 
        !           341: `-M'
        !           342:      Tell the preprocessor to output a rule suitable for `make'
        !           343:      describing the dependencies of each object file.  For each source
        !           344:      file, the preprocessor outputs one `make'-rule whose target is the
        !           345:      object file name for that source file and whose dependencies are
        !           346:      all the `#include' header files it uses.  This rule may be a
        !           347:      single line or may be continued with `\'-newline if it is long.
        !           348:      The list of rules is printed on standard output instead of the
        !           349:      preprocessed C program.
        !           350: 
        !           351:      `-M' implies `-E'.
        !           352: 
        !           353:      Another way to specify output of a `make' rule is by setting the
        !           354:      environment variable `DEPENDENCIES_OUTPUT' (*note Environment
        !           355:      Variables::.).
        !           356: 
        !           357: `-MM'
        !           358:      Like `-M' but the output mentions only the user header files
        !           359:      included with `#include "FILE"'.  System header files included
        !           360:      with `#include <FILE>' are omitted.
        !           361: 
        !           362: `-MD'
        !           363:      Like `-M' but the dependency information is written to files with
        !           364:      names made by replacing `.o' with `.d' at the end of the output
        !           365:      file names.  This is in addition to compiling the input files as
        !           366:      specified--`-MD' does not inhibit ordinary compilation the way
        !           367:      `-M' does.
        !           368: 
        !           369:      The Mach utility `md' can be used to merge the `.d' files into a
        !           370:      single dependency file suitable for using with the `make' command.
        !           371: 
        !           372: `-MMD'
        !           373:      Like `-MD' except mention only user header files, not system
        !           374:      header files.
        !           375: 
        !           376: `-H'
        !           377:      Print the name of each header file used, in addition to other
        !           378:      normal activities.
        !           379: 
        !           380: `-AQUESTION(ANSWER)'
        !           381:      Assert the answer ANSWER for QUESTION, in case it is tested with a
        !           382:      preprocessor conditional such as `#if #QUESTION(ANSWER)'.  `-A-'
        !           383:      disables the standard assertions that normally describe the target
        !           384:      machine.
        !           385: 
        !           386: `-DMACRO'
        !           387:      Define macro MACRO with the string `1' as its definition.
        !           388: 
        !           389: `-DMACRO=DEFN'
        !           390:      Define macro MACRO as DEFN.  All instances of `-D' on the command
        !           391:      line are processed before any `-U' options.
        !           392: 
        !           393: `-UMACRO'
        !           394:      Undefine macro MACRO.  `-U' options are evaluated after all `-D'
        !           395:      options, but before any `-include' and `-imacros' options.
        !           396: 
        !           397: `-dM'
        !           398:      Tell the preprocessor to output only a list of the macro
        !           399:      definitions that are in effect at the end of preprocessing.  Used
        !           400:      with the `-E' option.
        !           401: 
        !           402: `-dD'
        !           403:      Tell the preprocessing to pass all macro definitions into the
        !           404:      output, in their proper sequence in the rest of the output.
        !           405: 
        !           406: `-dN'
        !           407:      Like `-dD' except that the macro arguments and contents are
        !           408:      omitted.  Only `#define NAME' is included in the output.
        !           409: 
        !           410: `-trigraphs'
        !           411:      Support ANSI C trigraphs.  You don't want to know about this
        !           412:      brain-damage.  The `-ansi' option also has this effect.
        !           413: 
        !           414: 
        !           415: File: gcc.info,  Node: Assembler Options,  Next: Link Options,  Prev: Preprocessor Options,  Up: Invoking GCC
        !           416: 
        !           417: Passing Options to the Assembler
        !           418: ================================
        !           419: 
        !           420: `-Wa,OPTION'
        !           421:      Pass OPTION as an option to the assembler.  If OPTION contains
        !           422:      commas, it is split into multiple options at the commas.
        !           423: 
        !           424: 
        !           425: File: gcc.info,  Node: Link Options,  Next: Directory Options,  Prev: Assembler Options,  Up: Invoking GCC
        !           426: 
        !           427: Options for Linking
        !           428: ===================
        !           429: 
        !           430:    These options come into play when the compiler links object files
        !           431: into an executable output file.  They are meaningless if the compiler is
        !           432: not doing a link step.
        !           433: 
        !           434: `OBJECT-FILE-NAME'
        !           435:      A file name that does not end in a special recognized suffix is
        !           436:      considered to name an object file or library.  (Object files are
        !           437:      distinguished from libraries by the linker according to the file
        !           438:      contents.)  If linking is done, these object files are used as
        !           439:      input to the linker.
        !           440: 
        !           441: `-c'
        !           442: `-S'
        !           443: `-E'
        !           444:      If any of these options is used, then the linker is not run, and
        !           445:      object file names should not be used as arguments.  *Note Overall
        !           446:      Options::.
        !           447: 
        !           448: `-lLIBRARY'
        !           449:      Search the library named LIBRARY when linking.
        !           450: 
        !           451:      It makes a difference where in the command you write this option;
        !           452:      the linker searches processes libraries and object files in the
        !           453:      order they are specified.  Thus, `foo.o -lz bar.o' searches
        !           454:      library `z' after file `foo.o' but before `bar.o'.  If `bar.o'
        !           455:      refers to functions in `z', those functions may not be loaded.
        !           456: 
        !           457:      The linker searches a standard list of directories for the library,
        !           458:      which is actually a file named `libLIBRARY.a'.  The linker then
        !           459:      uses this file as if it had been specified precisely by name.
        !           460: 
        !           461:      The directories searched include several standard system
        !           462:      directories plus any that you specify with `-L'.
        !           463: 
        !           464:      Normally the files found this way are library files--archive files
        !           465:      whose members are object files.  The linker handles an archive
        !           466:      file by scanning through it for members which define symbols that
        !           467:      have so far been referenced but not defined.  But if the file that
        !           468:      is found is an ordinary object file, it is linked in the usual
        !           469:      fashion.  The only difference between using an `-l' option and
        !           470:      specifying a file name is that `-l' surrounds LIBRARY with `lib'
        !           471:      and `.a' and searches several directories.
        !           472: 
        !           473: `-lobjc'
        !           474:      You need this special case of the `-l' option in order to link an
        !           475:      Objective C program.
        !           476: 
        !           477: `-nostartfiles'
        !           478:      Do not use the standard system startup files when linking.  The
        !           479:      standard libraries are used normally.
        !           480: 
        !           481: `-nostdlib'
        !           482:      Don't use the standard system libraries and startup files when
        !           483:      linking.  Only the files you specify will be passed to the linker.
        !           484: 
        !           485: `-static'
        !           486:      On systems that support dynamic linking, this prevents linking
        !           487:      with the shared libraries.  On other systems, this option has no
        !           488:      effect.
        !           489: 
        !           490: `-shared'
        !           491:      Produce a shared object which can then be linked with other
        !           492:      objects to form an executable.  Only a few systems support this
        !           493:      option.
        !           494: 
        !           495: `-symbolic'
        !           496:      Bind references to global symbols when building a shared object.
        !           497:      Warn about any unresolved references (unless overridden by the
        !           498:      link editor option `-Xlinker -z -Xlinker defs').  Only a few
        !           499:      systems support this option.
        !           500: 
        !           501: `-Xlinker OPTION'
        !           502:      Pass OPTION as an option to the linker.  You can use this to
        !           503:      supply system-specific linker options which GNU CC does not know
        !           504:      how to recognize.
        !           505: 
        !           506:      If you want to pass an option that takes an argument, you must use
        !           507:      `-Xlinker' twice, once for the option and once for the argument.
        !           508:      For example, to pass `-assert definitions', you must write
        !           509:      `-Xlinker -assert -Xlinker definitions'.  It does not work to write
        !           510:      `-Xlinker "-assert definitions"', because this passes the entire
        !           511:      string as a single argument, which is not what the linker expects.
        !           512: 
        !           513: `-Wl,OPTION'
        !           514:      Pass OPTION as an option to the linker.  If OPTION contains
        !           515:      commas, it is split into multiple options at the commas.
        !           516: 
        !           517: `-u SYMBOL'
        !           518:      Pretend the symbol SYMBOL is undefined, to force linking of
        !           519:      library modules to define it.  You can use `-u' multiple times with
        !           520:      different symbols to force loading of additional library modules.
        !           521: 
        !           522: 
        !           523: File: gcc.info,  Node: Directory Options,  Next: Target Options,  Prev: Link Options,  Up: Invoking GCC
        !           524: 
        !           525: Options for Directory Search
        !           526: ============================
        !           527: 
        !           528:    These options specify directories to search for header files, for
        !           529: libraries and for parts of the compiler:
        !           530: 
        !           531: `-IDIR'
        !           532:      Append directory DIR to the list of directories searched for
        !           533:      include files.
        !           534: 
        !           535: `-I-'
        !           536:      Any directories you specify with `-I' options before the `-I-'
        !           537:      option are searched only for the case of `#include "FILE"'; they
        !           538:      are not searched for `#include <FILE>'.
        !           539: 
        !           540:      If additional directories are specified with `-I' options after
        !           541:      the `-I-', these directories are searched for all `#include'
        !           542:      directives.  (Ordinarily *all* `-I' directories are used this way.)
        !           543: 
        !           544:      In addition, the `-I-' option inhibits the use of the current
        !           545:      directory (where the current input file came from) as the first
        !           546:      search directory for `#include "FILE"'.  There is no way to
        !           547:      override this effect of `-I-'.  With `-I.' you can specify
        !           548:      searching the directory which was current when the compiler was
        !           549:      invoked.  That is not exactly the same as what the preprocessor
        !           550:      does by default, but it is often satisfactory.
        !           551: 
        !           552:      `-I-' does not inhibit the use of the standard system directories
        !           553:      for header files.  Thus, `-I-' and `-nostdinc' are independent.
        !           554: 
        !           555: `-LDIR'
        !           556:      Add directory DIR to the list of directories to be searched for
        !           557:      `-l'.
        !           558: 
        !           559: `-BPREFIX'
        !           560:      This option specifies where to find the executables, libraries and
        !           561:      data files of the compiler itself.
        !           562: 
        !           563:      The compiler driver program runs one or more of the subprograms
        !           564:      `cpp', `cc1', `as' and `ld'.  It tries PREFIX as a prefix for each
        !           565:      program it tries to run, both with and without `MACHINE/VERSION/'
        !           566:      (*note Target Options::.).
        !           567: 
        !           568:      For each subprogram to be run, the compiler driver first tries the
        !           569:      `-B' prefix, if any.  If that name is not found, or if `-B' was
        !           570:      not specified, the driver tries two standard prefixes, which are
        !           571:      `/usr/lib/gcc/' and `/usr/local/lib/gcc-lib/'.  If neither of
        !           572:      those results in a file name that is found, the unmodified program
        !           573:      name is searched for using the directories specified in your
        !           574:      `PATH' environment variable.
        !           575: 
        !           576:      `-B' prefixes that effectively specify directory names also apply
        !           577:      to libraries in the linker, because the compiler translates these
        !           578:      options into `-L' options for the linker.
        !           579: 
        !           580:      The run-time support file `libgcc.a' can also be searched for using
        !           581:      the `-B' prefix, if needed.  If it is not found there, the two
        !           582:      standard prefixes above are tried, and that is all.  The file is
        !           583:      left out of the link if it is not found by those means.
        !           584: 
        !           585:      Another way to specify a prefix much like the `-B' prefix is to use
        !           586:      the environment variable `GCC_EXEC_PREFIX'.  *Note Environment
        !           587:      Variables::.
        !           588: 
        !           589: 
        !           590: File: gcc.info,  Node: Target Options,  Next: Submodel Options,  Prev: Directory Options,  Up: Invoking GCC
        !           591: 
        !           592: Specifying Target Machine and Compiler Version
        !           593: ==============================================
        !           594: 
        !           595:    By default, GNU CC compiles code for the same type of machine that
        !           596: you are using.  However, it can also be installed as a cross-compiler,
        !           597: to compile for some other type of machine.  In fact, several different
        !           598: configurations of GNU CC, for different target machines, can be
        !           599: installed side by side.  Then you specify which one to use with the
        !           600: `-b' option.
        !           601: 
        !           602:    In addition, older and newer versions of GNU CC can be installed side
        !           603: by side.  One of them (probably the newest) will be the default, but
        !           604: you may sometimes wish to use another.
        !           605: 
        !           606: `-b MACHINE'
        !           607:      The argument MACHINE specifies the target machine for compilation.
        !           608:      This is useful when you have installed GNU CC as a cross-compiler.
        !           609: 
        !           610:      The value to use for MACHINE is the same as was specified as the
        !           611:      machine type when configuring GNU CC as a cross-compiler.  For
        !           612:      example, if a cross-compiler was configured with `configure
        !           613:      i386v', meaning to compile for an 80386 running System V, then you
        !           614:      would specify `-b i386v' to run that cross compiler.
        !           615: 
        !           616:      When you do not specify `-b', it normally means to compile for the
        !           617:      same type of machine that you are using.
        !           618: 
        !           619: `-V VERSION'
        !           620:      The argument VERSION specifies which version of GNU CC to run.
        !           621:      This is useful when multiple versions are installed.  For example,
        !           622:      VERSION might be `2.0', meaning to run GNU CC version 2.0.
        !           623: 
        !           624:      The default version, when you do not specify `-V', is controlled
        !           625:      by the way GNU CC is installed.  Normally, it will be a version
        !           626:      that is recommended for general use.
        !           627: 
        !           628:    The `-b' and `-V' options actually work by controlling part of the
        !           629: file name used for the executable files and libraries used for
        !           630: compilation.  A given version of GNU CC, for a given target machine, is
        !           631: normally kept in the directory `/usr/local/lib/gcc-lib/MACHINE/VERSION'.
        !           632: 
        !           633:    Thus, sites can customize the effect of `-b' or `-V' either by
        !           634: changing the names of these directories or adding alternate names (or
        !           635: symbolic links).  If in directory `/usr/local/lib/gcc-lib/' the file
        !           636: `80386' is a link to the file `i386v', then `-b 80386' becomes an alias
        !           637: for `-b i386v'.
        !           638: 
        !           639:    In one respect, the `-b' or `-V' do not completely change to a
        !           640: different compiler: the top-level driver program `gcc' that you
        !           641: originally invoked continues to run and invoke the other executables
        !           642: (preprocessor, compiler per se, assembler and linker) that do the real
        !           643: work.  However, since no real work is done in the driver program, it
        !           644: usually does not matter that the driver program in use is not the one
        !           645: for the specified target and version.
        !           646: 
        !           647:    The only way that the driver program depends on the target machine is
        !           648: in the parsing and handling of special machine-specific options.
        !           649: However, this is controlled by a file which is found, along with the
        !           650: other executables, in the directory for the specified version and
        !           651: target machine.  As a result, a single installed driver program adapts
        !           652: to any specified target machine and compiler version.
        !           653: 
        !           654:    The driver program executable does control one significant thing,
        !           655: however: the default version and target machine.  Therefore, you can
        !           656: install different instances of the driver program, compiled for
        !           657: different targets or versions, under different names.
        !           658: 
        !           659:    For example, if the driver for version 2.0 is installed as `ogcc'
        !           660: and that for version 2.1 is installed as `gcc', then the command `gcc'
        !           661: will use version 2.1 by default, while `ogcc' will use 2.0 by default.
        !           662: However, you can choose either version with either command with the
        !           663: `-V' option.
        !           664: 
        !           665: 
        !           666: File: gcc.info,  Node: Submodel Options,  Next: Code Gen Options,  Prev: Target Options,  Up: Invoking GCC
        !           667: 
        !           668: Hardware Models and Configurations
        !           669: ==================================
        !           670: 
        !           671:    Earlier we discussed the standard option `-b' which chooses among
        !           672: different installed compilers for completely different target machines,
        !           673: such as Vax vs. 68000 vs. 80386.
        !           674: 
        !           675:    In addition, each of these target machine types can have its own
        !           676: special options, starting with `-m', to choose among various hardware
        !           677: models or configurations--for example, 68010 vs 68020, floating
        !           678: coprocessor or none.  A single installed version of the compiler can
        !           679: compile for any model or configuration, according to the options
        !           680: specified.
        !           681: 
        !           682:    Some configurations of the compiler also support additional special
        !           683: options, usually for compatibility with other compilers on the same
        !           684: platform.
        !           685: 
        !           686:    These options are defined by the macro `TARGET_SWITCHES' in the
        !           687: machine description.  The default for the options is also defined by
        !           688: that macro, which enables you to change the defaults.
        !           689: 
        !           690: * Menu:
        !           691: 
        !           692: * M680x0 Options::
        !           693: * VAX Options::
        !           694: * SPARC Options::
        !           695: * Convex Options::
        !           696: * AMD29K Options::
        !           697: * M88K Options::
        !           698: * RS/6000 and PowerPC Options::
        !           699: * RT Options::
        !           700: * MIPS Options::
        !           701: * i386 Options::
        !           702: * HPPA Options::
        !           703: * Intel 960 Options::
        !           704: * DEC Alpha Options::
        !           705: * Clipper Options::
        !           706: * System V Options::
        !           707: 
        !           708: 
        !           709: File: gcc.info,  Node: M680x0 Options,  Next: VAX Options,  Up: Submodel Options
        !           710: 
        !           711: M680x0 Options
        !           712: --------------
        !           713: 
        !           714:    These are the `-m' options defined for the 68000 series.  The default
        !           715: values for these options depends on which style of 68000 was selected
        !           716: when the compiler was configured; the defaults for the most common
        !           717: choices are given below.
        !           718: 
        !           719: `-m68000'
        !           720: `-mc68000'
        !           721:      Generate output for a 68000.  This is the default when the
        !           722:      compiler is configured for 68000-based systems.
        !           723: 
        !           724: `-m68020'
        !           725: `-mc68020'
        !           726:      Generate output for a 68020.  This is the default when the
        !           727:      compiler is configured for 68020-based systems.
        !           728: 
        !           729: `-m68881'
        !           730:      Generate output containing 68881 instructions for floating point.
        !           731:      This is the default for most 68020 systems unless `-nfp' was
        !           732:      specified when the compiler was configured.
        !           733: 
        !           734: `-m68030'
        !           735:      Generate output for a 68030.  This is the default when the
        !           736:      compiler is configured for 68030-based systems.
        !           737: 
        !           738: `-m68040'
        !           739:      Generate output for a 68040.  This is the default when the
        !           740:      compiler is configured for 68040-based systems.
        !           741: 
        !           742:      This option inhibits the use of 68881/68882 instructions that have
        !           743:      to be emulated by software on the 68040.  If your 68040 does not
        !           744:      have code to emulate those instructions, use `-m68040'.
        !           745: 
        !           746: `-m68020-40'
        !           747:      Generate output for a 68040, without using any of the new
        !           748:      instructions.  This results in code which can run relatively
        !           749:      efficiently on either a 68020/68881 or a 68030 or a 68040.  The
        !           750:      generated code does use the 68881 instructions that are emulated
        !           751:      on the 68040.
        !           752: 
        !           753: `-mfpa'
        !           754:      Generate output containing Sun FPA instructions for floating point.
        !           755: 
        !           756: `-msoft-float'
        !           757:      Generate output containing library calls for floating point.
        !           758:      *Warning:* the requisite libraries are not part of GNU CC.
        !           759:      Normally the facilities of the machine's usual C compiler are
        !           760:      used, but this can't be done directly in cross-compilation.  You
        !           761:      must make your own arrangements to provide suitable library
        !           762:      functions for cross-compilation.
        !           763: 
        !           764: `-mshort'
        !           765:      Consider type `int' to be 16 bits wide, like `short int'.
        !           766: 
        !           767: `-mnobitfield'
        !           768:      Do not use the bit-field instructions.  The `-m68000' option
        !           769:      implies `-mnobitfield'.
        !           770: 
        !           771: `-mbitfield'
        !           772:      Do use the bit-field instructions.  The `-m68020' option implies
        !           773:      `-mbitfield'.  This is the default if you use a configuration
        !           774:      designed for a 68020.
        !           775: 
        !           776: `-mrtd'
        !           777:      Use a different function-calling convention, in which functions
        !           778:      that take a fixed number of arguments return with the `rtd'
        !           779:      instruction, which pops their arguments while returning.  This
        !           780:      saves one instruction in the caller since there is no need to pop
        !           781:      the arguments there.
        !           782: 
        !           783:      This calling convention is incompatible with the one normally used
        !           784:      on Unix, so you cannot use it if you need to call libraries
        !           785:      compiled with the Unix compiler.
        !           786: 
        !           787:      Also, you must provide function prototypes for all functions that
        !           788:      take variable numbers of arguments (including `printf'); otherwise
        !           789:      incorrect code will be generated for calls to those functions.
        !           790: 
        !           791:      In addition, seriously incorrect code will result if you call a
        !           792:      function with too many arguments.  (Normally, extra arguments are
        !           793:      harmlessly ignored.)
        !           794: 
        !           795:      The `rtd' instruction is supported by the 68010 and 68020
        !           796:      processors, but not by the 68000.
        !           797: 
        !           798: 
        !           799: File: gcc.info,  Node: VAX Options,  Next: SPARC Options,  Prev: M680x0 Options,  Up: Submodel Options
        !           800: 
        !           801: VAX Options
        !           802: -----------
        !           803: 
        !           804:    These `-m' options are defined for the Vax:
        !           805: 
        !           806: `-munix'
        !           807:      Do not output certain jump instructions (`aobleq' and so on) that
        !           808:      the Unix assembler for the Vax cannot handle across long ranges.
        !           809: 
        !           810: `-mgnu'
        !           811:      Do output those jump instructions, on the assumption that you will
        !           812:      assemble with the GNU assembler.
        !           813: 
        !           814: `-mg'
        !           815:      Output code for g-format floating point numbers instead of
        !           816:      d-format.
        !           817: 
        !           818: 
        !           819: File: gcc.info,  Node: SPARC Options,  Next: Convex Options,  Prev: VAX Options,  Up: Submodel Options
        !           820: 
        !           821: SPARC Options
        !           822: -------------
        !           823: 
        !           824:    These `-m' switches are supported on the SPARC:
        !           825: 
        !           826: `-mfpu'
        !           827: `-mhard-float'
        !           828:      Generate output containing floating point instructions.  This is
        !           829:      the default.
        !           830: 
        !           831: `-mno-fpu'
        !           832: `-msoft-float'
        !           833:      Generate output containing library calls for floating point.
        !           834:      *Warning:* there is no GNU floating-point library for SPARC.
        !           835:      Normally the facilities of the machine's usual C compiler are
        !           836:      used, but this cannot be done directly in cross-compilation.  You
        !           837:      must make your own arrangements to provide suitable library
        !           838:      functions for cross-compilation.
        !           839: 
        !           840:      `-msoft-float' changes the calling convention in the output file;
        !           841:      therefore, it is only useful if you compile *all* of a program with
        !           842:      this option.  In particular, you need to compile `libgcc.a', the
        !           843:      library that comes with GNU CC, with `-msoft-float' in order for
        !           844:      this to work.
        !           845: 
        !           846: `-mno-epilogue'
        !           847: `-mepilogue'
        !           848:      With `-mepilogue' (the default), the compiler always emits code for
        !           849:      function exit at the end of each function.  Any function exit in
        !           850:      the middle of the function (such as a return statement in C) will
        !           851:      generate a jump to the exit code at the end of the function.
        !           852: 
        !           853:      With `-mno-epilogue', the compiler tries to emit exit code inline
        !           854:      at every function exit.
        !           855: 
        !           856: `-mv8'
        !           857: `-msparclite'
        !           858:      These two options select variations on the SPARC architecture.
        !           859: 
        !           860:      By default (unless specifically configured for the Fujitsu
        !           861:      SPARClite), GCC generates code for the v7 variant of the SPARC
        !           862:      architecture.
        !           863: 
        !           864:      `-mv8' will give you SPARC v8 code.  The only difference from v7
        !           865:      code is that the compiler emits the integer multiply and integer
        !           866:      divide instructions which exist in SPARC v8 but not in SPARC v7.
        !           867: 
        !           868:      `-msparclite' will give you SPARClite code.  This adds the integer
        !           869:      multiply, integer divide step and scan (`ffs') instructions which
        !           870:      exist in SPARClite but not in SPARC v7.
        !           871: 
        !           872: 
        !           873: File: gcc.info,  Node: Convex Options,  Next: AMD29K Options,  Prev: SPARC Options,  Up: Submodel Options
        !           874: 
        !           875: Convex Options
        !           876: --------------
        !           877: 
        !           878:    These `-m' options are defined for Convex:
        !           879: 
        !           880: `-mc1'
        !           881:      Generate output for C1.  The code will run on any Convex machine.
        !           882:      The preprocessor symbol `__convex__c1__' is defined.
        !           883: 
        !           884: `-mc2'
        !           885:      Generate output for C2.  Uses instructions not available on C1.
        !           886:      Scheduling and other optimizations are chosen for max performance
        !           887:      on C2.  The preprocessor symbol `__convex_c2__' is defined.
        !           888: 
        !           889: `-mc32'
        !           890:      Generate output for C32xx.  Uses instructions not available on C1.
        !           891:      Scheduling and other optimizations are chosen for max performance
        !           892:      on C32.  The preprocessor symbol `__convex_c32__' is defined.
        !           893: 
        !           894: `-mc34'
        !           895:      Generate output for C34xx.  Uses instructions not available on C1.
        !           896:      Scheduling and other optimizations are chosen for max performance
        !           897:      on C34.  The preprocessor symbol `__convex_c34__' is defined.
        !           898: 
        !           899: `-mc38'
        !           900:      Generate output for C38xx.  Uses instructions not available on C1.
        !           901:      Scheduling and other optimizations are chosen for max performance
        !           902:      on C38.  The preprocessor symbol `__convex_c38__' is defined.
        !           903: 
        !           904: `-margcount'
        !           905:      Generate code which puts an argument count in the word preceding
        !           906:      each argument list.  This is compatible with regular CC, and a few
        !           907:      programs may need the argument count word.  GDB and other
        !           908:      source-level debuggers do not need it; this info is in the symbol
        !           909:      table.
        !           910: 
        !           911: `-mnoargcount'
        !           912:      Omit the argument count word.  This is the default.
        !           913: 
        !           914: `-mvolatile-cache'
        !           915:      Allow volatile references to be cached.  This is the default.
        !           916: 
        !           917: `-mvolatile-nocache'
        !           918:      Volatile references bypass the data cache, going all the way to
        !           919:      memory.  This is only needed for multi-processor code that does
        !           920:      not use standard synchronization instructions.  Making
        !           921:      non-volatile references to volatile locations will not necessarily
        !           922:      work.
        !           923: 
        !           924: `-mlong32'
        !           925:      Type long is 32 bits, the same as type int.  This is the default.
        !           926: 
        !           927: `-mlong64'
        !           928:      Type long is 64 bits, the same as type long long.  This option is
        !           929:      useless, because no library support exists for it.
        !           930: 
        !           931: 
        !           932: File: gcc.info,  Node: AMD29K Options,  Next: M88K Options,  Prev: Convex Options,  Up: Submodel Options
        !           933: 
        !           934: AMD29K Options
        !           935: --------------
        !           936: 
        !           937:    These `-m' options are defined for the AMD Am29000:
        !           938: 
        !           939: `-mdw'
        !           940:      Generate code that assumes the `DW' bit is set, i.e., that byte and
        !           941:      halfword operations are directly supported by the hardware.  This
        !           942:      is the default.
        !           943: 
        !           944: `-mnodw'
        !           945:      Generate code that assumes the `DW' bit is not set.
        !           946: 
        !           947: `-mbw'
        !           948:      Generate code that assumes the system supports byte and halfword
        !           949:      write operations.  This is the default.
        !           950: 
        !           951: `-mnbw'
        !           952:      Generate code that assumes the systems does not support byte and
        !           953:      halfword write operations.  `-mnbw' implies `-mnodw'.
        !           954: 
        !           955: `-msmall'
        !           956:      Use a small memory model that assumes that all function addresses
        !           957:      are either within a single 256 KB segment or at an absolute
        !           958:      address of less than 256k.  This allows the `call' instruction to
        !           959:      be used instead of a `const', `consth', `calli' sequence.
        !           960: 
        !           961: `-mnormal'
        !           962:      Use the normal memory model: Generate `call' instructions only when
        !           963:      calling functions in the same file and `calli' instructions
        !           964:      otherwise.  This works if each file occupies less than 256 KB but
        !           965:      allows the entire executable to be larger than 256 KB.  This is
        !           966:      the default.
        !           967: 
        !           968: `-mlarge'
        !           969:      Always use `calli' instructions.  Specify this option if you expect
        !           970:      a single file to compile into more than 256 KB of code.
        !           971: 
        !           972: `-m29050'
        !           973:      Generate code for the Am29050.
        !           974: 
        !           975: `-m29000'
        !           976:      Generate code for the Am29000.  This is the default.
        !           977: 
        !           978: `-mkernel-registers'
        !           979:      Generate references to registers `gr64-gr95' instead of to
        !           980:      registers `gr96-gr127'.  This option can be used when compiling
        !           981:      kernel code that wants a set of global registers disjoint from
        !           982:      that used by user-mode code.
        !           983: 
        !           984:      Note that when this option is used, register names in `-f' flags
        !           985:      must use the normal, user-mode, names.
        !           986: 
        !           987: `-muser-registers'
        !           988:      Use the normal set of global registers, `gr96-gr127'.  This is the
        !           989:      default.
        !           990: 
        !           991: `-mstack-check'
        !           992:      Insert a call to `__msp_check' after each stack adjustment.  This
        !           993:      is often used for kernel code.
        !           994: 
        !           995: 
        !           996: File: gcc.info,  Node: M88K Options,  Next: RS/6000 and PowerPC Options,  Prev: AMD29K Options,  Up: Submodel Options
        !           997: 
        !           998: M88K Options
        !           999: ------------
        !          1000: 
        !          1001:    These `-m' options are defined for Motorola 88k architectures:
        !          1002: 
        !          1003: `-m88000'
        !          1004:      Generate code that works well on both the m88100 and the m88110.
        !          1005: 
        !          1006: `-m88100'
        !          1007:      Generate code that works best for the m88100, but that also runs
        !          1008:      on the m88110.
        !          1009: 
        !          1010: `-m88110'
        !          1011:      Generate code that works best for the m88110, and may not run on
        !          1012:      the m88100.
        !          1013: 
        !          1014: `-mbig-pic'
        !          1015:      Obsolete option to be removed from the next revision.  Use `-fPIC'.
        !          1016: 
        !          1017: `-midentify-revision'
        !          1018:      Include an `ident' directive in the assembler output recording the
        !          1019:      source file name, compiler name and version, timestamp, and
        !          1020:      compilation flags used.
        !          1021: 
        !          1022: `-mno-underscores'
        !          1023:      In assembler output, emit symbol names without adding an underscore
        !          1024:      character at the beginning of each name.  The default is to use an
        !          1025:      underscore as prefix on each name.
        !          1026: 
        !          1027: `-mocs-debug-info'
        !          1028: `-mno-ocs-debug-info'
        !          1029:      Include (or omit) additional debugging information (about
        !          1030:      registers used in each stack frame) as specified in the 88open
        !          1031:      Object Compatibility Standard, "OCS".  This extra information
        !          1032:      allows debugging of code that has had the frame pointer
        !          1033:      eliminated.  The default for DG/UX, SVr4, and Delta 88 SVr3.2 is
        !          1034:      to include this information; other 88k configurations omit this
        !          1035:      information by default.
        !          1036: 
        !          1037: `-mocs-frame-position'
        !          1038:      When emitting COFF debugging information for automatic variables
        !          1039:      and parameters stored on the stack, use the offset from the
        !          1040:      canonical frame address, which is the stack pointer (register 31)
        !          1041:      on entry to the function.  The DG/UX, SVr4, Delta88 SVr3.2, and
        !          1042:      BCS configurations use `-mocs-frame-position'; other 88k
        !          1043:      configurations have the default `-mno-ocs-frame-position'.
        !          1044: 
        !          1045: `-mno-ocs-frame-position'
        !          1046:      When emitting COFF debugging information for automatic variables
        !          1047:      and parameters stored on the stack, use the offset from the frame
        !          1048:      pointer register (register 30).  When this option is in effect,
        !          1049:      the frame pointer is not eliminated when debugging information is
        !          1050:      selected by the -g switch.
        !          1051: 
        !          1052: `-moptimize-arg-area'
        !          1053: `-mno-optimize-arg-area'
        !          1054:      Control how function arguments are stored in stack frames.
        !          1055:      `-moptimize-arg-area' saves space by optimizing them, but this
        !          1056:      conflicts with the 88open specifications.  The opposite
        !          1057:      alternative, `-mno-optimize-arg-area', agrees with 88open
        !          1058:      standards.  By default GNU CC does not optimize the argument area.
        !          1059: 
        !          1060: `-mshort-data-NUM'
        !          1061:      Generate smaller data references by making them relative to `r0',
        !          1062:      which allows loading a value using a single instruction (rather
        !          1063:      than the usual two).  You control which data references are
        !          1064:      affected by specifying NUM with this option.  For example, if you
        !          1065:      specify `-mshort-data-512', then the data references affected are
        !          1066:      those involving displacements of less than 512 bytes.
        !          1067:      `-mshort-data-NUM' is not effective for NUM greater than 64k.
        !          1068: 
        !          1069: `-mserialize-volatile'
        !          1070: `-mno-serialize-volatile'
        !          1071:      Do, or do not, generate code to guarantee sequential consistency of
        !          1072:      volatile memory references.
        !          1073: 
        !          1074:      GNU CC always guarantees consistency by default.
        !          1075: 
        !          1076:      The order of memory references made by the m88110 processor does
        !          1077:      not always match the order of the instructions requesting those
        !          1078:      references.  In particular, a load instruction may execute before
        !          1079:      a preceding store instruction.  Such reordering violates
        !          1080:      sequential consistency of volatile memory references, when there
        !          1081:      are multiple processors.
        !          1082: 
        !          1083:      The extra code generated to guarantee consistency may affect the
        !          1084:      performance of your application.  If you know that you can safely
        !          1085:      forgo this guarantee, you may use the option
        !          1086:      `-mno-serialize-volatile'.
        !          1087: 
        !          1088: `-msvr4'
        !          1089: `-msvr3'
        !          1090:      Turn on (`-msvr4') or off (`-msvr3') compiler extensions related
        !          1091:      to System V release 4 (SVr4).  This controls the following:
        !          1092: 
        !          1093:        1. Which variant of the assembler syntax to emit (which you can
        !          1094:           select independently using `-mversion-03.00').
        !          1095: 
        !          1096:        2. `-msvr4' makes the C preprocessor recognize `#pragma weak'
        !          1097:           that is used on System V release 4.
        !          1098: 
        !          1099:        3. `-msvr4' makes GNU CC issue additional declaration directives
        !          1100:           used in SVr4.
        !          1101: 
        !          1102:      `-msvr3' is the default for all m88k configurations except the
        !          1103:      SVr4 configuration.
        !          1104: 
        !          1105: `-mversion-03.00'
        !          1106:      In the DG/UX configuration, there are two flavors of SVr4.  This
        !          1107:      option modifies `-msvr4' to select whether the hybrid-COFF or
        !          1108:      real-ELF flavor is used.  All other configurations ignore this
        !          1109:      option.
        !          1110: 
        !          1111: `-mno-check-zero-division'
        !          1112: `-mcheck-zero-division'
        !          1113:      Early models of the 88k architecture had problems with division by
        !          1114:      zero; in particular, many of them didn't trap.  Use these options
        !          1115:      to avoid including (or to include explicitly) additional code to
        !          1116:      detect division by zero and signal an exception.  All GNU CC
        !          1117:      configurations for the 88k use `-mcheck-zero-division' by default.
        !          1118: 
        !          1119: `-muse-div-instruction'
        !          1120:      Do not emit code to check both the divisor and dividend when doing
        !          1121:      signed integer division to see if either is negative, and adjust
        !          1122:      the signs so the divide is done using non-negative numbers.
        !          1123:      Instead, rely on the operating system to calculate the correct
        !          1124:      value when the `div' instruction traps.  This results in different
        !          1125:      behavior when the most negative number is divided by -1, but is
        !          1126:      useful when most or all signed integer divisions are done with
        !          1127:      positive numbers.
        !          1128: 
        !          1129: `-mtrap-large-shift'
        !          1130: `-mhandle-large-shift'
        !          1131:      Include code to detect bit-shifts of more than 31 bits;
        !          1132:      respectively, trap such shifts or emit code to handle them
        !          1133:      properly.  By default GNU CC makes no special provision for large
        !          1134:      bit shifts.
        !          1135: 
        !          1136: `-mwarn-passed-structs'
        !          1137:      Warn when a function passes a struct as an argument or result.
        !          1138:      Structure-passing conventions have changed during the evolution of
        !          1139:      the C language, and are often the source of portability problems.
        !          1140:      By default, GNU CC issues no such warning.
        !          1141: 

unix.superglobalmegacorp.com

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