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

1.1.1.4 ! root        1: This is Info file gcc.info, produced by Makeinfo-1.49 from the input
1.1       root        2: file gcc.texi.
                      3: 
                      4:    This file documents the use and the internals of the GNU compiler.
                      5: 
                      6:    Copyright (C) 1988, 1989, 1992 Free Software Foundation, Inc.
                      7: 
1.1.1.3   root        8:    Permission is granted to make and distribute verbatim copies of this
                      9: manual provided the copyright notice and this permission notice are
                     10: preserved on all copies.
1.1       root       11: 
                     12:    Permission is granted to copy and distribute modified versions of
                     13: this manual under the conditions for verbatim copying, provided also
1.1.1.4 ! root       14: that the sections entitled "GNU General Public License" and "Protect
        !            15: Your Freedom--Fight `Look And Feel'" are included exactly as in the
        !            16: original, and provided that the entire resulting derived work is
        !            17: distributed under the terms of a permission notice identical to this
        !            18: one.
1.1       root       19: 
                     20:    Permission is granted to copy and distribute translations of this
                     21: manual into another language, under the above conditions for modified
1.1.1.3   root       22: versions, except that the sections entitled "GNU General Public
1.1.1.4 ! root       23: License" and "Protect Your Freedom--Fight `Look And Feel'", and this
        !            24: permission notice, may be included in translations approved by the Free
        !            25: Software Foundation instead of in the original English.
        !            26: 
        !            27: 
        !            28: File: gcc.info,  Node: Dialect Options,  Next: Warning Options,  Prev: Overall Options,  Up: Invoking GCC
        !            29: 
        !            30: Options Controlling Dialect
        !            31: ===========================
        !            32: 
        !            33:    The following options control the dialect of C or C++ that the
        !            34: compiler accepts:
        !            35: 
        !            36: `-ansi'
        !            37:      Support all ANSI standard C programs.
        !            38: 
        !            39:      This turns off certain features of GNU C that are incompatible
        !            40:      with ANSI C, such as the `asm', `inline' and `typeof' keywords, and
        !            41:      predefined macros such as `unix' and `vax' that identify the type
        !            42:      of system you are using.  It also enables the undesirable and
        !            43:      rarely used ANSI trigraph feature, and disallows `$' as part of
        !            44:      identifiers.
        !            45: 
        !            46:      The alternate keywords `__asm__', `__extension__', `__inline__'
        !            47:      and `__typeof__' continue to work despite `-ansi'.  You would not
        !            48:      want to use them in an ANSI C program, of course, but it useful to
        !            49:      put them in header files that might be included in compilations
        !            50:      done with `-ansi'.  Alternate predefined macros such as `__unix__'
        !            51:      and `__vax__' are also available, with or without `-ansi'.
        !            52: 
        !            53:      The `-ansi' option does not cause non-ANSI programs to be rejected
        !            54:      gratuitously.  For that, `-pedantic' is required in addition to
        !            55:      `-ansi'.  *Note Warning Options::.
        !            56: 
        !            57:      The macro `__STRICT_ANSI__' is predefined when the `-ansi' option
        !            58:      is used.  Some header files may notice this macro and refrain from
        !            59:      declaring certain functions or defining certain macros that the
        !            60:      ANSI standard doesn't call for; this is to avoid interfering with
        !            61:      any programs that might use these names for other things.
        !            62: 
        !            63:      The functions `alloca', `abort', `exit', and `_exit' are not
        !            64:      builtin functions when `-ansi' is used.
        !            65: 
        !            66: `-fall-virtual'
        !            67:      Treat certain member functions as virtual, implicitly (C++ only). 
        !            68:      This applies to all member functions declared in the same class
        !            69:      with a "method-call" operator method (except for constructor
        !            70:      functions and `new' or `delete' member operators).  In effect, all
        !            71:      of these methods become "implicitly virtual."
        !            72: 
        !            73:      This does not mean that all calls to these methods will be made
        !            74:      through the internal table of virtual functions.  There are some
        !            75:      circumstances under which it is obvious that a call to a given
        !            76:      virtual function can be made directly, and in these cases the
        !            77:      calls still go direct.
        !            78: 
        !            79:      The effect of making all methods of a class with a declared
        !            80:      `operator->()()' implicitly virtual using `-fall-virtual' extends
        !            81:      also to all non-constructor methods of any class derived from such
        !            82:      a class.
        !            83: 
        !            84: `-fdollars-in-identifiers'
        !            85:      Permit the use of `$' in identifiers (C++ only).  You can also use
        !            86:      `-fno-dollars-in-identifiers' to explicitly prohibit use of `$'. 
        !            87:      (GNU C++ allows `$' by default on some target systems but not
        !            88:      others.)
        !            89: 
        !            90: `-fenum-int-equiv'
        !            91:      Permit implicit conversion of `int' to enumeration types (C++
        !            92:      only).  Normally GNU C++ allows conversion of `enum' to `int', but
        !            93:      not the other way around.
        !            94: 
        !            95: `-fno-asm'
        !            96:      Do not recognize `asm', `inline' or `typeof' as a keyword.  These
        !            97:      words may then be used as identifiers.  You can use `__asm__',
        !            98:      `__inline__' and `__typeof__' instead. `-ansi' implies `-fno-asm'.
        !            99: 
        !           100: `-fno-builtin'
        !           101:      Don't recognize built-in functions that do not begin with two
        !           102:      leading underscores. Currently, the functions affected include
        !           103:      `_exit', `abort', `abs', `alloca', `cos', `exit', `fabs', `labs',
        !           104:      `memcmp', `memcpy', `sin', `sqrt', `strcmp', `strcpy', and
        !           105:      `strlen'.
        !           106: 
        !           107:      The `-ansi' option prevents `alloca' and `_exit' from being
        !           108:      builtin functions.
        !           109: 
        !           110: `-fno-strict-prototype'
        !           111:      Treat a function declaration with no arguments, such as `int foo
        !           112:      ();', as C would treat it--as saying nothing about the number of
        !           113:      arguments or their types (C++ only).  Normally, such a declaration
        !           114:      in C++ means that the function `foo' takes no arguments.
        !           115: 
        !           116: `-fthis-is-variable'
        !           117:      Permit assignment to `this' (C++ only).  The incorporation of
        !           118:      user-defined free store management into C++ has made assignment to
        !           119:      `this' an anachronism.  Therefore, by default it is invalid to
        !           120:      assign to `this' within a class member function.  However, for
        !           121:      backwards compatibility, you can make it valid with
        !           122:      `-fthis-is-variable'.
        !           123: 
        !           124: `-trigraphs'
        !           125:      Support ANSI C trigraphs.  You don't want to know about this
        !           126:      brain-damage.  The `-ansi' option implies `-trigraphs'.
        !           127: 
        !           128: `-traditional'
        !           129:      Attempt to support some aspects of traditional C compilers.
        !           130:      Specifically:
        !           131: 
        !           132:         * All `extern' declarations take effect globally even if they
        !           133:           are written inside of a function definition.  This includes
        !           134:           implicit declarations of functions.
        !           135: 
        !           136:         * The keywords `typeof', `inline', `signed', `const' and
        !           137:           `volatile' are not recognized.  (You can still use the
        !           138:           alternative keywords such as `__typeof__', `__inline__', and
        !           139:           so on.)
        !           140: 
        !           141:         * Comparisons between pointers and integers are always allowed.
        !           142: 
        !           143:         * Integer types `unsigned short' and `unsigned char' promote to
        !           144:           `unsigned int'.
        !           145: 
        !           146:         * Out-of-range floating point literals are not an error.
        !           147: 
        !           148:         * String "constants" are not necessarily constant; they are
        !           149:           stored in writable space, and identical looking constants are
        !           150:           allocated separately.  (This is the same as the effect of
        !           151:           `-fwritable-strings'.)
        !           152: 
        !           153:         * All automatic variables not declared `register' are preserved
        !           154:           by `longjmp'.  Ordinarily, GNU C follows ANSI C: automatic
        !           155:           variables not declared `volatile' may be clobbered.
        !           156: 
        !           157:         * In the preprocessor, comments convert to nothing at all,
        !           158:           rather than to a space.  This allows traditional token
        !           159:           concatenation.
        !           160: 
        !           161:         * In the preprocessor, macro arguments are recognized within
        !           162:           string constants in a macro definition (and their values are
        !           163:           stringified, though without additional quote marks, when they
        !           164:           appear in such a context).  The preprocessor always considers
        !           165:           a string constant to end at a newline.
        !           166: 
        !           167:         * The predefined macro `__STDC__' is not defined when you use
        !           168:           `-traditional', but `__GNUC__' is (since the GNU extensions
        !           169:           which `__GNUC__' indicates are not affected by
        !           170:           `-traditional').  If you need to write header files that work
        !           171:           differently depending on whether `-traditional' is in use, by
        !           172:           testing both of these predefined macros you can distinguish
        !           173:           four situations: GNU C, traditional GNU C, other ANSI C
        !           174:           compilers, and other old C compilers.
        !           175: 
        !           176:      You may wish to use `-fno-builtin' as well as `-traditional' if
        !           177:      your program uses names that are normally GNU C builtin functions
        !           178:      for other purposes of its own.
        !           179: 
        !           180: `-traditional-cpp'
        !           181:      Attempt to support some aspects of traditional C preprocessors.
        !           182:      This includes the last three items in the table immediately above,
        !           183:      but none of the other effects of `-traditional'.
        !           184: 
        !           185: `-fcond-mismatch'
        !           186:      Allow conditional expressions with mismatched types in the second
        !           187:      and third arguments.  The value of such an expression is void.
        !           188: 
        !           189: `-funsigned-char'
        !           190:      Let the type `char' be unsigned, like `unsigned char'.
        !           191: 
        !           192:      Each kind of machine has a default for what `char' should be.  It
        !           193:      is either like `unsigned char' by default or like `signed char' by
        !           194:      default.
        !           195: 
        !           196:      Ideally, a portable program should always use `signed char' or
        !           197:      `unsigned char' when it depends on the signedness of an object.
        !           198:      But many programs have been written to use plain `char' and expect
        !           199:      it to be signed, or expect it to be unsigned, depending on the
        !           200:      machines they were written for.  This option, and its inverse, let
        !           201:      you make such a program work with the opposite default.
        !           202: 
        !           203:      The type `char' is always a distinct type from each of `signed
        !           204:      char' or `unsigned char', even though its behavior is always just
        !           205:      like one of those two.
        !           206: 
        !           207: `-fsigned-char'
        !           208:      Let the type `char' be signed, like `signed char'.
        !           209: 
        !           210:      Note that this is equivalent to `-fno-unsigned-char', which is the
        !           211:      negative form of `-funsigned-char'.  Likewise, `-fno-signed-char'
        !           212:      is equivalent to `-funsigned-char'.
        !           213: 
        !           214: `-fsigned-bitfields'
        !           215: `-funsigned-bitfields'
        !           216: `-fno-signed-bitfields'
        !           217: `-fno-unsigned-bitfields'
        !           218:      These options control whether a bitfield is signed or unsigned,
        !           219:      when the declaration does not use either `signed' or `unsigned'. 
        !           220:      By default, such a bitfield is signed, because this is consistent:
        !           221:      the basic integer types such as `int' are signed types.
        !           222: 
        !           223:      However, when `-traditional' is used, bitfields are all unsigned
        !           224:      no matter what.
        !           225: 
        !           226: `-fwritable-strings'
        !           227:      Store string constants in the writable data segment and don't
        !           228:      uniquize them.  This is for compatibility with old programs which
        !           229:      assume they can write into string constants.  `-traditional' also
        !           230:      has this effect.
        !           231: 
        !           232:      Writing into string constants is a very bad idea; "constants"
        !           233:      should be constant.
1.1       root      234: 
                    235: 
                    236: File: gcc.info,  Node: Warning Options,  Next: Debugging Options,  Prev: Dialect Options,  Up: Invoking GCC
                    237: 
                    238: Options to Request or Suppress Warnings
                    239: =======================================
                    240: 
1.1.1.3   root      241:    Warnings are diagnostic messages that report constructions which are
                    242: not inherently erroneous but which are risky or suggest there may have
                    243: been an error.
1.1       root      244: 
                    245:    You can request many specific warnings with options beginning `-W',
1.1.1.3   root      246: for example `-Wimplicit' to request warnings on implicit declarations. 
                    247: Each of these specific warning options also has a negative form
1.1       root      248: beginning `-Wno-' to turn off warnings; for example, `-Wno-implicit'. 
                    249: This manual lists only one of the two forms, whichever is not the
                    250: default.
                    251: 
                    252:    These options control the amount and kinds of warnings produced by
                    253: GNU CC:
                    254: 
                    255: `-fsyntax-only'
                    256:      Check the code for syntax errors, but don't emit any output.
                    257: 
                    258: `-w'
                    259:      Inhibit all warning messages.
                    260: 
1.1.1.4 ! root      261: `-Wno-import'
1.1.1.2   root      262:      Inhibit warning messages about the use of `#import'.
                    263: 
1.1       root      264: `-pedantic'
                    265:      Issue all the warnings demanded by strict ANSI standard C; reject
                    266:      all programs that use forbidden extensions.
                    267: 
                    268:      Valid ANSI standard C programs should compile properly with or
                    269:      without this option (though a rare few will require `-ansi'). 
                    270:      However, without this option, certain GNU extensions and
                    271:      traditional C features are supported as well.  With this option,
                    272:      they are rejected.
                    273: 
                    274:      `-pedantic' does not cause warning messages for use of the
                    275:      alternate keywords whose names begin and end with `__'.  Pedantic
                    276:      warnings are also disabled in the expression that follows
                    277:      `__extension__'.  However, only system header files should use
1.1.1.3   root      278:      these escape routes; application programs should avoid them. *Note
                    279:      Alternate Keywords::.
1.1       root      280: 
1.1.1.3   root      281:      This option is not intended to be useful; it exists only to satisfy
                    282:      pedants who would otherwise claim that GNU CC fails to support the
                    283:      ANSI standard.
                    284: 
                    285:      Some users try to use `-pedantic' to check programs for strict ANSI
                    286:      C conformance.  They soon find that it does not do quite what they
                    287:      want: it finds some non-ANSI practices, but not all--only those
                    288:      for which ANSI C *requires* a diagnostic.
1.1       root      289: 
                    290:      A feature to report any failure to conform to ANSI C might be
                    291:      useful in some instances, but would require considerable
1.1.1.3   root      292:      additional work and would be quite different from `-pedantic'.  We
                    293:      recommend, rather, that users take advantage of the extensions of
                    294:      GNU C and disregard the limitations of other compilers.  Aside
1.1       root      295:      from certain supercomputers and obsolete small machines, there is
                    296:      less and less reason ever to use any other C compiler other than
                    297:      for bootstrapping GNU CC.
                    298: 
                    299: `-pedantic-errors'
                    300:      Like `-pedantic', except that errors are produced rather than
                    301:      warnings.
                    302: 
                    303: `-W'
                    304:      Print extra warning messages for these events:
                    305: 
1.1.1.3   root      306:         * A nonvolatile automatic variable might be changed by a call to
                    307:           `longjmp'.  These warnings as well are possible only in
1.1       root      308:           optimizing compilation.
                    309: 
                    310:           The compiler sees only the calls to `setjmp'.  It cannot know
                    311:           where `longjmp' will be called; in fact, a signal handler
1.1.1.3   root      312:           could call it at any point in the code.  As a result, you may
                    313:           get a warning even when there is in fact no problem because
                    314:           `longjmp' cannot in fact be called at the place which would
                    315:           cause a problem.
1.1       root      316: 
                    317:         * A function can return either with or without a value. 
                    318:           (Falling off the end of the function body is considered
1.1.1.3   root      319:           returning without a value.)  For example, this function would
                    320:           evoke such a warning:
1.1       root      321: 
                    322:                foo (a)
                    323:                {
                    324:                  if (a > 0)
                    325:                    return a;
                    326:                }
                    327: 
                    328:         * An expression-statement contains no side effects.
                    329: 
                    330:         * An unsigned value is compared against zero with `>' or `<='.
                    331: 
1.1.1.4 ! root      332:         * A comparison like `x<=y<=z' appears; this is equivalent to
        !           333:           `(x<=y ? 1 : 0) <= z', which is a different interpretation
        !           334:           from that of ordinary mathematical notation.
        !           335: 
        !           336:         * Storage-class specifiers like `static' are not the first
        !           337:           things in a declaration.  According to the C Standard, this
        !           338:           usage is obsolescent.
        !           339: 
        !           340:         * An aggregate has a partly bracketed initializer. For example,
        !           341:           the following code would evoke such a warning, because braces
        !           342:           are missing around the initializer for `x.h':
        !           343: 
        !           344:                struct s { int f, g; };
        !           345:                struct t { struct s h; int i; };
        !           346:                struct t x = { 1, 2, 3 };
        !           347: 
        !           348: `-Wenum-clash'
        !           349:      Warn about conversion between different enumeration types (C++
        !           350:      only).
        !           351: 
1.1       root      352: `-Wimplicit'
                    353:      Warn whenever a function or parameter is implicitly declared.
                    354: 
                    355: `-Wreturn-type'
                    356:      Warn whenever a function is defined with a return-type that
                    357:      defaults to `int'.  Also warn about any `return' statement with no
                    358:      return-value in a function whose return-type is not `void'.
                    359: 
                    360: `-Wunused'
                    361:      Warn whenever a local variable is unused aside from its
                    362:      declaration, whenever a function is declared static but never
                    363:      defined, and whenever a statement computes a result that is
                    364:      explicitly not used.
                    365: 
1.1.1.4 ! root      366:      If you want to prevent a warning for a particular variable, you
        !           367:      can use this macro:
        !           368: 
        !           369:           #define USE(var) \
        !           370:             static void * use_##var = (&use_##var, (void *) &var)
        !           371:           
        !           372:           USE (string);
        !           373: 
1.1       root      374: `-Wswitch'
                    375:      Warn whenever a `switch' statement has an index of enumeral type
                    376:      and lacks a `case' for one or more of the named codes of that
                    377:      enumeration.  (The presence of a `default' label prevents this
                    378:      warning.)  `case' labels outside the enumeration range also
                    379:      provoke warnings when this option is used.
                    380: 
                    381: `-Wcomment'
                    382:      Warn whenever a comment-start sequence `/*' appears in a comment.
                    383: 
                    384: `-Wtrigraphs'
                    385:      Warn if any trigraphs are encountered (assuming they are enabled).
                    386: 
                    387: `-Wformat'
                    388:      Check calls to `printf' and `scanf', etc., to make sure that the
                    389:      arguments supplied have types appropriate to the format string
                    390:      specified.
                    391: 
                    392: `-Wchar-subscripts'
1.1.1.3   root      393:      Warn if an array subscript has type `char'.  This is a common cause
                    394:      of error, as programmers often forget that this type is signed on
                    395:      some machines.
1.1       root      396: 
                    397: `-Wuninitialized'
                    398:      An automatic variable is used without first being initialized.
                    399: 
                    400:      These warnings are possible only in optimizing compilation,
                    401:      because they require data flow information that is computed only
                    402:      when optimizing.  If you don't specify `-O', you simply won't get
                    403:      these warnings.
                    404: 
                    405:      These warnings occur only for variables that are candidates for
                    406:      register allocation.  Therefore, they do not occur for a variable
                    407:      that is declared `volatile', or whose address is taken, or whose
1.1.1.3   root      408:      size is other than 1, 2, 4 or 8 bytes.  Also, they do not occur for
                    409:      structures, unions or arrays, even when they are in registers.
1.1       root      410: 
                    411:      Note that there may be no warning about a variable that is used
                    412:      only to compute a value that itself is never used, because such
                    413:      computations may be deleted by data flow analysis before the
                    414:      warnings are printed.
                    415: 
                    416:      These warnings are made optional because GNU CC is not smart
                    417:      enough to see all the reasons why the code might be correct
                    418:      despite appearing to have an error.  Here is one example of how
                    419:      this can happen:
                    420: 
                    421:           {
                    422:             int x;
                    423:             switch (y)
                    424:               {
                    425:               case 1: x = 1;
                    426:                 break;
                    427:               case 2: x = 4;
                    428:                 break;
                    429:               case 3: x = 5;
                    430:               }
                    431:             foo (x);
                    432:           }
                    433: 
                    434:      If the value of `y' is always 1, 2 or 3, then `x' is always
1.1.1.3   root      435:      initialized, but GNU CC doesn't know this.  Here is another common
                    436:      case:
1.1       root      437: 
                    438:           {
                    439:             int save_y;
                    440:             if (change_y) save_y = y, y = new_y;
                    441:             ...
                    442:             if (change_y) y = save_y;
                    443:           }
                    444: 
                    445:      This has no bug because `save_y' is used only if it is set.
                    446: 
1.1.1.3   root      447:      Some spurious warnings can be avoided if you declare as `volatile'
                    448:      all the functions you use that never return. *Note Function
                    449:      Attributes::.
1.1       root      450: 
1.1.1.2   root      451: `-Wparentheses'
                    452:      Warn if parentheses are omitted in certain contexts.
                    453: 
1.1       root      454: `-Wall'
1.1.1.3   root      455:      All of the above `-W' options combined.  These are all the options
                    456:      which pertain to usage that we recommend avoiding and that we
                    457:      believe is easy to avoid, even in conjunction with macros.
1.1       root      458: 
                    459:    The remaining `-W...' options are not implied by `-Wall' because
                    460: they warn about constructions that we consider reasonable to use, on
                    461: occasion, in clean programs.
                    462: 
                    463: `-Wtraditional'
                    464:      Warn about certain constructs that behave differently in
                    465:      traditional and ANSI C.
                    466: 
                    467:         * Macro arguments occurring within string constants in the
1.1.1.3   root      468:           macro body. These would substitute the argument in
1.1       root      469:           traditional C, but are part of the constant in ANSI C.
                    470: 
1.1.1.3   root      471:         * A function declared external in one block and then used after
                    472:           the end of the block.
1.1       root      473: 
                    474:         * A `switch' statement has an operand of type `long'.
                    475: 
                    476: `-Wshadow'
                    477:      Warn whenever a local variable shadows another local variable.
                    478: 
                    479: `-Wid-clash-LEN'
                    480:      Warn whenever two distinct identifiers match in the first LEN
                    481:      characters.  This may help you prepare a program that will compile
                    482:      with certain obsolete, brain-damaged compilers.
                    483: 
                    484: `-Wpointer-arith'
                    485:      Warn about anything that depends on the "size of" a function type
                    486:      or of `void'.  GNU C assigns these types a size of 1, for
1.1.1.3   root      487:      convenience in calculations with `void *' pointers and pointers to
                    488:      functions.
1.1       root      489: 
                    490: `-Wcast-qual'
                    491:      Warn whenever a pointer is cast so as to remove a type qualifier
                    492:      from the target type.  For example, warn if a `const char *' is
                    493:      cast to an ordinary `char *'.
                    494: 
                    495: `-Wcast-align'
                    496:      Warn whenever a pointer is cast such that the required alignment
                    497:      of the target is increased.  For example, warn if a `char *' is
1.1.1.3   root      498:      cast to an `int *' on machines where integers can only be accessed
                    499:      at two- or four-byte boundaries.
1.1       root      500: 
                    501: `-Wwrite-strings'
                    502:      Give string constants the type `const char[LENGTH]' so that
                    503:      copying the address of one into a non-`const' `char *' pointer
                    504:      will get a warning.  These warnings will help you find at compile
                    505:      time code that can try to write into a string constant, but only
                    506:      if you have been very careful about using `const' in declarations
                    507:      and prototypes.  Otherwise, it will just be a nuisance; this is
                    508:      why we did not make `-Wall' request these warnings.
                    509: 
                    510: `-Wconversion'
                    511:      Warn if a prototype causes a type conversion that is different
                    512:      from what would happen to the same argument in the absence of a
                    513:      prototype.  This includes conversions of fixed point to floating
                    514:      and vice versa, and conversions changing the width or signedness
                    515:      of a fixed point argument except when the same as the default
                    516:      promotion.
                    517: 
                    518: `-Waggregate-return'
1.1.1.3   root      519:      Warn if any functions that return structures or unions are defined
                    520:      or called.  (In languages where you can return an array, this also
                    521:      elicits a warning.)
1.1       root      522: 
                    523: `-Wstrict-prototypes'
                    524:      Warn if a function is declared or defined without specifying the
                    525:      argument types.  (An old-style function definition is permitted
1.1.1.3   root      526:      without a warning if preceded by a declaration which specifies the
                    527:      argument types.)
1.1       root      528: 
                    529: `-Wmissing-prototypes'
                    530:      Warn if a global function is defined without a previous prototype
                    531:      declaration.  This warning is issued even if the definition itself
                    532:      provides a prototype.  The aim is to detect global functions that
                    533:      fail to be declared in header files.
                    534: 
                    535: `-Wredundant-decls'
                    536:      Warn if anything is declared more than once in the same scope,
                    537:      even in cases where multiple declaration is valid and changes
                    538:      nothing.
                    539: 
                    540: `-Wnested-externs'
                    541:      Warn if an `extern' declaration is encountered within an function.
                    542: 
1.1.1.2   root      543: `-Winline'
                    544:      Warn if a function can not be inlined, and either it was declared
                    545:      as inline, or else the `-finline-functions' option was given.
1.1       root      546: 
                    547: `-Werror'
                    548:      Make all warnings into errors.
                    549: 
                    550: 
                    551: File: gcc.info,  Node: Debugging Options,  Next: Optimize Options,  Prev: Warning Options,  Up: Invoking GCC
                    552: 
                    553: Options for Debugging Your Program or GNU CC
                    554: ============================================
                    555: 
                    556:    GNU CC has various special options that are used for debugging
                    557: either your program or GCC:
                    558: 
                    559: `-g'
                    560:      Produce debugging information in the operating system's native
1.1.1.2   root      561:      format (stabs, COFF, XCOFF, or DWARF).  GDB can work with this
1.1       root      562:      debugging information.
                    563: 
                    564:      On most systems that use stabs format, `-g' enables use of extra
1.1.1.3   root      565:      debugging information that only GDB can use; this extra information
1.1.1.4 ! root      566:      makes debugging work better in GDB but will probably make other
        !           567:      debuggers crash or refuse to read the program.  If you want to
        !           568:      control for certain whether to generate the extra information, use
        !           569:      `-gstabs+', `-gstabs', `-gxcoff+', `-gxcoff', `-gdwarf+', or
        !           570:      `-gdwarf' (see below).
1.1       root      571: 
                    572:      Unlike most other C compilers, GNU CC allows you to use `-g' with
                    573:      `-O'.  The shortcuts taken by optimized code may occasionally
                    574:      produce surprising results: some variables you declared may not
                    575:      exist at all; flow of control may briefly move where you did not
                    576:      expect it; some statements may not be executed because they
                    577:      compute constant results or their values were already at hand;
                    578:      some statements may execute in different places because they were
                    579:      moved out of loops.
                    580: 
                    581:      Nevertheless it proves possible to debug optimized output.  This
                    582:      makes it reasonable to use the optimizer for programs that might
                    583:      have bugs.
                    584: 
                    585:      The following options are useful when GNU CC is generated with the
                    586:      capability for more than one debugging format.
                    587: 
                    588: `-ggdb'
                    589:      Produce debugging information in the native format (if that is
                    590:      supported), including GDB extensions if at all possible.
                    591: 
                    592: `-gstabs'
                    593:      Produce debugging information in stabs format (if that is
                    594:      supported), without GDB extensions.  This is the format used by
                    595:      DBX on most BSD systems.
                    596: 
                    597: `-gstabs+'
                    598:      Produce debugging information in stabs format (if that is
1.1.1.4 ! root      599:      supported), using GNU extensions understood only by the GNU
        !           600:      debugger (GDB).  The use of these extensions is likely to make
        !           601:      other debuggers crash or refuse to read the program.
1.1       root      602: 
                    603: `-gcoff'
                    604:      Produce debugging information in COFF format (if that is
1.1.1.4 ! root      605:      supported). This is the format used by SDB on most System V
        !           606:      systems prior to System V Release 4.
1.1       root      607: 
1.1.1.2   root      608: `-gxcoff'
                    609:      Produce debugging information in XCOFF format (if that is
1.1.1.4 ! root      610:      supported). This is the format used by the DBX debugger on IBM
        !           611:      RS/6000 systems.
        !           612: 
        !           613: `-gxcoff+'
        !           614:      Produce debugging information in XCOFF format (if that is
        !           615:      supported), using GNU extensions understood only by the GNU
        !           616:      debugger (GDB).  The use of these extensions is likely to make
        !           617:      other debuggers crash or refuse to read the program.
1.1.1.2   root      618: 
1.1       root      619: `-gdwarf'
                    620:      Produce debugging information in DWARF format (if that is
1.1.1.4 ! root      621:      supported). This is the format used by SDB on most System V
        !           622:      Release 4 systems.
        !           623: 
        !           624: `-gdwarf+'
        !           625:      Produce debugging information in DWARF format (if that is
        !           626:      supported), using GNU extensions understood only by the GNU
        !           627:      debugger (GDB).  The use of these extensions is likely to make
        !           628:      other debuggers crash or refuse to read the program.
1.1       root      629: 
                    630: `-gLEVEL'
                    631: `-ggdbLEVEL'
                    632: `-gstabsLEVEL'
                    633: `-gcoffLEVEL'
1.1.1.2   root      634: `-gxcoffLEVEL'
1.1       root      635: `-gdwarfLEVEL'
                    636:      Request debugging information and also use LEVEL to specify how
                    637:      much information.  The default level is 2.
                    638: 
1.1.1.3   root      639:      Level 1 produces minimal information, enough for making backtraces
                    640:      in parts of the program that you don't plan to debug.  This
                    641:      includes descriptions of functions and external variables, but no
                    642:      information about local variables and no line numbers.
1.1       root      643: 
                    644:      Level 3 includes extra information, such as all the macro
                    645:      definitions present in the program.  Some debuggers support macro
                    646:      expansion when you use `-g3'.
                    647: 
                    648: `-p'
                    649:      Generate extra code to write profile information suitable for the
                    650:      analysis program `prof'.
                    651: 
                    652: `-pg'
                    653:      Generate extra code to write profile information suitable for the
                    654:      analysis program `gprof'.
                    655: 
                    656: `-a'
                    657:      Generate extra code to write profile information for basic blocks,
1.1.1.3   root      658:      which will record the number of times each basic block is executed.
                    659:      This data could be analyzed by a program like `tcov'.  Note,
                    660:      however, that the format of the data is not what `tcov' expects.
                    661:      Eventually GNU `gprof' should be extended to process this data.
1.1       root      662: 
                    663: `-dLETTERS'
1.1.1.3   root      664:      Says to make debugging dumps during compilation at times specified
                    665:      by LETTERS.  This is used for debugging the compiler.  The file
                    666:      names for most of the dumps are made by appending a word to the
                    667:      source file name (e.g.  `foo.c.rtl' or `foo.c.jump').  Here are the
                    668:      possible letters for use in LETTERS, and their meanings:
1.1       root      669: 
                    670:     `M'
                    671:           Dump all macro definitions, at the end of preprocessing, and
                    672:           write no output.
                    673: 
                    674:     `N'
                    675:           Dump all macro names, at the end of preprocessing.
                    676: 
                    677:     `D'
                    678:           Dump all macro definitions, at the end of preprocessing, in
                    679:           addition to normal output.
                    680: 
                    681:     `y'
                    682:           Dump debugging information during parsing, to standard error.
                    683: 
                    684:     `r'
                    685:           Dump after RTL generation, to `FILE.rtl'.
                    686: 
                    687:     `x'
                    688:           Just generate RTL for a function instead of compiling it. 
                    689:           Usually used with `r'.
                    690: 
                    691:     `j'
                    692:           Dump after first jump optimization, to `FILE.jump'.
                    693: 
                    694:     `s'
1.1.1.3   root      695:           Dump after CSE (including the jump optimization that sometimes
                    696:           follows CSE), to `FILE.cse'.
1.1       root      697: 
                    698:     `L'
                    699:           Dump after loop optimization, to `FILE.loop'.
                    700: 
                    701:     `t'
                    702:           Dump after the second CSE pass (including the jump
                    703:           optimization that sometimes follows CSE), to `FILE.cse2'.
                    704: 
                    705:     `f'
                    706:           Dump after flow analysis, to `FILE.flow'.
                    707: 
                    708:     `c'
                    709:           Dump after instruction combination, to `FILE.combine'.
                    710: 
                    711:     `S'
                    712:           Dump after the first instruction scheduling pass, to
                    713:           `FILE.sched'.
                    714: 
                    715:     `l'
1.1.1.4 ! root      716:           Dump after local register allocation, to
        !           717:           `FILE.lreg'.
1.1       root      718: 
                    719:     `g'
1.1.1.4 ! root      720:           Dump after global register allocation, to
        !           721:           `FILE.greg'.
1.1       root      722: 
                    723:     `R'
                    724:           Dump after the second instruction scheduling pass, to
                    725:           `FILE.sched2'.
                    726: 
                    727:     `J'
                    728:           Dump after last jump optimization, to `FILE.jump2'.
                    729: 
                    730:     `d'
                    731:           Dump after delayed branch scheduling, to `FILE.dbr'.
                    732: 
                    733:     `k'
                    734:           Dump after conversion from registers to stack, to
                    735:           `FILE.stack'.
                    736: 
                    737:     `a'
                    738:           Produce all the dumps listed above.
                    739: 
                    740:     `m'
                    741:           Print statistics on memory usage, at the end of the run, to
                    742:           standard error.
                    743: 
                    744:     `p'
                    745:           Annotate the assembler output with a comment indicating which
                    746:           pattern and alternative was used.
                    747: 
                    748: `-fpretend-float'
                    749:      When running a cross-compiler, pretend that the target machine
                    750:      uses the same floating point format as the host machine.  This
                    751:      causes incorrect output of the actual floating constants, but the
                    752:      actual instruction sequence will probably be the same as GNU CC
                    753:      would make when running on the target machine.
                    754: 
                    755: `-save-temps'
                    756:      Store the usual "temporary" intermediate files permanently; place
                    757:      them in the current directory and name them based on the source
1.1.1.3   root      758:      file.  Thus, compiling `foo.c' with `-c -save-temps' would produce
                    759:      files `foo.i' and `foo.s', as well as `foo.o'.
1.1       root      760: 
                    761: 
                    762: File: gcc.info,  Node: Optimize Options,  Next: Preprocessor Options,  Prev: Debugging Options,  Up: Invoking GCC
                    763: 
                    764: Options That Control Optimization
                    765: =================================
                    766: 
                    767:    These options control various sorts of optimizations:
                    768: 
                    769: `-O'
1.1.1.4 ! root      770: `-O1'
1.1       root      771:      Optimize.  Optimizing compilation takes somewhat more time, and a
                    772:      lot more memory for a large function.
                    773: 
                    774:      Without `-O', the compiler's goal is to reduce the cost of
1.1.1.3   root      775:      compilation and to make debugging produce the expected results.
1.1       root      776:      Statements are independent: if you stop the program with a
                    777:      breakpoint between statements, you can then assign a new value to
                    778:      any variable or change the program counter to any other statement
                    779:      in the function and get exactly the results you would expect from
                    780:      the source code.
                    781: 
                    782:      Without `-O', only variables declared `register' are allocated in
                    783:      registers.  The resulting compiled code is a little worse than
                    784:      produced by PCC without `-O'.
                    785: 
                    786:      With `-O', the compiler tries to reduce code size and execution
                    787:      time.
                    788: 
                    789:      When `-O' is specified, `-fthread-jumps' and `-fdelayed-branch'
1.1.1.3   root      790:      are turned on.  On some machines other flags may also be turned on.
1.1       root      791: 
                    792: `-O2'
1.1.1.3   root      793:      Optimize even more.  Nearly all supported optimizations that do not
                    794:      involve a space-speed tradeoff are performed.  As compared to `-O',
                    795:      this option increases both compilation time and the performance of
                    796:      the generated code.
                    797: 
                    798:      `-O2' turns on all `-fFLAG' options that enable more optimization,
                    799:      except for `-funroll-loops', `-funroll-all-loops' and
                    800:      `-fomit-frame-pointer'.
1.1       root      801: 
1.1.1.4 ! root      802: `-O0'
        !           803:      Do not optimize.
        !           804: 
        !           805:      If you use multiple `-O' options, with or without level numbers,
        !           806:      the last such option is the one that is effective.
        !           807: 
1.1       root      808:    Options of the form `-fFLAG' specify machine-independent flags. 
                    809: Most flags have both positive and negative forms; the negative form of
1.1.1.3   root      810: `-ffoo' would be `-fno-foo'.  In the table below, only one of the forms
                    811: is listed--the one which is not the default. You can figure out the
                    812: other form by either removing `no-' or adding it.
1.1       root      813: 
                    814: `-ffloat-store'
1.1.1.4 ! root      815:      Do not store floating point variables in registers, and inhibit
        !           816:      other options that might change whether a floating point value is
        !           817:      taken from a register or memory.
        !           818: 
        !           819:      This option prevents undesirable excess precision on machines such
        !           820:      as the 68000 where the floating registers (of the 68881) keep more
        !           821:      precision than a `double' is supposed to have.  For most programs,
        !           822:      the excess precision does only good, but a few programs rely on the
        !           823:      precise definition of IEEE floating point.  Use `-ffloat-store' for
        !           824:      such programs.
1.1       root      825: 
                    826: `-fno-defer-pop'
                    827:      Always pop the arguments to each function call as soon as that
                    828:      function returns.  For machines which must pop arguments after a
                    829:      function call, the compiler normally lets arguments accumulate on
                    830:      the stack for several function calls and pops them all at once.
                    831: 
                    832: `-fforce-mem'
                    833:      Force memory operands to be copied into registers before doing
                    834:      arithmetic on them.  This may produce better code by making all
                    835:      memory references potential common subexpressions.  When they are
                    836:      not common subexpressions, instruction combination should
                    837:      eliminate the separate register-load.  I am interested in hearing
                    838:      about the difference this makes.
                    839: 
                    840: `-fforce-addr'
                    841:      Force memory address constants to be copied into registers before
                    842:      doing arithmetic on them.  This may produce better code just as
                    843:      `-fforce-mem' may.  I am interested in hearing about the
                    844:      difference this makes.
                    845: 
                    846: `-fomit-frame-pointer'
                    847:      Don't keep the frame pointer in a register for functions that
                    848:      don't need one.  This avoids the instructions to save, set up and
                    849:      restore frame pointers; it also makes an extra register available
                    850:      in many functions.  *It also makes debugging impossible on some
                    851:      machines.*
                    852: 
1.1.1.3   root      853:      On some machines, such as the Vax, this flag has no effect, because
                    854:      the standard calling sequence automatically handles the frame
                    855:      pointer and nothing is saved by pretending it doesn't exist.  The
                    856:      machine-description macro `FRAME_POINTER_REQUIRED' controls
                    857:      whether a target machine supports this flag.  *Note Registers::.
                    858: 
                    859: `-fno-inline'
                    860:      Don't pay attention to the `inline' keyword.  Normally this option
                    861:      is used to keep the compiler from expanding any functions inline.
1.1.1.4 ! root      862:      Note that if you are not optimizing, no functions can be expanded
        !           863:      inline.
1.1       root      864: 
                    865: `-finline-functions'
                    866:      Integrate all simple functions into their callers.  The compiler
1.1.1.3   root      867:      heuristically decides which functions are simple enough to be worth
                    868:      integrating in this way.
1.1       root      869: 
                    870:      If all calls to a given function are integrated, and the function
                    871:      is declared `static', then the function is normally not output as
                    872:      assembler code in its own right.
                    873: 
                    874: `-fkeep-inline-functions'
                    875:      Even if all calls to a given function are integrated, and the
                    876:      function is declared `static', nevertheless output a separate
                    877:      run-time callable version of the function.
                    878: 
1.1.1.4 ! root      879: `-fno-default-inline'
        !           880:      Don't make member functions inline by default merely because they
        !           881:      are defined inside the class scope (C++ only).
        !           882: 
1.1       root      883: `-fno-function-cse'
                    884:      Do not put function addresses in registers; make each instruction
                    885:      that calls a constant function contain the function's address
                    886:      explicitly.
                    887: 
                    888:      This option results in less efficient code, but some strange hacks
                    889:      that alter the assembler output may be confused by the
                    890:      optimizations performed when this option is not used.
                    891: 
1.1.1.3   root      892: `-ffast-math'
                    893:      This option allows GCC to violate some ANSI or IEEE
                    894:      rules/specifications in the interest of optimizing code for speed.
                    895:       For example, it allows the compiler to assume arguments to the
                    896:      `sqrt' function are non-negative numbers.
                    897: 
                    898:      This option should never be turned on by any `-O' option since it
                    899:      can result in incorrect output for programs which depend on an
                    900:      exact implementation of IEEE or ANSI rules/specifications for math
                    901:      functions.
                    902: 
1.1.1.4 ! root      903: `-felide-constructors'
        !           904:      Elide constructors when this seems plausible (C++ only).  With this
        !           905:      option, GNU C++ initializes `y' directly from the call to `foo'
        !           906:      without going through a temporary in the following code:
        !           907: 
        !           908:           A foo ();
        !           909:           A y = foo ();
        !           910: 
        !           911:      Without this option, GNU C++ first initializes `y' by calling the
        !           912:      appropriate constructor for type `A'; then assigns the result of
        !           913:      `foo' to a temporary; and, finally, replaces the initial value of
        !           914:      `y' with the temporary.
        !           915: 
        !           916:      The default behavior (`-fno-elide-constructors') is specified by
        !           917:      the draft ANSI C++ standard.  If your program's constructors have
        !           918:      side effects, `-felide-constructors' can change your program's
        !           919:      behavior, since some constructor calls may be omitted.
        !           920: 
        !           921: `-fmemoize-lookups'
        !           922: `-fsave-memoized'
        !           923:      Use heuristics to compile faster (C++ only).  These heuristics are
        !           924:      not enabled by default, since they are only effective for certain
        !           925:      input files.  Other input files compile more slowly.
        !           926: 
        !           927:      The first time the compiler must build a call to a member function
        !           928:      (or reference to a data member), it must (1) determine whether the
        !           929:      class implements member functions of that name; (2) resolve which
        !           930:      member function to call (which involves figuring out what sorts of
        !           931:      type conversions need to be made); and (3) check the visibility of
        !           932:      the member function to the caller.  All of this adds up to slower
        !           933:      compilation. Normally, the second time a call is made to that
        !           934:      member function (or reference to that data member), it must go
        !           935:      through the same lengthy process again.  This means that code like
        !           936:      this
        !           937: 
        !           938:           cout << "This " << p << " has " << n << " legs.\n";
        !           939: 
        !           940:      makes six passes through all three steps.  By using a software
        !           941:      cache, a "hit" significantly reduces this cost.  Unfortunately,
        !           942:      using the cache introduces another layer of mechanisms which must
        !           943:      be implemented, and so incurs its own overhead. 
        !           944:      `-fmemoize-lookups' enables the software cache.
        !           945: 
        !           946:      Because access privileges (visibility) to members and member
        !           947:      functions may differ from one function context to the next, G++
        !           948:      may need to flush the cache.  With the `-fmemoize-lookups' flag,
        !           949:      the cache is flushed after every function that is compiled.  The
        !           950:      `-fsave-memoized' flag enables the same software cache, but when
        !           951:      the compiler determines that the context of the last function
        !           952:      compiled would yield the same access privileges of the next
        !           953:      function to compile, it preserves the cache. This is most helpful
        !           954:      when defining many member functions for the same class: with the
        !           955:      exception of member functions which are friends of other classes,
        !           956:      each member function has exactly the same access privileges as
        !           957:      every other, and the cache need not be flushed.
        !           958: 
1.1       root      959:    The following options control specific optimizations.  The `-O2'
                    960: option turns on all of these optimizations except `-funroll-loops' and
                    961: `-funroll-all-loops'.  The `-O' option usually turns on the
                    962: `-fthread-jumps' and `-fdelayed-branch' options, but specific machines
                    963: may change the default optimizations.
                    964: 
                    965:    You can use the following flags in the rare cases when "fine-tuning"
                    966: of optimizations to be performed is desired.
                    967: 
                    968: `-fstrength-reduce'
                    969:      Perform the optimizations of loop strength reduction and
                    970:      elimination of iteration variables.
                    971: 
                    972: `-fthread-jumps'
1.1.1.3   root      973:      Perform optimizations where we check to see if a jump branches to a
                    974:      location where another comparison subsumed by the first is found. 
                    975:      If so, the first branch is redirected to either the destination of
                    976:      the second branch or a point immediately following it, depending
                    977:      on whether the condition is known to be true or false.
1.1       root      978: 
                    979: `-fcse-follow-jumps'
1.1.1.3   root      980:      In common subexpression elimination, scan through jump instructions
                    981:      when the target of the jump is not reached by any other path.  For
                    982:      example, when CSE encounters an `if' statement with an `else'
                    983:      clause, CSE will follow the jump when the condition tested is
                    984:      false.
                    985: 
                    986: `-fcse-skip-blocks'
                    987:      This is similar to `-fcse-follow-jumps', but causes CSE to follow
                    988:      jumps which conditionally skip over blocks.  When CSE encounters a
                    989:      simple `if' statement with no else clause, `-fcse-skip-blocks'
                    990:      causes CSE to follow the jump around the body of the `if'.
1.1       root      991: 
                    992: `-frerun-cse-after-loop'
                    993:      Re-run common subexpression elimination after loop optimizations
                    994:      has been performed.
                    995: 
                    996: `-fexpensive-optimizations'
                    997:      Perform a number of minor optimizations that are relatively
                    998:      expensive.
                    999: 
                   1000: `-fdelayed-branch'
                   1001:      If supported for the target machine, attempt to reorder
                   1002:      instructions to exploit instruction slots available after delayed
                   1003:      branch instructions.
                   1004: 
                   1005: `-fschedule-insns'
                   1006:      If supported for the target machine, attempt to reorder
                   1007:      instructions to eliminate execution stalls due to required data
                   1008:      being unavailable.  This helps machines that have slow floating
                   1009:      point or memory load instructions by allowing other instructions
                   1010:      to be issued until the result of the load or floating point
                   1011:      instruction is required.
                   1012: 
                   1013: `-fschedule-insns2'
                   1014:      Similar to `-fschedule-insns', but requests an additional pass of
                   1015:      instruction scheduling after register allocation has been done. 
                   1016:      This is especially useful on machines with a relatively small
                   1017:      number of registers and where memory load instructions take more
                   1018:      than one cycle.
                   1019: 
1.1.1.3   root     1020: `-fcaller-saves'
                   1021:      Enable values to be allocated in registers that will be clobbered
                   1022:      by function calls, by emitting extra instructions to save and
                   1023:      restore the registers around such calls.  Such allocation is done
                   1024:      only when it seems to result in better code than would otherwise
                   1025:      be produced.
                   1026: 
                   1027:      This option is enabled by default on certain machines, usually
                   1028:      those which have no call-preserved registers to use instead.
                   1029: 
1.1       root     1030: `-funroll-loops'
1.1.1.3   root     1031:      Perform the optimization of loop unrolling.  This is only done for
                   1032:      loops whose number of iterations can be determined at compile time
                   1033:      or run time. `-funroll-loop' implies `-fstrength-reduce' and
1.1       root     1034:      `-frerun-cse-after-loop'.
                   1035: 
                   1036: `-funroll-all-loops'
                   1037:      Perform the optimization of loop unrolling.  This is done for all
                   1038:      loops and usually makes programs run more slowly. 
                   1039:      `-funroll-all-loops' implies `-fstrength-reduce' and
                   1040:      `-frerun-cse-after-loop'.
                   1041: 
                   1042: `-fno-peephole'
                   1043:      Disable any machine-specific peephole optimizations.
                   1044: 
                   1045: 
1.1.1.4 ! root     1046: File: gcc.info,  Node: Preprocessor Options,  Next: Assembler Options,  Prev: Optimize Options,  Up: Invoking GCC
1.1       root     1047: 
                   1048: Options Controlling the Preprocessor
                   1049: ====================================
                   1050: 
                   1051:    These options control the C preprocessor, which is run on each C
                   1052: source file before actual compilation.
                   1053: 
1.1.1.3   root     1054:    If you use the `-E' option, nothing is done except preprocessing.
1.1       root     1055: Some of these options make sense only together with `-E' because they
                   1056: cause the preprocessor output to be unsuitable for actual compilation.
                   1057: 
                   1058: `-include FILE'
1.1.1.3   root     1059:      Process FILE as input before processing the regular input file. In
                   1060:      effect, the contents of FILE are compiled first.  Any `-D' and
1.1       root     1061:      `-U' options on the command line are always processed before
                   1062:      `-include FILE', regardless of the order in which they are
                   1063:      written.  All the `-include' and `-imacros' options are processed
                   1064:      in the order in which they are written.
                   1065: 
                   1066: `-imacros FILE'
                   1067:      Process FILE as input, discarding the resulting output, before
                   1068:      processing the regular input file.  Because the output generated
                   1069:      from FILE is discarded, the only effect of `-imacros FILE' is to
                   1070:      make the macros defined in FILE available for use in the main
                   1071:      input.
                   1072: 
1.1.1.3   root     1073:      Any `-D' and `-U' options on the command line are always processed
                   1074:      before `-imacros FILE', regardless of the order in which they are
                   1075:      written.  All the `-include' and `-imacros' options are processed
                   1076:      in the order in which they are written.
1.1       root     1077: 
                   1078: `-nostdinc'
                   1079:      Do not search the standard system directories for header files. 
                   1080:      Only the directories you have specified with `-I' options (and the
                   1081:      current directory, if appropriate) are searched.  *Note Directory
                   1082:      Options::, for information on `-I'.
                   1083: 
1.1.1.3   root     1084:      By using both `-nostdinc' and `-I-', you can limit the include-file
                   1085:      search path to only those directories you specify explicitly.
                   1086: 
                   1087: `-nostdinc++'
                   1088:      Do not search for header files in the C++-specific standard
                   1089:      directories, but do still search the other standard directories.
                   1090:      (This option is used when building `libg++'.)
1.1       root     1091: 
                   1092: `-undef'
                   1093:      Do not predefine any nonstandard macros.  (Including architecture
                   1094:      flags).
                   1095: 
                   1096: `-E'
                   1097:      Run only the C preprocessor.  Preprocess all the C source files
                   1098:      specified and output the results to standard output or to the
                   1099:      specified output file.
                   1100: 
                   1101: `-C'
1.1.1.3   root     1102:      Tell the preprocessor not to discard comments.  Used with the `-E'
                   1103:      option.
1.1       root     1104: 
                   1105: `-P'
1.1.1.3   root     1106:      Tell the preprocessor not to generate `#line' commands. Used with
                   1107:      the `-E' option.
1.1       root     1108: 
                   1109: `-M'
                   1110:      Tell the preprocessor to output a rule suitable for `make'
                   1111:      describing the dependencies of each object file.  For each source
1.1.1.3   root     1112:      file, the preprocessor outputs one `make'-rule whose target is the
                   1113:      object file name for that source file and whose dependencies are
                   1114:      all the files `#include'd in it.  This rule may be a single line
                   1115:      or may be continued with `\'-newline if it is long.  The list of
                   1116:      rules is printed on standard output instead of the preprocessed C
                   1117:      program.
1.1       root     1118: 
                   1119:      `-M' implies `-E'.
                   1120: 
                   1121:      Another way to specify output of a `make' rule is by setting the
                   1122:      environment variable `DEPENDENCIES_OUTPUT' (*note Environment
                   1123:      Variables::.).
                   1124: 
                   1125: `-MM'
                   1126:      Like `-M' but the output mentions only the user header files
                   1127:      included with `#include "FILE"'.  System header files included
                   1128:      with `#include <FILE>' are omitted.
                   1129: 
                   1130: `-MD'
                   1131:      Like `-M' but the dependency information is written to files with
1.1.1.4 ! root     1132:      names made by replacing `.o' with `.d' at the end of the output
        !          1133:      file names.  This is in addition to compiling the input files as
1.1       root     1134:      specified--`-MD' does not inhibit ordinary compilation the way
                   1135:      `-M' does.
                   1136: 
                   1137:      The Mach utility `md' can be used to merge the `.d' files into a
                   1138:      single dependency file suitable for using with the `make' command.
                   1139: 
                   1140: `-MMD'
                   1141:      Like `-MD' except mention only user header files, not system
                   1142:      header files.
                   1143: 
                   1144: `-H'
                   1145:      Print the name of each header file used, in addition to other
                   1146:      normal activities.
                   1147: 
1.1.1.4 ! root     1148: `-AQUESTION(ANSWER)'
        !          1149:      Assert the answer ANSWER for QUESTION, in case it is tested with a
        !          1150:      preprocessor conditional such as `#if #QUESTION(ANSWER)'.  `-A-'
        !          1151:      disables the standard assertions that normally describe the target
        !          1152:      machine.
        !          1153: 
1.1       root     1154: `-DMACRO'
                   1155:      Define macro MACRO with the string `1' as its definition.
                   1156: 
                   1157: `-DMACRO=DEFN'
                   1158:      Define macro MACRO as DEFN.  All instances of `-D' on the command
                   1159:      line are processed before any `-U' options.
                   1160: 
                   1161: `-UMACRO'
                   1162:      Undefine macro MACRO.  `-U' options are evaluated after all `-D'
                   1163:      options, but before any `-include' and `-imacros' options.
                   1164: 
                   1165: `-dM'
                   1166:      Tell the preprocessor to output only a list of the macro
                   1167:      definitions that are in effect at the end of preprocessing.  Used
                   1168:      with the `-E' option.
                   1169: 
                   1170: `-dD'
                   1171:      Tell the preprocessing to pass all macro definitions into the
                   1172:      output, in their proper sequence in the rest of the output.
                   1173: 
                   1174: `-dN'
                   1175:      Like `-dD' except that the macro arguments and contents are
1.1.1.3   root     1176:      omitted. Only `#define NAME' is included in the output.
1.1       root     1177: 
                   1178: `-trigraphs'
                   1179:      Support ANSI C trigraphs.  You don't want to know about this
                   1180:      brain-damage.  The `-ansi' option also has this effect.
                   1181: 
                   1182: 
1.1.1.4 ! root     1183: File: gcc.info,  Node: Assembler Options,  Next: Link Options,  Prev: Preprocessor Options,  Up: Invoking GCC
1.1       root     1184: 
1.1.1.4 ! root     1185: Passing Options to the Assembler
        !          1186: ================================
1.1       root     1187: 
1.1.1.4 ! root     1188: `-Wa,OPTION'
        !          1189:      Pass OPTION as an option to the assembler.  If OPTION contains
        !          1190:      commas, it is split into multiple options at the commas.
1.1       root     1191: 
                   1192: 

unix.superglobalmegacorp.com

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