Annotation of gcc/gcc.info-2, revision 1.1.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.