Annotation of gcc/gcc.info-2, revision 1.1

1.1     ! root        1: This is Info file gcc.info, produced by Makeinfo-1.43 from the input
        !             2: file gcc.texi.
        !             3: 
        !             4:    This file documents the use and the internals of the GNU compiler.
        !             5: 
        !             6:    Copyright (C) 1988, 1989, 1992 Free Software Foundation, Inc.
        !             7: 
        !             8:    Permission is granted to make and distribute verbatim copies of
        !             9: this manual provided the copyright notice and this permission notice
        !            10: are preserved on all copies.
        !            11: 
        !            12:    Permission is granted to copy and distribute modified versions of
        !            13: this manual under the conditions for verbatim copying, provided also
        !            14: that the section entitled "GNU General Public License" is included
        !            15: exactly as in the original, and provided that the entire resulting
        !            16: derived work is distributed under the terms of a permission notice
        !            17: identical to this one.
        !            18: 
        !            19:    Permission is granted to copy and distribute translations of this
        !            20: manual into another language, under the above conditions for modified
        !            21: versions, except that the section entitled "GNU General Public
        !            22: License" and this permission notice may be included in translations
        !            23: approved by the Free Software Foundation instead of in the original
        !            24: English.
        !            25: 
        !            26: 
        !            27: File: gcc.info,  Node: Warning Options,  Next: Debugging Options,  Prev: Dialect Options,  Up: Invoking GCC
        !            28: 
        !            29: Options to Request or Suppress Warnings
        !            30: =======================================
        !            31: 
        !            32:    Warnings are diagnostic messages that report constructions which
        !            33: are not inherently erroneous but which are risky or suggest there may
        !            34: have been an error.
        !            35: 
        !            36:    You can request many specific warnings with options beginning `-W',
        !            37: for example `-Wimplicit' to request warnings on implicit declarations.
        !            38:  Each of these specific warning options also has a negative form
        !            39: beginning `-Wno-' to turn off warnings; for example, `-Wno-implicit'. 
        !            40: This manual lists only one of the two forms, whichever is not the
        !            41: default.
        !            42: 
        !            43:    These options control the amount and kinds of warnings produced by
        !            44: GNU CC:
        !            45: 
        !            46: `-fsyntax-only'
        !            47:      Check the code for syntax errors, but don't emit any output.
        !            48: 
        !            49: `-w'
        !            50:      Inhibit all warning messages.
        !            51: 
        !            52: `-pedantic'
        !            53:      Issue all the warnings demanded by strict ANSI standard C; reject
        !            54:      all programs that use forbidden extensions.
        !            55: 
        !            56:      Valid ANSI standard C programs should compile properly with or
        !            57:      without this option (though a rare few will require `-ansi'). 
        !            58:      However, without this option, certain GNU extensions and
        !            59:      traditional C features are supported as well.  With this option,
        !            60:      they are rejected.
        !            61: 
        !            62:      `-pedantic' does not cause warning messages for use of the
        !            63:      alternate keywords whose names begin and end with `__'.  Pedantic
        !            64:      warnings are also disabled in the expression that follows
        !            65:      `__extension__'.  However, only system header files should use
        !            66:      these escape routes; application programs should avoid them. 
        !            67:      *Note Alternate Keywords::.
        !            68: 
        !            69:      This option is not intended to be useful; it exists only to
        !            70:      satisfy pedants who would otherwise claim that GNU CC fails to
        !            71:      support the ANSI standard.
        !            72: 
        !            73:      Some users try to use `-pedantic' to check programs for strict
        !            74:      ANSI C conformance.  They soon find that it does not do quite
        !            75:      what they want: it finds some non-ANSI practices, but not
        !            76:      all--only those for which ANSI C *requires* a diagnostic.
        !            77: 
        !            78:      A feature to report any failure to conform to ANSI C might be
        !            79:      useful in some instances, but would require considerable
        !            80:      additional work and would be quite different from `-pedantic'. 
        !            81:      We recommend, rather, that users take advantage of the extensions
        !            82:      of GNU C and disregard the limitations of other compilers.  Aside
        !            83:      from certain supercomputers and obsolete small machines, there is
        !            84:      less and less reason ever to use any other C compiler other than
        !            85:      for bootstrapping GNU CC.
        !            86: 
        !            87: `-pedantic-errors'
        !            88:      Like `-pedantic', except that errors are produced rather than
        !            89:      warnings.
        !            90: 
        !            91: `-W'
        !            92:      Print extra warning messages for these events:
        !            93: 
        !            94:         * A nonvolatile automatic variable might be changed by a call
        !            95:           to `longjmp'.  These warnings as well are possible only in
        !            96:           optimizing compilation.
        !            97: 
        !            98:           The compiler sees only the calls to `setjmp'.  It cannot know
        !            99:           where `longjmp' will be called; in fact, a signal handler
        !           100:           could call it at any point in the code.  As a result, you
        !           101:           may get a warning even when there is in fact no problem
        !           102:           because `longjmp' cannot in fact be called at the place
        !           103:           which would cause a problem.
        !           104: 
        !           105:         * A function can return either with or without a value. 
        !           106:           (Falling off the end of the function body is considered
        !           107:           returning without a value.)  For example, this function
        !           108:           would evoke such a warning:
        !           109: 
        !           110:                foo (a)
        !           111:                {
        !           112:                  if (a > 0)
        !           113:                    return a;
        !           114:                }
        !           115: 
        !           116:         * An expression-statement contains no side effects.
        !           117: 
        !           118:         * An unsigned value is compared against zero with `>' or `<='.
        !           119: 
        !           120: `-Wimplicit'
        !           121:      Warn whenever a function or parameter is implicitly declared.
        !           122: 
        !           123: `-Wreturn-type'
        !           124:      Warn whenever a function is defined with a return-type that
        !           125:      defaults to `int'.  Also warn about any `return' statement with no
        !           126:      return-value in a function whose return-type is not `void'.
        !           127: 
        !           128: `-Wunused'
        !           129:      Warn whenever a local variable is unused aside from its
        !           130:      declaration, whenever a function is declared static but never
        !           131:      defined, and whenever a statement computes a result that is
        !           132:      explicitly not used.
        !           133: 
        !           134: `-Wswitch'
        !           135:      Warn whenever a `switch' statement has an index of enumeral type
        !           136:      and lacks a `case' for one or more of the named codes of that
        !           137:      enumeration.  (The presence of a `default' label prevents this
        !           138:      warning.)  `case' labels outside the enumeration range also
        !           139:      provoke warnings when this option is used.
        !           140: 
        !           141: `-Wcomment'
        !           142:      Warn whenever a comment-start sequence `/*' appears in a comment.
        !           143: 
        !           144: `-Wtrigraphs'
        !           145:      Warn if any trigraphs are encountered (assuming they are enabled).
        !           146: 
        !           147: `-Wformat'
        !           148:      Check calls to `printf' and `scanf', etc., to make sure that the
        !           149:      arguments supplied have types appropriate to the format string
        !           150:      specified.
        !           151: 
        !           152: `-Wchar-subscripts'
        !           153:      Warn if an array subscript has type `char'.  This is a common
        !           154:      cause of error, as programmers often forget that this type is
        !           155:      signed on some machines.
        !           156: 
        !           157: `-Wuninitialized'
        !           158:      An automatic variable is used without first being initialized.
        !           159: 
        !           160:      These warnings are possible only in optimizing compilation,
        !           161:      because they require data flow information that is computed only
        !           162:      when optimizing.  If you don't specify `-O', you simply won't get
        !           163:      these warnings.
        !           164: 
        !           165:      These warnings occur only for variables that are candidates for
        !           166:      register allocation.  Therefore, they do not occur for a variable
        !           167:      that is declared `volatile', or whose address is taken, or whose
        !           168:      size is other than 1, 2, 4 or 8 bytes.  Also, they do not occur
        !           169:      for structures, unions or arrays, even when they are in registers.
        !           170: 
        !           171:      Note that there may be no warning about a variable that is used
        !           172:      only to compute a value that itself is never used, because such
        !           173:      computations may be deleted by data flow analysis before the
        !           174:      warnings are printed.
        !           175: 
        !           176:      These warnings are made optional because GNU CC is not smart
        !           177:      enough to see all the reasons why the code might be correct
        !           178:      despite appearing to have an error.  Here is one example of how
        !           179:      this can happen:
        !           180: 
        !           181:           {
        !           182:             int x;
        !           183:             switch (y)
        !           184:               {
        !           185:               case 1: x = 1;
        !           186:                 break;
        !           187:               case 2: x = 4;
        !           188:                 break;
        !           189:               case 3: x = 5;
        !           190:               }
        !           191:             foo (x);
        !           192:           }
        !           193: 
        !           194:      If the value of `y' is always 1, 2 or 3, then `x' is always
        !           195:      initialized, but GNU CC doesn't know this.  Here is another
        !           196:      common case:
        !           197: 
        !           198:           {
        !           199:             int save_y;
        !           200:             if (change_y) save_y = y, y = new_y;
        !           201:             ...
        !           202:             if (change_y) y = save_y;
        !           203:           }
        !           204: 
        !           205:      This has no bug because `save_y' is used only if it is set.
        !           206: 
        !           207:      Some spurious warnings can be avoided if you declare as
        !           208:      `volatile' all the functions you use that never return.  *Note
        !           209:      Function Attributes::.
        !           210: 
        !           211: `-Wall'
        !           212:      All of the above `-W' options combined.  These are all the
        !           213:      options which pertain to usage that we recommend avoiding and
        !           214:      that we believe is easy to avoid, even in conjunction with macros.
        !           215: 
        !           216:    The remaining `-W...' options are not implied by `-Wall' because
        !           217: they warn about constructions that we consider reasonable to use, on
        !           218: occasion, in clean programs.
        !           219: 
        !           220: `-Wtraditional'
        !           221:      Warn about certain constructs that behave differently in
        !           222:      traditional and ANSI C.
        !           223: 
        !           224:         * Macro arguments occurring within string constants in the
        !           225:           macro body.  These would substitute the argument in
        !           226:           traditional C, but are part of the constant in ANSI C.
        !           227: 
        !           228:         * A function declared external in one block and then used
        !           229:           after the end of the block.
        !           230: 
        !           231:         * A `switch' statement has an operand of type `long'.
        !           232: 
        !           233: `-Wshadow'
        !           234:      Warn whenever a local variable shadows another local variable.
        !           235: 
        !           236: `-Wid-clash-LEN'
        !           237:      Warn whenever two distinct identifiers match in the first LEN
        !           238:      characters.  This may help you prepare a program that will compile
        !           239:      with certain obsolete, brain-damaged compilers.
        !           240: 
        !           241: `-Wpointer-arith'
        !           242:      Warn about anything that depends on the "size of" a function type
        !           243:      or of `void'.  GNU C assigns these types a size of 1, for
        !           244:      convenience in calculations with `void *' pointers and pointers
        !           245:      to functions.
        !           246: 
        !           247: `-Wcast-qual'
        !           248:      Warn whenever a pointer is cast so as to remove a type qualifier
        !           249:      from the target type.  For example, warn if a `const char *' is
        !           250:      cast to an ordinary `char *'.
        !           251: 
        !           252: `-Wcast-align'
        !           253:      Warn whenever a pointer is cast such that the required alignment
        !           254:      of the target is increased.  For example, warn if a `char *' is
        !           255:      cast to an `int *' on machines where integers can only be
        !           256:      accessed at two- or four-byte boundaries.
        !           257: 
        !           258: `-Wwrite-strings'
        !           259:      Give string constants the type `const char[LENGTH]' so that
        !           260:      copying the address of one into a non-`const' `char *' pointer
        !           261:      will get a warning.  These warnings will help you find at compile
        !           262:      time code that can try to write into a string constant, but only
        !           263:      if you have been very careful about using `const' in declarations
        !           264:      and prototypes.  Otherwise, it will just be a nuisance; this is
        !           265:      why we did not make `-Wall' request these warnings.
        !           266: 
        !           267: `-Wconversion'
        !           268:      Warn if a prototype causes a type conversion that is different
        !           269:      from what would happen to the same argument in the absence of a
        !           270:      prototype.  This includes conversions of fixed point to floating
        !           271:      and vice versa, and conversions changing the width or signedness
        !           272:      of a fixed point argument except when the same as the default
        !           273:      promotion.
        !           274: 
        !           275: `-Waggregate-return'
        !           276:      Warn if any functions that return structures or unions are
        !           277:      defined or called.  (In languages where you can return an array,
        !           278:      this also elicits a warning.)
        !           279: 
        !           280: `-Wstrict-prototypes'
        !           281:      Warn if a function is declared or defined without specifying the
        !           282:      argument types.  (An old-style function definition is permitted
        !           283:      without a warning if preceded by a declaration which specifies
        !           284:      the argument types.)
        !           285: 
        !           286: `-Wmissing-prototypes'
        !           287:      Warn if a global function is defined without a previous prototype
        !           288:      declaration.  This warning is issued even if the definition itself
        !           289:      provides a prototype.  The aim is to detect global functions that
        !           290:      fail to be declared in header files.
        !           291: 
        !           292: `-Wredundant-decls'
        !           293:      Warn if anything is declared more than once in the same scope,
        !           294:      even in cases where multiple declaration is valid and changes
        !           295:      nothing.
        !           296: 
        !           297: `-Wnested-externs'
        !           298:      Warn if an `extern' declaration is encountered within an function.
        !           299: 
        !           300: `-Wno-parentheses'
        !           301:      Disable warnings that parentheses are suggested around an
        !           302:      expression.
        !           303: 
        !           304: `-Werror'
        !           305:      Make all warnings into errors.
        !           306: 
        !           307: 
        !           308: File: gcc.info,  Node: Debugging Options,  Next: Optimize Options,  Prev: Warning Options,  Up: Invoking GCC
        !           309: 
        !           310: Options for Debugging Your Program or GNU CC
        !           311: ============================================
        !           312: 
        !           313:    GNU CC has various special options that are used for debugging
        !           314: either your program or GCC:
        !           315: 
        !           316: `-g'
        !           317:      Produce debugging information in the operating system's native
        !           318:      format (stabs or COFF or DWARF).  GDB can work with this
        !           319:      debugging information.
        !           320: 
        !           321:      On most systems that use stabs format, `-g' enables use of extra
        !           322:      debugging information that only GDB can use; this extra
        !           323:      information makes debugging work better in GDB but will probably
        !           324:      make DBX crash or refuse to read the program.  If you want to
        !           325:      control for certain whether to generate the extra information,
        !           326:      use `-gstabs+' or `-gstabs' (see below).
        !           327: 
        !           328:      Unlike most other C compilers, GNU CC allows you to use `-g' with
        !           329:      `-O'.  The shortcuts taken by optimized code may occasionally
        !           330:      produce surprising results: some variables you declared may not
        !           331:      exist at all; flow of control may briefly move where you did not
        !           332:      expect it; some statements may not be executed because they
        !           333:      compute constant results or their values were already at hand;
        !           334:      some statements may execute in different places because they were
        !           335:      moved out of loops.
        !           336: 
        !           337:      Nevertheless it proves possible to debug optimized output.  This
        !           338:      makes it reasonable to use the optimizer for programs that might
        !           339:      have bugs.
        !           340: 
        !           341:      The following options are useful when GNU CC is generated with the
        !           342:      capability for more than one debugging format.
        !           343: 
        !           344: `-ggdb'
        !           345:      Produce debugging information in the native format (if that is
        !           346:      supported), including GDB extensions if at all possible.
        !           347: 
        !           348: `-gstabs'
        !           349:      Produce debugging information in stabs format (if that is
        !           350:      supported), without GDB extensions.  This is the format used by
        !           351:      DBX on most BSD systems.
        !           352: 
        !           353: `-gstabs+'
        !           354:      Produce debugging information in stabs format (if that is
        !           355:      supported), using GDB extensions.  The use of these extensions is
        !           356:      likely to make DBX crash or refuse to read the program.
        !           357: 
        !           358: `-gcoff'
        !           359:      Produce debugging information in COFF format (if that is
        !           360:      supported).  This is the format used by SDB on COFF systems.
        !           361: 
        !           362: `-gdwarf'
        !           363:      Produce debugging information in DWARF format (if that is
        !           364:      supported).  This is the format used by SDB on systems that use
        !           365:      DWARF.
        !           366: 
        !           367: `-gLEVEL'
        !           368: `-ggdbLEVEL'
        !           369: `-gstabsLEVEL'
        !           370: `-gcoffLEVEL'
        !           371: `-gdwarfLEVEL'
        !           372:      Request debugging information and also use LEVEL to specify how
        !           373:      much information.  The default level is 2.
        !           374: 
        !           375:      Level 1 produces minimal information, enough for making
        !           376:      backtraces in parts of the program that you don't plan to debug. 
        !           377:      This includes descriptions of functions and external variables,
        !           378:      but no information about local variables and no line numbers.
        !           379: 
        !           380:      Level 3 includes extra information, such as all the macro
        !           381:      definitions present in the program.  Some debuggers support macro
        !           382:      expansion when you use `-g3'.
        !           383: 
        !           384: `-p'
        !           385:      Generate extra code to write profile information suitable for the
        !           386:      analysis program `prof'.
        !           387: 
        !           388: `-pg'
        !           389:      Generate extra code to write profile information suitable for the
        !           390:      analysis program `gprof'.
        !           391: 
        !           392: `-a'
        !           393:      Generate extra code to write profile information for basic blocks,
        !           394:      which will record the number of times each basic block is
        !           395:      executed.  This data could be analyzed by a program like `tcov'. 
        !           396:      Note, however, that the format of the data is not what `tcov'
        !           397:      expects.  Eventually GNU `gprof' should be extended to process
        !           398:      this data.
        !           399: 
        !           400: `-dLETTERS'
        !           401:      Says to make debugging dumps during compilation at times
        !           402:      specified by LETTERS.  This is used for debugging the compiler. 
        !           403:      The file names for most of the dumps are made by appending a word
        !           404:      to the source file name (e.g.  `foo.c.rtl' or `foo.c.jump'). 
        !           405:      Here are the possible letters for use in LETTERS, and their
        !           406:      meanings:
        !           407: 
        !           408:     `M'
        !           409:           Dump all macro definitions, at the end of preprocessing, and
        !           410:           write no output.
        !           411: 
        !           412:     `N'
        !           413:           Dump all macro names, at the end of preprocessing.
        !           414: 
        !           415:     `D'
        !           416:           Dump all macro definitions, at the end of preprocessing, in
        !           417:           addition to normal output.
        !           418: 
        !           419:     `y'
        !           420:           Dump debugging information during parsing, to standard error.
        !           421: 
        !           422:     `r'
        !           423:           Dump after RTL generation, to `FILE.rtl'.
        !           424: 
        !           425:     `x'
        !           426:           Just generate RTL for a function instead of compiling it. 
        !           427:           Usually used with `r'.
        !           428: 
        !           429:     `j'
        !           430:           Dump after first jump optimization, to `FILE.jump'.
        !           431: 
        !           432:     `s'
        !           433:           Dump after CSE (including the jump optimization that
        !           434:           sometimes follows CSE), to `FILE.cse'.
        !           435: 
        !           436:     `L'
        !           437:           Dump after loop optimization, to `FILE.loop'.
        !           438: 
        !           439:     `t'
        !           440:           Dump after the second CSE pass (including the jump
        !           441:           optimization that sometimes follows CSE), to `FILE.cse2'.
        !           442: 
        !           443:     `f'
        !           444:           Dump after flow analysis, to `FILE.flow'.
        !           445: 
        !           446:     `c'
        !           447:           Dump after instruction combination, to `FILE.combine'.
        !           448: 
        !           449:     `S'
        !           450:           Dump after the first instruction scheduling pass, to
        !           451:           `FILE.sched'.
        !           452: 
        !           453:     `l'
        !           454:           Dump after local register allocation, to `FILE.lreg'.
        !           455: 
        !           456:     `g'
        !           457:           Dump after global register allocation, to `FILE.greg'.
        !           458: 
        !           459:     `R'
        !           460:           Dump after the second instruction scheduling pass, to
        !           461:           `FILE.sched2'.
        !           462: 
        !           463:     `J'
        !           464:           Dump after last jump optimization, to `FILE.jump2'.
        !           465: 
        !           466:     `d'
        !           467:           Dump after delayed branch scheduling, to `FILE.dbr'.
        !           468: 
        !           469:     `k'
        !           470:           Dump after conversion from registers to stack, to
        !           471:           `FILE.stack'.
        !           472: 
        !           473:     `a'
        !           474:           Produce all the dumps listed above.
        !           475: 
        !           476:     `m'
        !           477:           Print statistics on memory usage, at the end of the run, to
        !           478:           standard error.
        !           479: 
        !           480:     `p'
        !           481:           Annotate the assembler output with a comment indicating which
        !           482:           pattern and alternative was used.
        !           483: 
        !           484: `-fpretend-float'
        !           485:      When running a cross-compiler, pretend that the target machine
        !           486:      uses the same floating point format as the host machine.  This
        !           487:      causes incorrect output of the actual floating constants, but the
        !           488:      actual instruction sequence will probably be the same as GNU CC
        !           489:      would make when running on the target machine.
        !           490: 
        !           491: `-save-temps'
        !           492:      Store the usual "temporary" intermediate files permanently; place
        !           493:      them in the current directory and name them based on the source
        !           494:      file.  Thus, compiling `foo.c' with `-c -save-temps' would
        !           495:      produce files `foo.cpp' and `foo.s', as well as `foo.o'.
        !           496: 
        !           497: 
        !           498: File: gcc.info,  Node: Optimize Options,  Next: Preprocessor Options,  Prev: Debugging Options,  Up: Invoking GCC
        !           499: 
        !           500: Options That Control Optimization
        !           501: =================================
        !           502: 
        !           503:    These options control various sorts of optimizations:
        !           504: 
        !           505: `-O'
        !           506:      Optimize.  Optimizing compilation takes somewhat more time, and a
        !           507:      lot more memory for a large function.
        !           508: 
        !           509:      Without `-O', the compiler's goal is to reduce the cost of
        !           510:      compilation and to make debugging produce the expected results. 
        !           511:      Statements are independent: if you stop the program with a
        !           512:      breakpoint between statements, you can then assign a new value to
        !           513:      any variable or change the program counter to any other statement
        !           514:      in the function and get exactly the results you would expect from
        !           515:      the source code.
        !           516: 
        !           517:      Without `-O', only variables declared `register' are allocated in
        !           518:      registers.  The resulting compiled code is a little worse than
        !           519:      produced by PCC without `-O'.
        !           520: 
        !           521:      With `-O', the compiler tries to reduce code size and execution
        !           522:      time.
        !           523: 
        !           524:      When `-O' is specified, `-fthread-jumps' and `-fdelayed-branch'
        !           525:      are turned on.  On some machines other flags may also be turned
        !           526:      on.
        !           527: 
        !           528: `-O2'
        !           529:      Highly optimize.  All supported optimizations that do not involve
        !           530:      a space-speed tradeoff are performed.  As compared to `-O', this
        !           531:      option will increase both compilation time and the performance of
        !           532:      the generated code.
        !           533: 
        !           534:      All `-fFLAG' options that control optimization are turned on when
        !           535:      `-O2' is specified, except for `-funroll-loops' and
        !           536:      `-funroll-all-loops'.
        !           537: 
        !           538:    Options of the form `-fFLAG' specify machine-independent flags. 
        !           539: Most flags have both positive and negative forms; the negative form of
        !           540: `-ffoo' would be `-fno-foo'.  In the table below, only one of the
        !           541: forms is listed--the one which is not the default.  You can figure out
        !           542: the other form by either removing `no-' or adding it.
        !           543: 
        !           544: `-ffloat-store'
        !           545:      Do not store floating point variables in registers.  This
        !           546:      prevents undesirable excess precision on machines such as the
        !           547:      68000 where the floating registers (of the 68881) keep more
        !           548:      precision than a `double' is supposed to have.
        !           549: 
        !           550:      For most programs, the excess precision does only good, but a few
        !           551:      programs rely on the precise definition of IEEE floating point. 
        !           552:      Use `-ffloat-store' for such programs.
        !           553: 
        !           554: `-fno-defer-pop'
        !           555:      Always pop the arguments to each function call as soon as that
        !           556:      function returns.  For machines which must pop arguments after a
        !           557:      function call, the compiler normally lets arguments accumulate on
        !           558:      the stack for several function calls and pops them all at once.
        !           559: 
        !           560: `-fforce-mem'
        !           561:      Force memory operands to be copied into registers before doing
        !           562:      arithmetic on them.  This may produce better code by making all
        !           563:      memory references potential common subexpressions.  When they are
        !           564:      not common subexpressions, instruction combination should
        !           565:      eliminate the separate register-load.  I am interested in hearing
        !           566:      about the difference this makes.
        !           567: 
        !           568: `-fforce-addr'
        !           569:      Force memory address constants to be copied into registers before
        !           570:      doing arithmetic on them.  This may produce better code just as
        !           571:      `-fforce-mem' may.  I am interested in hearing about the
        !           572:      difference this makes.
        !           573: 
        !           574: `-fomit-frame-pointer'
        !           575:      Don't keep the frame pointer in a register for functions that
        !           576:      don't need one.  This avoids the instructions to save, set up and
        !           577:      restore frame pointers; it also makes an extra register available
        !           578:      in many functions.  *It also makes debugging impossible on some
        !           579:      machines.*
        !           580: 
        !           581:      On some machines, such as the Vax, this flag has no effect,
        !           582:      because the standard calling sequence automatically handles the
        !           583:      frame pointer and nothing is saved by pretending it doesn't
        !           584:      exist.  The machine-description macro `FRAME_POINTER_REQUIRED'
        !           585:      controls whether a target machine supports this flag.  *Note
        !           586:      Registers::.
        !           587: 
        !           588: `-finline'
        !           589:      Pay attention to the `inline' keyword.  Normally the negation of
        !           590:      this option `-fno-inline' is used to keep the compiler from
        !           591:      expanding any functions inline.  However, the opposite effect may
        !           592:      be desirable when compiling without optimization, since inline
        !           593:      expansion is turned off in that case.
        !           594: 
        !           595: `-finline-functions'
        !           596:      Integrate all simple functions into their callers.  The compiler
        !           597:      heuristically decides which functions are simple enough to be
        !           598:      worth integrating in this way.
        !           599: 
        !           600:      If all calls to a given function are integrated, and the function
        !           601:      is declared `static', then the function is normally not output as
        !           602:      assembler code in its own right.
        !           603: 
        !           604: `-fcaller-saves'
        !           605:      Enable values to be allocated in registers that will be clobbered
        !           606:      by function calls, by emitting extra instructions to save and
        !           607:      restore the registers around such calls.  Such allocation is done
        !           608:      only when it seems to result in better code than would otherwise
        !           609:      be produced.
        !           610: 
        !           611:      This option is enabled by default on certain machines, usually
        !           612:      those which have no call-preserved registers to use instead.
        !           613: 
        !           614: `-fkeep-inline-functions'
        !           615:      Even if all calls to a given function are integrated, and the
        !           616:      function is declared `static', nevertheless output a separate
        !           617:      run-time callable version of the function.
        !           618: 
        !           619: `-fno-function-cse'
        !           620:      Do not put function addresses in registers; make each instruction
        !           621:      that calls a constant function contain the function's address
        !           622:      explicitly.
        !           623: 
        !           624:      This option results in less efficient code, but some strange hacks
        !           625:      that alter the assembler output may be confused by the
        !           626:      optimizations performed when this option is not used.
        !           627: 
        !           628:    The following options control specific optimizations.  The `-O2'
        !           629: option turns on all of these optimizations except `-funroll-loops' and
        !           630: `-funroll-all-loops'.  The `-O' option usually turns on the
        !           631: `-fthread-jumps' and `-fdelayed-branch' options, but specific machines
        !           632: may change the default optimizations.
        !           633: 
        !           634:    You can use the following flags in the rare cases when "fine-tuning"
        !           635: of optimizations to be performed is desired.
        !           636: 
        !           637: `-fstrength-reduce'
        !           638:      Perform the optimizations of loop strength reduction and
        !           639:      elimination of iteration variables.
        !           640: 
        !           641: `-fthread-jumps'
        !           642:      Perform optimizations where we check to see if a jump branches to
        !           643:      a location where another comparison subsumed by the first is
        !           644:      found.  If so, the first branch is redirected to either the
        !           645:      destination of the second branch or a point immediately following
        !           646:      it, depending on whether the condition is known to be true or
        !           647:      false.
        !           648: 
        !           649: `-fcse-follow-jumps'
        !           650:      In common subexpression elimination, scan through jump
        !           651:      instructions in certain cases.  This is not as powerful as
        !           652:      completely global CSE, but not as slow either.
        !           653: 
        !           654: `-frerun-cse-after-loop'
        !           655:      Re-run common subexpression elimination after loop optimizations
        !           656:      has been performed.
        !           657: 
        !           658: `-fexpensive-optimizations'
        !           659:      Perform a number of minor optimizations that are relatively
        !           660:      expensive.
        !           661: 
        !           662: `-fdelayed-branch'
        !           663:      If supported for the target machine, attempt to reorder
        !           664:      instructions to exploit instruction slots available after delayed
        !           665:      branch instructions.
        !           666: 
        !           667: `-fschedule-insns'
        !           668:      If supported for the target machine, attempt to reorder
        !           669:      instructions to eliminate execution stalls due to required data
        !           670:      being unavailable.  This helps machines that have slow floating
        !           671:      point or memory load instructions by allowing other instructions
        !           672:      to be issued until the result of the load or floating point
        !           673:      instruction is required.
        !           674: 
        !           675: `-fschedule-insns2'
        !           676:      Similar to `-fschedule-insns', but requests an additional pass of
        !           677:      instruction scheduling after register allocation has been done. 
        !           678:      This is especially useful on machines with a relatively small
        !           679:      number of registers and where memory load instructions take more
        !           680:      than one cycle.
        !           681: 
        !           682: `-funroll-loops'
        !           683:      Perform the optimization of loop unrolling.  This is only done
        !           684:      for loops whose number of iterations can be determined at compile
        !           685:      time or run time.  `-funroll-loop' implies `-fstrength-reduce' and
        !           686:      `-frerun-cse-after-loop'.
        !           687: 
        !           688: `-funroll-all-loops'
        !           689:      Perform the optimization of loop unrolling.  This is done for all
        !           690:      loops and usually makes programs run more slowly. 
        !           691:      `-funroll-all-loops' implies `-fstrength-reduce' and
        !           692:      `-frerun-cse-after-loop'.
        !           693: 
        !           694: `-fno-peephole'
        !           695:      Disable any machine-specific peephole optimizations.
        !           696: 
        !           697: 
        !           698: File: gcc.info,  Node: Preprocessor Options,  Next: Link Options,  Prev: Optimize Options,  Up: Invoking GCC
        !           699: 
        !           700: Options Controlling the Preprocessor
        !           701: ====================================
        !           702: 
        !           703:    These options control the C preprocessor, which is run on each C
        !           704: source file before actual compilation.
        !           705: 
        !           706:    If you use the `-E' option, nothing is done except preprocessing. 
        !           707: Some of these options make sense only together with `-E' because they
        !           708: cause the preprocessor output to be unsuitable for actual compilation.
        !           709: 
        !           710: `-include FILE'
        !           711:      Process FILE as input before processing the regular input file. 
        !           712:      In effect, the contents of FILE are compiled first.  Any `-D' and
        !           713:      `-U' options on the command line are always processed before
        !           714:      `-include FILE', regardless of the order in which they are
        !           715:      written.  All the `-include' and `-imacros' options are processed
        !           716:      in the order in which they are written.
        !           717: 
        !           718: `-imacros FILE'
        !           719:      Process FILE as input, discarding the resulting output, before
        !           720:      processing the regular input file.  Because the output generated
        !           721:      from FILE is discarded, the only effect of `-imacros FILE' is to
        !           722:      make the macros defined in FILE available for use in the main
        !           723:      input.
        !           724: 
        !           725:      Any `-D' and `-U' options on the command line are always
        !           726:      processed before `-imacros FILE', regardless of the order in
        !           727:      which they are written.  All the `-include' and `-imacros'
        !           728:      options are processed in the order in which they are written.
        !           729: 
        !           730: `-nostdinc'
        !           731:      Do not search the standard system directories for header files. 
        !           732:      Only the directories you have specified with `-I' options (and the
        !           733:      current directory, if appropriate) are searched.  *Note Directory
        !           734:      Options::, for information on `-I'.
        !           735: 
        !           736:      By using both `-nostdinc' and `-I-', you can limit the
        !           737:      include-file search path to only those directories you specify
        !           738:      explicitly.
        !           739: 
        !           740: `-undef'
        !           741:      Do not predefine any nonstandard macros.  (Including architecture
        !           742:      flags).
        !           743: 
        !           744: `-E'
        !           745:      Run only the C preprocessor.  Preprocess all the C source files
        !           746:      specified and output the results to standard output or to the
        !           747:      specified output file.
        !           748: 
        !           749: `-C'
        !           750:      Tell the preprocessor not to discard comments.  Used with the
        !           751:      `-E' option.
        !           752: 
        !           753: `-P'
        !           754:      Tell the preprocessor not to generate `#line' commands.  Used
        !           755:      with the `-E' option.
        !           756: 
        !           757: `-M'
        !           758:      Tell the preprocessor to output a rule suitable for `make'
        !           759:      describing the dependencies of each object file.  For each source
        !           760:      file, the preprocessor outputs one `make'-rule whose target is
        !           761:      the object file name for that source file and whose dependencies
        !           762:      are all the files `#include'd in it.  This rule may be a single
        !           763:      line or may be continued with `\'-newline if it is long.  The
        !           764:      list of rules is printed on standard output instead of the
        !           765:      preprocessed C program.
        !           766: 
        !           767:      `-M' implies `-E'.
        !           768: 
        !           769:      Another way to specify output of a `make' rule is by setting the
        !           770:      environment variable `DEPENDENCIES_OUTPUT' (*note Environment
        !           771:      Variables::.).
        !           772: 
        !           773: `-MM'
        !           774:      Like `-M' but the output mentions only the user header files
        !           775:      included with `#include "FILE"'.  System header files included
        !           776:      with `#include <FILE>' are omitted.
        !           777: 
        !           778: `-MD'
        !           779:      Like `-M' but the dependency information is written to files with
        !           780:      names made by replacing `.c' with `.d' at the end of the input
        !           781:      file names.  This is in addition to compiling the file as
        !           782:      specified--`-MD' does not inhibit ordinary compilation the way
        !           783:      `-M' does.
        !           784: 
        !           785:      The Mach utility `md' can be used to merge the `.d' files into a
        !           786:      single dependency file suitable for using with the `make' command.
        !           787: 
        !           788: `-MMD'
        !           789:      Like `-MD' except mention only user header files, not system
        !           790:      header files.
        !           791: 
        !           792: `-H'
        !           793:      Print the name of each header file used, in addition to other
        !           794:      normal activities.
        !           795: 
        !           796: `-DMACRO'
        !           797:      Define macro MACRO with the string `1' as its definition.
        !           798: 
        !           799: `-DMACRO=DEFN'
        !           800:      Define macro MACRO as DEFN.  All instances of `-D' on the command
        !           801:      line are processed before any `-U' options.
        !           802: 
        !           803: `-UMACRO'
        !           804:      Undefine macro MACRO.  `-U' options are evaluated after all `-D'
        !           805:      options, but before any `-include' and `-imacros' options.
        !           806: 
        !           807: `-dM'
        !           808:      Tell the preprocessor to output only a list of the macro
        !           809:      definitions that are in effect at the end of preprocessing.  Used
        !           810:      with the `-E' option.
        !           811: 
        !           812: `-dD'
        !           813:      Tell the preprocessing to pass all macro definitions into the
        !           814:      output, in their proper sequence in the rest of the output.
        !           815: 
        !           816: `-dN'
        !           817:      Like `-dD' except that the macro arguments and contents are
        !           818:      omitted.  Only `#define NAME' is included in the output.
        !           819: 
        !           820: `-trigraphs'
        !           821:      Support ANSI C trigraphs.  You don't want to know about this
        !           822:      brain-damage.  The `-ansi' option also has this effect.
        !           823: 
        !           824: 
        !           825: File: gcc.info,  Node: Link Options,  Next: Directory Options,  Prev: Preprocessor Options,  Up: Invoking GCC
        !           826: 
        !           827: Options for Linking
        !           828: ===================
        !           829: 
        !           830:    These options come into play when the compiler links object files
        !           831: into an executable output file.  They are meaningless if the compiler
        !           832: is not doing a link step.
        !           833: 
        !           834: `OBJECT-FILE-NAME'
        !           835:      A file name that does not end in a special recognized suffix is
        !           836:      considered to name an object file or library.  (Object files are
        !           837:      distinguished from libraries by the linker according to the file
        !           838:      contents.)  If linking is done, these object files are used as
        !           839:      input to the linker.
        !           840: 
        !           841: `-c'
        !           842: `-S'
        !           843: `-E'
        !           844:      If any of these options is used, then the linker is not run, and
        !           845:      object file names should not be used as arguments.  *Note Overall
        !           846:      Options::.
        !           847: 
        !           848: `-lLIBRARY'
        !           849:      Search the library named LIBRARY when linking.
        !           850: 
        !           851:      It makes a difference where in the command you write this option;
        !           852:      the linker searches processes libraries and object files in the
        !           853:      order they are specified.  Thus, `foo.o -lz bar.o' seaches
        !           854:      library `z' after file `foo.o' but before `bar.o'.  If `bar.o'
        !           855:      refers to functions in `z', those functions may not be loaded.
        !           856: 
        !           857:      The linker searches a standard list of directories for the
        !           858:      library, which is actually a file named `libLIBRARY.a'.  The
        !           859:      linker then uses this file as if it had been specified precisely
        !           860:      by name.
        !           861: 
        !           862:      The directories searched include several standard system
        !           863:      directories plus any that you specify with `-L'.
        !           864: 
        !           865:      Normally the files found this way are library files--archive files
        !           866:      whose members are object files.  The linker handles an archive
        !           867:      file by scanning through it for members which define symbols that
        !           868:      have so far been referenced but not defined.  But if the file
        !           869:      that is found is an ordinary object file, it is linked in the
        !           870:      usual fashion.  The only difference between using an `-l' option
        !           871:      and specifying a file name is that `-l' surrounds LIBRARY with
        !           872:      `lib' and `.a' and searches several directories.
        !           873: 
        !           874: `-nostdlib'
        !           875:      Don't use the standard system libraries and startup files when
        !           876:      linking.  Only the files you specify will be passed to the linker.
        !           877: 
        !           878: `-static'
        !           879:      On systems that support dynamic linking, this prevents linking
        !           880:      with the shared libraries.  On other systems, this option has no
        !           881:      effect.
        !           882: 
        !           883: `-dynamic'
        !           884:      On systems that support dynamic linking, you can use this option
        !           885:      to request it explicitly.
        !           886: 
        !           887: `-shared'
        !           888:      Produce a shared object which can then be linked with other
        !           889:      objects to form an executable.  Only a few systems support this
        !           890:      option.
        !           891: 
        !           892: `-symbolic'
        !           893:      Bind references to global symbols when building a shared object. 
        !           894:      Warn about any unresolved references (unless overridden by the
        !           895:      link editor option `-Xlinker -z -Xlinker defs').  Only a few
        !           896:      systems support this option.
        !           897: 
        !           898: `-Xlinker OPTION'
        !           899:      Pass OPTION as an option to the linker.  You can use this to
        !           900:      supply system-specific linker options which GNU CC does not know
        !           901:      how to recognize.
        !           902: 
        !           903:      If you want to pass an option that takes an argument, you must use
        !           904:      `-Xlinker' twice, once for the option and once for the argument. 
        !           905:      For example, to pass `-assert definitions', you must write
        !           906:      `-Xlinker -assert -Xlinker definitions'.  It does not work to
        !           907:      write `-Xlinker "-assert definitions"', because this passes the
        !           908:      entire string as a single argument, which is not what the linker
        !           909:      expects.
        !           910: 
        !           911: 
        !           912: File: gcc.info,  Node: Directory Options,  Next: Target Options,  Prev: Link Options,  Up: Invoking GCC
        !           913: 
        !           914: Options for Directory Search
        !           915: ============================
        !           916: 
        !           917:    These options specify directories to search for header files, for
        !           918: libraries and for parts of the compiler:
        !           919: 
        !           920: `-IDIR'
        !           921:      Append directory DIR to the list of directories searched for
        !           922:      include files.
        !           923: 
        !           924: `-I-'
        !           925:      Any directories you specify with `-I' options before the `-I-'
        !           926:      option are searched only for the case of `#include "FILE"'; they
        !           927:      are not searched for `#include <FILE>'.
        !           928: 
        !           929:      If additional directories are specified with `-I' options after
        !           930:      the `-I-', these directories are searched for all `#include'
        !           931:      directives.  (Ordinarily *all* `-I' directories are used this
        !           932:      way.)
        !           933: 
        !           934:      In addition, the `-I-' option inhibits the use of the current
        !           935:      directory (where the current input file came from) as the first
        !           936:      search directory for `#include "FILE"'.  There is no way to
        !           937:      override this effect of `-I-'.  With `-I.' you can specify
        !           938:      searching the directory which was current when the compiler was
        !           939:      invoked.  That is not exactly the same as what the preprocessor
        !           940:      does by default, but it is often satisfactory.
        !           941: 
        !           942:      `-I-' does not inhibit the use of the standard system directories
        !           943:      for header files.  Thus, `-I-' and `-nostdinc' are independent.
        !           944: 
        !           945: `-LDIR'
        !           946:      Add directory DIR to the list of directories to be searched for
        !           947:      `-l'.
        !           948: 
        !           949: `-BPREFIX'
        !           950:      This option specifies where to find the executables, libraries and
        !           951:      data files of the compiler itself.
        !           952: 
        !           953:      The compiler driver program runs one or more of the subprograms
        !           954:      `cpp', `cc1', `as' and `ld'.  It tries PREFIX as a prefix for
        !           955:      each program it tries to run, both with and without
        !           956:      `MACHINE/VERSION/' (*note Target Options::.).
        !           957: 
        !           958:      For each subprogram to be run, the compiler driver first tries the
        !           959:      `-B' prefix, if any.  If that name is not found, or if `-B' was
        !           960:      not specified, the driver tries two standard prefixes, which are
        !           961:      `/usr/lib/gcc/' and `/usr/local/lib/gcc/'.  If neither of those
        !           962:      results in a file name that is found, the unmodified program name
        !           963:      is searched for using the directories specified in your `PATH'
        !           964:      environment variable.
        !           965: 
        !           966:      `-B' prefixes that effectively specify directory names also apply
        !           967:      to libraries in the linker, because the compiler translates these
        !           968:      options into `-L' options for the linker.
        !           969: 
        !           970:      The run-time support file `libgcc.a' can also be searched for
        !           971:      using the `-B' prefix, if needed.  If it is not found there, the
        !           972:      two standard prefixes above are tried, and that is all.  The file
        !           973:      is left out of the link if it is not found by those means.
        !           974: 
        !           975:      Another way to specify a prefix much like the `-B' prefix is to
        !           976:      use the environment variable `GCC_EXEC_PREFIX'.  *Note
        !           977:      Environment Variables::.
        !           978: 
        !           979: 
        !           980: File: gcc.info,  Node: Target Options,  Next: Submodel Options,  Prev: Directory Options,  Up: Invoking GCC
        !           981: 
        !           982: Specifying Target Machine and Compiler Version
        !           983: ==============================================
        !           984: 
        !           985:    By default, GNU CC compiles code for the same type of machine that
        !           986: you are using.  However, it can also be installed as a cross-compiler,
        !           987: to compile for some other type of machine.  In fact, several different
        !           988: configurations of GNU CC, for different target machines, can be
        !           989: installed side by side.  Then you specify which one to use with the
        !           990: `-b' option.
        !           991: 
        !           992:    In addition, older and newer versions of GNU CC can be installed
        !           993: side by side.  One of them (probably the newest) will be the default,
        !           994: but you may sometimes wish to use another.
        !           995: 
        !           996: `-b MACHINE'
        !           997:      The argument MACHINE specifies the target machine for compilation. 
        !           998:      This is useful when you have installed GNU CC as a cross-compiler.
        !           999: 
        !          1000:      The value to use for MACHINE is the same as was specified as the
        !          1001:      machine type when configuring GNU CC as a cross-compiler.  For
        !          1002:      example, if a cross-compiler was configured with `configure
        !          1003:      i386v', meaning to compile for an 80386 running System V, then you
        !          1004:      would specify `-b i386v' to run that cross compiler.
        !          1005: 
        !          1006:      When you do not specify `-b', it normally means to compile for
        !          1007:      the same type of machine that you are using.
        !          1008: 
        !          1009: `-V VERSION'
        !          1010:      The argument VERSION specifies which version of GNU CC to run. 
        !          1011:      This is useful when multiple versions are installed.  For example,
        !          1012:      VERSION might be `2.0', meaning to run GNU CC version 2.0.
        !          1013: 
        !          1014:      The default version, when you do not specify `-V', is controlled
        !          1015:      by the way GNU CC is installed.  Normally, it will be a version
        !          1016:      that is recommended for general use.
        !          1017: 
        !          1018:    The `-b' and `-V' options actually work by controlling part of the
        !          1019: file name used for the executable files and libraries used for
        !          1020: compilation.  A given version of GNU CC, for a given target machine, is
        !          1021: normally kept in the directory `/usr/local/lib/gcc/MACHINE/VERSION'.
        !          1022: 
        !          1023:    It follows that sites can customize the effect of `-b' or `-V'
        !          1024: either by changing the names of these directories or adding alternate
        !          1025: names (or symbolic links).  Thus, if `/usr/local/lib/gcc/80386' is a
        !          1026: link to `/usr/local/lib/gcc/i386v', then `-b 80386' will be an alias
        !          1027: for `-b i386v'.
        !          1028: 
        !          1029:    In one respect, the `-b' or `-V' do not completely change to a
        !          1030: different compiler: the top-level driver program `gcc' that you
        !          1031: originally invoked continues to run and invoke the other executables
        !          1032: (preprocessor, compiler per se, assembler and linker) that do the real
        !          1033: work.  However, since no real work is done in the driver program, it
        !          1034: usually does not matter that the driver program in use is not the one
        !          1035: for the specified target and version.
        !          1036: 
        !          1037:    The only way that the driver program depends on the target machine
        !          1038: is in the parsing and handling of special machine-specific options. 
        !          1039: However, this is controlled by a file which is found, along with the
        !          1040: other executables, in the directory for the specified version and
        !          1041: target machine.  As a result, a single installed driver program adapts
        !          1042: to any specified target machine and compiler version.
        !          1043: 
        !          1044:    The driver program executable does control one significant thing,
        !          1045: however: the default version and target machine.  Therefore, you can
        !          1046: install different instances of the driver program, compiled for
        !          1047: different targets or versions, under different names.
        !          1048: 
        !          1049:    For example, if the driver for version 2.0 is installed as `ogcc'
        !          1050: and that for version 2.1 is installed as `gcc', then the command `gcc'
        !          1051: will use version 2.1 by default, while `ogcc' will use 2.0 by default.
        !          1052:  However, you can choose either version with either command with the
        !          1053: `-V' option.
        !          1054: 
        !          1055: 
        !          1056: File: gcc.info,  Node: Submodel Options,  Next: Code Gen Options,  Prev: Target Options,  Up: Invoking GCC
        !          1057: 
        !          1058: Specifying Hardware Models and Configurations
        !          1059: =============================================
        !          1060: 
        !          1061:    Earlier we discussed the standard option `-b' which chooses among
        !          1062: different installed compilers for completely different target
        !          1063: machines, such as Vax vs. 68000 vs. 80386.
        !          1064: 
        !          1065:    In addition, each of these target machine types can have its own
        !          1066: special options, starting with `-m', to choose among various hardware
        !          1067: models or configurations--for example, 68010 vs 68020, floating
        !          1068: coprocessor or none.  A single installed version of the compiler can
        !          1069: compile for any model or configuration, according to the options
        !          1070: specified.
        !          1071: 
        !          1072:    These options are defined by the macro `TARGET_SWITCHES' in the
        !          1073: machine description.  The default for the options is also defined by
        !          1074: that macro, which enables you to change the defaults.
        !          1075: 
        !          1076: * Menu:
        !          1077: 
        !          1078: * M680x0 Options::
        !          1079: * VAX Options::
        !          1080: * SPARC Options::
        !          1081: * Convex Options::
        !          1082: * AMD29K Options::
        !          1083: * M88K Options::
        !          1084: * RS/6000 Options::
        !          1085: * RT Options::
        !          1086: * MIPS Options::
        !          1087: 
        !          1088: 
        !          1089: File: gcc.info,  Node: M680x0 Options,  Next: Vax Options,  Prev: Submodel Options,  Up: Submodel Options
        !          1090: 
        !          1091: M680x0 Options
        !          1092: --------------
        !          1093: 
        !          1094:    These are the `-m' options defined for the 68000 series.  The
        !          1095: default values for these options depends on which style of 68000 was
        !          1096: selected when the compiler was configured; the defaults for the most
        !          1097: common choices are given below.
        !          1098: 
        !          1099: `-m68020'
        !          1100: `-mc68020'
        !          1101:      Generate output for a 68020 (rather than a 68000).  This is the
        !          1102:      default when the compiler is configured for 68020-based systems.
        !          1103: 
        !          1104: `-m68000'
        !          1105: `-mc68000'
        !          1106:      Generate output for a 68000 (rather than a 68020).  This is the
        !          1107:      default when the compiler is configured for a 68000-based systems.
        !          1108: 
        !          1109: `-m68881'
        !          1110:      Generate output containing 68881 instructions for floating point. 
        !          1111:      This is the default for most 68020 systems unless `-nfp' was
        !          1112:      specified when the compiler was configured.
        !          1113: 
        !          1114: `-mfpa'
        !          1115:      Generate output containing Sun FPA instructions for floating
        !          1116:      point.
        !          1117: 
        !          1118: `-msoft-float'
        !          1119:      Generate output containing library calls for floating point. 
        !          1120:      *Warning:* the requisite libraries are not part of GNU CC. 
        !          1121:      Normally the facilities of the machine's usual C compiler are
        !          1122:      used, but this can't be done directly in cross-compilation.  You
        !          1123:      must make your own arrangements to provide suitable library
        !          1124:      functions for cross-compilation.
        !          1125: 
        !          1126: `-mshort'
        !          1127:      Consider type `int' to be 16 bits wide, like `short int'.
        !          1128: 
        !          1129: `-mnobitfield'
        !          1130:      Do not use the bit-field instructions.  `-m68000' implies
        !          1131:      `-mnobitfield'.
        !          1132: 
        !          1133: `-mbitfield'
        !          1134:      Do use the bit-field instructions.  `-m68020' implies
        !          1135:      `-mbitfield'.  This is the default if you use the unmodified
        !          1136:      sources configured for a 68020.
        !          1137: 
        !          1138: `-mrtd'
        !          1139:      Use a different function-calling convention, in which functions
        !          1140:      that take a fixed number of arguments return with the `rtd'
        !          1141:      instruction, which pops their arguments while returning.  This
        !          1142:      saves one instruction in the caller since there is no need to pop
        !          1143:      the arguments there.
        !          1144: 
        !          1145:      This calling convention is incompatible with the one normally
        !          1146:      used on Unix, so you cannot use it if you need to call libraries
        !          1147:      compiled with the Unix compiler.
        !          1148: 
        !          1149:      Also, you must provide function prototypes for all functions that
        !          1150:      take variable numbers of arguments (including `printf');
        !          1151:      otherwise incorrect code will be generated for calls to those
        !          1152:      functions.
        !          1153: 
        !          1154:      In addition, seriously incorrect code will result if you call a
        !          1155:      function with too many arguments.  (Normally, extra arguments are
        !          1156:      harmlessly ignored.)
        !          1157: 
        !          1158:      The `rtd' instruction is supported by the 68010 and 68020
        !          1159:      processors, but not by the 68000.
        !          1160: 
        !          1161: 
        !          1162: File: gcc.info,  Node: VAX Options,  Next: Sparc Options,  Prev: M680x0 Options,  Up: Submodel Options
        !          1163: 
        !          1164: VAX Options
        !          1165: -----------
        !          1166: 
        !          1167:    These `-m' options are defined for the Vax:
        !          1168: 
        !          1169: `-munix'
        !          1170:      Do not output certain jump instructions (`aobleq' and so on) that
        !          1171:      the Unix assembler for the Vax cannot handle across long ranges.
        !          1172: 
        !          1173: `-mgnu'
        !          1174:      Do output those jump instructions, on the assumption that you
        !          1175:      will assemble with the GNU assembler.
        !          1176: 
        !          1177: `-mg'
        !          1178:      Output code for g-format floating point numbers instead of
        !          1179:      d-format.
        !          1180: 
        !          1181: 
        !          1182: File: gcc.info,  Node: Sparc Options,  Next: Convex Options,  Prev: Vax Options,  Up: Submodel Options
        !          1183: 
        !          1184: SPARC Options
        !          1185: -------------
        !          1186: 
        !          1187:    These `-m' switches are supported on the Sparc:
        !          1188: 
        !          1189: `-mno-epilogue'
        !          1190:      Generate separate return instructions for `return' statements. 
        !          1191:      This has both advantages and disadvantages; I don't recall what
        !          1192:      they are.
        !          1193: 
        !          1194: 
        !          1195: File: gcc.info,  Node: Convex Options,  Next: AMD29K Options,  Prev: SPARC Options,  Up: Submodel Options
        !          1196: 
        !          1197: Convex Options
        !          1198: --------------
        !          1199: 
        !          1200:    These `-m' options are defined for the Convex:
        !          1201: 
        !          1202: `-mc1'
        !          1203:      Generate output for a C1.  This is the default when the compiler
        !          1204:      is configured for a C1.
        !          1205: 
        !          1206: `-mc2'
        !          1207:      Generate output for a C2.  This is the default when the compiler
        !          1208:      is configured for a C2.
        !          1209: 
        !          1210: `-margcount'
        !          1211:      Generate code which puts an argument count in the word preceding
        !          1212:      each argument list.  Some nonportable Convex and Vax programs
        !          1213:      need this word.  (Debuggers don't, except for functions with
        !          1214:      variable-length argument lists; this info is in the symbol table.)
        !          1215: 
        !          1216: `-mnoargcount'
        !          1217:      Omit the argument count word.  This is the default if you use the
        !          1218:      unmodified sources.
        !          1219: 
        !          1220: 
        !          1221: File: gcc.info,  Node: AMD29K Options,  Next: M88K Options,  Prev: Convex Options,  Up: Submodel Options
        !          1222: 
        !          1223: AMD29K Options
        !          1224: --------------
        !          1225: 
        !          1226:    These `-m' options are defined for the AMD Am29000:
        !          1227: 
        !          1228: `-mdw'
        !          1229:      Generate code that assumes the `DW' bit is set, i.e., that byte
        !          1230:      and halfword operations are directly supported by the hardware. 
        !          1231:      This is the default.
        !          1232: 
        !          1233: `-mnodw'
        !          1234:      Generate code that assumes the `DW' bit is not set.
        !          1235: 
        !          1236: `-mbw'
        !          1237:      Generate code that assumes the system supports byte and halfword
        !          1238:      write operations.  This is the default.
        !          1239: 
        !          1240: `-mnbw'
        !          1241:      Generate code that assumes the systems does not support byte and
        !          1242:      halfword write operations.  `-mnbw' implies `-mnodw'.
        !          1243: 
        !          1244: `-msmall'
        !          1245:      Use a small memory model that assumes that all function addresses
        !          1246:      are either within a single 256 KB segment or at an absolute
        !          1247:      address of less than 256K.  This allows the `call' instruction to
        !          1248:      be used instead of a `const', `consth', `calli' sequence.
        !          1249: 
        !          1250: `-mlarge'
        !          1251:      Do not assume that the `call' instruction can be used; this is the
        !          1252:      default.
        !          1253: 
        !          1254: `-m29050'
        !          1255:      Generate code for the Am29050.
        !          1256: 
        !          1257: `-m29000'
        !          1258:      Generate code for the Am29000.  This is the default.
        !          1259: 
        !          1260: `-mkernel-registers'
        !          1261:      Generate references to registers `gr64-gr95' instead of
        !          1262:      `gr96-gr127'.  This option can be used when compiling kernel code
        !          1263:      that wants a set of global registers disjoint from that used by
        !          1264:      user-mode code.
        !          1265: 
        !          1266:      Note that when this option is used, register names in `-f' flags
        !          1267:      must use the normal, user-mode, names.
        !          1268: 
        !          1269: `-muser-registers'
        !          1270:      Use the normal set of global registers, `gr96-gr127'.  This is the
        !          1271:      default.
        !          1272: 
        !          1273: `-mstack-check'
        !          1274:      Insert a call to `__msp_check' after each stack adjustment.  This
        !          1275:      is often used for kernel code.
        !          1276: 
        !          1277: 

unix.superglobalmegacorp.com

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