]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - gcc/doc/gcc.info-8
State of the tree after a full build and a debian/rules clean. Dirty orig.tar?
[msp430-gcc.git] / gcc / doc / gcc.info-8
diff --git a/gcc/doc/gcc.info-8 b/gcc/doc/gcc.info-8
deleted file mode 100644 (file)
index d90ff3e..0000000
+++ /dev/null
@@ -1,1286 +0,0 @@
-This is doc/gcc.info, produced by makeinfo version 4.5 from
-doc/gcc.texi.
-
-INFO-DIR-SECTION Programming
-START-INFO-DIR-ENTRY
-* gcc: (gcc).                  The GNU Compiler Collection.
-END-INFO-DIR-ENTRY
-   This file documents the use of the GNU compilers.
-
-   Published by the Free Software Foundation
-59 Temple Place - Suite 330
-Boston, MA 02111-1307 USA
-
-   Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-
-   Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1 or
-any later version published by the Free Software Foundation; with the
-Invariant Sections being "GNU General Public License" and "Funding Free
-Software", the Front-Cover texts being (a) (see below), and with the
-Back-Cover Texts being (b) (see below).  A copy of the license is
-included in the section entitled "GNU Free Documentation License".
-
-   (a) The FSF's Front-Cover Text is:
-
-   A GNU Manual
-
-   (b) The FSF's Back-Cover Text is:
-
-   You have freedom to copy and modify this GNU Manual, like GNU
-software.  Copies published by the Free Software Foundation raise
-funds for GNU development.
-
-\1f
-File: gcc.info,  Node: MIPS Options,  Next: i386 and x86-64 Options,  Prev: RT Options,  Up: Submodel Options
-
-MIPS Options
-------------
-
-   These `-m' options are defined for the MIPS family of computers:
-
-`-march=CPU-TYPE'
-     Assume the defaults for the machine type CPU-TYPE when generating
-     instructions.  The choices for CPU-TYPE are  `r2000', `r3000',
-     `r3900', `r4000', `r4100', `r4300', `r4400', `r4600', `r4650',
-     `r5000', `r6000', `r8000', and `orion'.  Additionally, the
-     `r2000', `r3000', `r4000', `r5000', and `r6000' can be abbreviated
-     as `r2k' (or `r2K'), `r3k', etc.
-
-`-mtune=CPU-TYPE'
-     Assume the defaults for the machine type CPU-TYPE when scheduling
-     instructions.  The choices for CPU-TYPE are `r2000', `r3000',
-     `r3900', `r4000', `r4100', `r4300', `r4400', `r4600', `r4650',
-     `r5000', `r6000', `r8000', and `orion'.  Additionally, the
-     `r2000', `r3000', `r4000', `r5000', and `r6000' can be abbreviated
-     as `r2k' (or `r2K'), `r3k', etc.  While picking a specific
-     CPU-TYPE will schedule things appropriately for that particular
-     chip, the compiler will not generate any code that does not meet
-     level 1 of the MIPS ISA (instruction set architecture) without a
-     `-mipsX' or `-mabi' switch being used.
-
-`-mcpu=CPU-TYPE'
-     This is identical to specifying both `-march' and `-mtune'.
-
-`-mips1'
-     Issue instructions from level 1 of the MIPS ISA.  This is the
-     default.  `r3000' is the default CPU-TYPE at this ISA level.
-
-`-mips2'
-     Issue instructions from level 2 of the MIPS ISA (branch likely,
-     square root instructions).  `r6000' is the default CPU-TYPE at this
-     ISA level.
-
-`-mips3'
-     Issue instructions from level 3 of the MIPS ISA (64-bit
-     instructions).  `r4000' is the default CPU-TYPE at this ISA level.
-
-`-mips4'
-     Issue instructions from level 4 of the MIPS ISA (conditional move,
-     prefetch, enhanced FPU instructions).  `r8000' is the default
-     CPU-TYPE at this ISA level.
-
-`-mfp32'
-     Assume that 32 32-bit floating point registers are available.
-     This is the default.
-
-`-mfp64'
-     Assume that 32 64-bit floating point registers are available.
-     This is the default when the `-mips3' option is used.
-
-`-mfused-madd'
-`-mno-fused-madd'
-     Generate code that uses (does not use) the floating point multiply
-     and accumulate instructions, when they are available.  These
-     instructions are generated by default if they are available, but
-     this may be undesirable if the extra precision causes problems or
-     on certain chips in the mode where denormals are rounded to zero
-     where denormals generated by multiply and accumulate instructions
-     cause exceptions anyway.
-
-`-mgp32'
-     Assume that 32 32-bit general purpose registers are available.
-     This is the default.
-
-`-mgp64'
-     Assume that 32 64-bit general purpose registers are available.
-     This is the default when the `-mips3' option is used.
-
-`-mint64'
-     Force int and long types to be 64 bits wide.  See `-mlong32' for an
-     explanation of the default, and the width of pointers.
-
-`-mlong64'
-     Force long types to be 64 bits wide.  See `-mlong32' for an
-     explanation of the default, and the width of pointers.
-
-`-mlong32'
-     Force long, int, and pointer types to be 32 bits wide.
-
-     If none of `-mlong32', `-mlong64', or `-mint64' are set, the size
-     of ints, longs, and pointers depends on the ABI and ISA chosen.
-     For `-mabi=32', and `-mabi=n32', ints and longs are 32 bits wide.
-     For `-mabi=64', ints are 32 bits, and longs are 64 bits wide.  For
-     `-mabi=eabi' and either `-mips1' or `-mips2', ints and longs are
-     32 bits wide.  For `-mabi=eabi' and higher ISAs, ints are 32 bits,
-     and longs are 64 bits wide.  The width of pointer types is the
-     smaller of the width of longs or the width of general purpose
-     registers (which in turn depends on the ISA).
-
-`-mabi=32'
-`-mabi=o64'
-`-mabi=n32'
-`-mabi=64'
-`-mabi=eabi'
-     Generate code for the indicated ABI.  The default instruction
-     level is `-mips1' for `32', `-mips3' for `n32', and `-mips4'
-     otherwise.  Conversely, with `-mips1' or `-mips2', the default ABI
-     is `32'; otherwise, the default ABI is `64'.
-
-`-mmips-as'
-     Generate code for the MIPS assembler, and invoke `mips-tfile' to
-     add normal debug information.  This is the default for all
-     platforms except for the OSF/1 reference platform, using the
-     OSF/rose object format.  If the either of the `-gstabs' or
-     `-gstabs+' switches are used, the `mips-tfile' program will
-     encapsulate the stabs within MIPS ECOFF.
-
-`-mgas'
-     Generate code for the GNU assembler.  This is the default on the
-     OSF/1 reference platform, using the OSF/rose object format.  Also,
-     this is the default if the configure option `--with-gnu-as' is
-     used.
-
-`-msplit-addresses'
-`-mno-split-addresses'
-     Generate code to load the high and low parts of address constants
-     separately.  This allows GCC to optimize away redundant loads of
-     the high order bits of addresses.  This optimization requires GNU
-     as and GNU ld.  This optimization is enabled by default for some
-     embedded targets where GNU as and GNU ld are standard.
-
-`-mrnames'
-`-mno-rnames'
-     The `-mrnames' switch says to output code using the MIPS software
-     names for the registers, instead of the hardware names (ie, A0
-     instead of $4).  The only known assembler that supports this option
-     is the Algorithmics assembler.
-
-`-mgpopt'
-`-mno-gpopt'
-     The `-mgpopt' switch says to write all of the data declarations
-     before the instructions in the text section, this allows the MIPS
-     assembler to generate one word memory references instead of using
-     two words for short global or static data items.  This is on by
-     default if optimization is selected.
-
-`-mstats'
-`-mno-stats'
-     For each non-inline function processed, the `-mstats' switch
-     causes the compiler to emit one line to the standard error file to
-     print statistics about the program (number of registers saved,
-     stack size, etc.).
-
-`-mmemcpy'
-`-mno-memcpy'
-     The `-mmemcpy' switch makes all block moves call the appropriate
-     string function (`memcpy' or `bcopy') instead of possibly
-     generating inline code.
-
-`-mmips-tfile'
-`-mno-mips-tfile'
-     The `-mno-mips-tfile' switch causes the compiler not postprocess
-     the object file with the `mips-tfile' program, after the MIPS
-     assembler has generated it to add debug support.  If `mips-tfile'
-     is not run, then no local variables will be available to the
-     debugger.  In addition, `stage2' and `stage3' objects will have
-     the temporary file names passed to the assembler embedded in the
-     object file, which means the objects will not compare the same.
-     The `-mno-mips-tfile' switch should only be used when there are
-     bugs in the `mips-tfile' program that prevents compilation.
-
-`-msoft-float'
-     Generate output containing library calls for floating point.
-     *Warning:* the requisite libraries are not part of GCC.  Normally
-     the facilities of the machine's usual C compiler are used, but
-     this can't be done directly in cross-compilation.  You must make
-     your own arrangements to provide suitable library functions for
-     cross-compilation.
-
-`-mhard-float'
-     Generate output containing floating point instructions.  This is
-     the default if you use the unmodified sources.
-
-`-mabicalls'
-`-mno-abicalls'
-     Emit (or do not emit) the pseudo operations `.abicalls',
-     `.cpload', and `.cprestore' that some System V.4 ports use for
-     position independent code.
-
-`-mlong-calls'
-`-mno-long-calls'
-     Do all calls with the `JALR' instruction, which requires loading
-     up a function's address into a register before the call.  You need
-     to use this switch, if you call outside of the current 512
-     megabyte segment to functions that are not through pointers.
-
-`-mhalf-pic'
-`-mno-half-pic'
-     Put pointers to extern references into the data section and load
-     them up, rather than put the references in the text section.
-
-`-membedded-pic'
-`-mno-embedded-pic'
-     Generate PIC code suitable for some embedded systems.  All calls
-     are made using PC relative address, and all data is addressed
-     using the $gp register.  No more than 65536 bytes of global data
-     may be used.  This requires GNU as and GNU ld which do most of the
-     work.  This currently only works on targets which use ECOFF; it
-     does not work with ELF.
-
-`-membedded-data'
-`-mno-embedded-data'
-     Allocate variables to the read-only data section first if
-     possible, then next in the small data section if possible,
-     otherwise in data.  This gives slightly slower code than the
-     default, but reduces the amount of RAM required when executing,
-     and thus may be preferred for some embedded systems.
-
-`-muninit-const-in-rodata'
-`-mno-uninit-const-in-rodata'
-     When used together with `-membedded-data', it will always store
-     uninitialized const variables in the read-only data section.
-
-`-msingle-float'
-`-mdouble-float'
-     The `-msingle-float' switch tells gcc to assume that the floating
-     point coprocessor only supports single precision operations, as on
-     the `r4650' chip.  The `-mdouble-float' switch permits gcc to use
-     double precision operations.  This is the default.
-
-`-mmad'
-`-mno-mad'
-     Permit use of the `mad', `madu' and `mul' instructions, as on the
-     `r4650' chip.
-
-`-m4650'
-     Turns on `-msingle-float', `-mmad', and, at least for now,
-     `-mcpu=r4650'.
-
-`-mips16'
-`-mno-mips16'
-     Enable 16-bit instructions.
-
-`-mentry'
-     Use the entry and exit pseudo ops.  This option can only be used
-     with `-mips16'.
-
-`-EL'
-     Compile code for the processor in little endian mode.  The
-     requisite libraries are assumed to exist.
-
-`-EB'
-     Compile code for the processor in big endian mode.  The requisite
-     libraries are assumed to exist.
-
-`-G NUM'
-     Put global and static items less than or equal to NUM bytes into
-     the small data or bss sections instead of the normal data or bss
-     section.  This allows the assembler to emit one word memory
-     reference instructions based on the global pointer (GP or $28),
-     instead of the normal two words used.  By default, NUM is 8 when
-     the MIPS assembler is used, and 0 when the GNU assembler is used.
-     The `-G NUM' switch is also passed to the assembler and linker.
-     All modules should be compiled with the same `-G NUM' value.
-
-`-nocpp'
-     Tell the MIPS assembler to not run its preprocessor over user
-     assembler files (with a `.s' suffix) when assembling them.
-
-`-mfix7000'
-     Pass an option to gas which will cause nops to be inserted if the
-     read of the destination register of an mfhi or mflo instruction
-     occurs in the following two instructions.
-
-`-no-crt0'
-     Do not include the default crt0.
-
-`-mflush-func=FUNC'
-`-mno-flush-func'
-     Specifies the function to call to flush the I and D caches, or to
-     not call any such function.  If called, the function must take the
-     same arguments as the common `_flush_func()', that is, the address
-     of the memory range for which the cache is being flushed, the size
-     of the memory range, and the number 3 (to flush both caches).  The
-     default depends on the target gcc was configured for, but commonly
-     is either `_flush_func' or `__cpu_flush'.
-
-   These options are defined by the macro `TARGET_SWITCHES' in the
-machine description.  The default for the options is also defined by
-that macro, which enables you to change the defaults.
-
-\1f
-File: gcc.info,  Node: i386 and x86-64 Options,  Next: HPPA Options,  Prev: MIPS Options,  Up: Submodel Options
-
-Intel 386 and AMD x86-64 Options
---------------------------------
-
-   These `-m' options are defined for the i386 and x86-64 family of
-computers:
-
-`-mcpu=CPU-TYPE'
-     Tune to CPU-TYPE everything applicable about the generated code,
-     except for the ABI and the set of available instructions.  The
-     choices for CPU-TYPE are `i386', `i486', `i586', `i686',
-     `pentium', `pentium-mmx', `pentiumpro', `pentium2', `pentium3',
-     `pentium4', `k6', `k6-2', `k6-3', `athlon', `athlon-tbird',
-     `athlon-4', `athlon-xp' and `athlon-mp'.
-
-     While picking a specific CPU-TYPE will schedule things
-     appropriately for that particular chip, the compiler will not
-     generate any code that does not run on the i386 without the
-     `-march=CPU-TYPE' option being used.  `i586' is equivalent to
-     `pentium' and `i686' is equivalent to `pentiumpro'.  `k6' and
-     `athlon' are the AMD chips as opposed to the Intel ones.
-
-`-march=CPU-TYPE'
-     Generate instructions for the machine type CPU-TYPE.  The choices
-     for CPU-TYPE are the same as for `-mcpu'.  Moreover, specifying
-     `-march=CPU-TYPE' implies `-mcpu=CPU-TYPE'.
-
-`-m386'
-`-m486'
-`-mpentium'
-`-mpentiumpro'
-     These options are synonyms for `-mcpu=i386', `-mcpu=i486',
-     `-mcpu=pentium', and `-mcpu=pentiumpro' respectively.  These
-     synonyms are deprecated.
-
-`-mfpmath=UNIT'
-     generate floating point arithmetics for selected unit UNIT.  the
-     choices for UNIT are:
-
-    `387'
-          Use the standard 387 floating point coprocessor present
-          majority of chips and emulated otherwise.  Code compiled with
-          this option will run almost everywhere.  The temporary
-          results are computed in 80bit precesion instead of precision
-          specified by the type resulting in slightly different results
-          compared to most of other chips. See `-ffloat-store' for more
-          detailed description.
-
-          This is the default choice for i386 compiler.
-
-    `sse'
-          Use scalar floating point instructions present in the SSE
-          instruction set.  This instruction set is supported by
-          Pentium3 and newer chips, in the AMD line by Athlon-4,
-          Athlon-xp and Athlon-mp chips.  The earlier version of SSE
-          instruction set supports only single precision arithmetics,
-          thus the double and extended precision arithmetics is still
-          done using 387.  Later version, present only in Pentium4 and
-          the future AMD x86-64 chips supports double precision
-          arithmetics too.
-
-          For i387 you need to use `-march=CPU-TYPE', `-msse' or
-          `-msse2' switches to enable SSE extensions and make this
-          option effective.  For x86-64 compiler, these extensions are
-          enabled by default.
-
-          The resulting code should be considerably faster in majority
-          of cases and avoid the numerical instability problems of 387
-          code, but may break some existing code that expects
-          temporaries to be 80bit.
-
-          This is the default choice for x86-64 compiler.
-
-    `sse,387'
-          Attempt to utilize both instruction sets at once.  This
-          effectivly double the amount of available registers and on
-          chips with separate execution units for 387 and SSE the
-          execution resources too.  Use this option with care, as it is
-          still experimental, because gcc register allocator does not
-          model separate functional units well resulting in instable
-          performance.
-
-`-masm=DIALECT'
-     Output asm instructions using selected DIALECT. Supported choices
-     are `intel' or `att' (the default one).
-
-`-mieee-fp'
-`-mno-ieee-fp'
-     Control whether or not the compiler uses IEEE floating point
-     comparisons.  These handle correctly the case where the result of a
-     comparison is unordered.
-
-`-msoft-float'
-     Generate output containing library calls for floating point.
-     *Warning:* the requisite libraries are not part of GCC.  Normally
-     the facilities of the machine's usual C compiler are used, but
-     this can't be done directly in cross-compilation.  You must make
-     your own arrangements to provide suitable library functions for
-     cross-compilation.
-
-     On machines where a function returns floating point results in the
-     80387 register stack, some floating point opcodes may be emitted
-     even if `-msoft-float' is used.
-
-`-mno-fp-ret-in-387'
-     Do not use the FPU registers for return values of functions.
-
-     The usual calling convention has functions return values of types
-     `float' and `double' in an FPU register, even if there is no FPU.
-     The idea is that the operating system should emulate an FPU.
-
-     The option `-mno-fp-ret-in-387' causes such values to be returned
-     in ordinary CPU registers instead.
-
-`-mno-fancy-math-387'
-     Some 387 emulators do not support the `sin', `cos' and `sqrt'
-     instructions for the 387.  Specify this option to avoid generating
-     those instructions.  This option is the default on FreeBSD,
-     OpenBSD and NetBSD.  This option is overridden when `-march'
-     indicates that the target cpu will always have an FPU and so the
-     instruction will not need emulation.  As of revision 2.6.1, these
-     instructions are not generated unless you also use the
-     `-funsafe-math-optimizations' switch.
-
-`-malign-double'
-`-mno-align-double'
-     Control whether GCC aligns `double', `long double', and `long
-     long' variables on a two word boundary or a one word boundary.
-     Aligning `double' variables on a two word boundary will produce
-     code that runs somewhat faster on a `Pentium' at the expense of
-     more memory.
-
-     *Warning:* if you use the `-malign-double' switch, structures
-     containing the above types will be aligned differently than the
-     published application binary interface specifications for the 386
-     and will not be binary compatible with structures in code compiled
-     without that switch.
-
-`-m128bit-long-double'
-     Control the size of `long double' type. i386 application binary
-     interface specify the size to be 12 bytes, while modern
-     architectures (Pentium and newer) prefer `long double' aligned to
-     8 or 16 byte boundary.  This is impossible to reach with 12 byte
-     long doubles in the array accesses.
-
-     *Warning:* if you use the `-m128bit-long-double' switch, the
-     structures and arrays containing `long double' will change their
-     size as well as function calling convention for function taking
-     `long double' will be modified.
-
-`-m96bit-long-double'
-     Set the size of `long double' to 96 bits as required by the i386
-     application binary interface.  This is the default.
-
-`-msvr3-shlib'
-`-mno-svr3-shlib'
-     Control whether GCC places uninitialized local variables into the
-     `bss' or `data' segments.  `-msvr3-shlib' places them into `bss'.
-     These options are meaningful only on System V Release 3.
-
-`-mrtd'
-     Use a different function-calling convention, in which functions
-     that take a fixed number of arguments return with the `ret' NUM
-     instruction, which pops their arguments while returning.  This
-     saves one instruction in the caller since there is no need to pop
-     the arguments there.
-
-     You can specify that an individual function is called with this
-     calling sequence with the function attribute `stdcall'.  You can
-     also override the `-mrtd' option by using the function attribute
-     `cdecl'.  *Note Function Attributes::.
-
-     *Warning:* this calling convention is incompatible with the one
-     normally used on Unix, so you cannot use it if you need to call
-     libraries compiled with the Unix compiler.
-
-     Also, you must provide function prototypes for all functions that
-     take variable numbers of arguments (including `printf'); otherwise
-     incorrect code will be generated for calls to those functions.
-
-     In addition, seriously incorrect code will result if you call a
-     function with too many arguments.  (Normally, extra arguments are
-     harmlessly ignored.)
-
-`-mregparm=NUM'
-     Control how many registers are used to pass integer arguments.  By
-     default, no registers are used to pass arguments, and at most 3
-     registers can be used.  You can control this behavior for a
-     specific function by using the function attribute `regparm'.
-     *Note Function Attributes::.
-
-     *Warning:* if you use this switch, and NUM is nonzero, then you
-     must build all modules with the same value, including any
-     libraries.  This includes the system libraries and startup modules.
-
-`-mpreferred-stack-boundary=NUM'
-     Attempt to keep the stack boundary aligned to a 2 raised to NUM
-     byte boundary.  If `-mpreferred-stack-boundary' is not specified,
-     the default is 4 (16 bytes or 128 bits), except when optimizing
-     for code size (`-Os'), in which case the default is the minimum
-     correct alignment (4 bytes for x86, and 8 bytes for x86-64).
-
-     On Pentium and PentiumPro, `double' and `long double' values
-     should be aligned to an 8 byte boundary (see `-malign-double') or
-     suffer significant run time performance penalties.  On Pentium
-     III, the Streaming SIMD Extension (SSE) data type `__m128' suffers
-     similar penalties if it is not 16 byte aligned.
-
-     To ensure proper alignment of this values on the stack, the stack
-     boundary must be as aligned as that required by any value stored
-     on the stack.  Further, every function must be generated such that
-     it keeps the stack aligned.  Thus calling a function compiled with
-     a higher preferred stack boundary from a function compiled with a
-     lower preferred stack boundary will most likely misalign the
-     stack.  It is recommended that libraries that use callbacks always
-     use the default setting.
-
-     This extra alignment does consume extra stack space, and generally
-     increases code size.  Code that is sensitive to stack space usage,
-     such as embedded systems and operating system kernels, may want to
-     reduce the preferred alignment to `-mpreferred-stack-boundary=2'.
-
-`-mmmx'
-`-mno-mmx'
-
-`-msse'
-`-mno-sse'
-
-`-msse2'
-`-mno-sse2'
-
-`-m3dnow'
-`-mno-3dnow'
-     These switches enable or disable the use of built-in functions
-     that allow direct access to the MMX, SSE and 3Dnow extensions of
-     the instruction set.
-
-     *Note X86 Built-in Functions::, for details of the functions
-     enabled and disabled by these switches.
-
-     To have SSE/SSE2 instructions generated automatically from
-     floating-point code, see `-mfpmath=sse'.
-
-`-mpush-args'
-`-mno-push-args'
-     Use PUSH operations to store outgoing parameters.  This method is
-     shorter and usually equally fast as method using SUB/MOV
-     operations and is enabled by default.  In some cases disabling it
-     may improve performance because of improved scheduling and reduced
-     dependencies.
-
-`-maccumulate-outgoing-args'
-     If enabled, the maximum amount of space required for outgoing
-     arguments will be computed in the function prologue.  This is
-     faster on most modern CPUs because of reduced dependencies,
-     improved scheduling and reduced stack usage when preferred stack
-     boundary is not equal to 2.  The drawback is a notable increase in
-     code size.  This switch implies `-mno-push-args'.
-
-`-mthreads'
-     Support thread-safe exception handling on `Mingw32'.  Code that
-     relies on thread-safe exception handling must compile and link all
-     code with the `-mthreads' option.  When compiling, `-mthreads'
-     defines `-D_MT'; when linking, it links in a special thread helper
-     library `-lmingwthrd' which cleans up per thread exception
-     handling data.
-
-`-mno-align-stringops'
-     Do not align destination of inlined string operations.  This
-     switch reduces code size and improves performance in case the
-     destination is already aligned, but gcc don't know about it.
-
-`-minline-all-stringops'
-     By default GCC inlines string operations only when destination is
-     known to be aligned at least to 4 byte boundary.  This enables
-     more inlining, increase code size, but may improve performance of
-     code that depends on fast memcpy, strlen and memset for short
-     lengths.
-
-`-momit-leaf-frame-pointer'
-     Don't keep the frame pointer in a register for leaf functions.
-     This avoids the instructions to save, set up and restore frame
-     pointers and makes an extra register available in leaf functions.
-     The option `-fomit-frame-pointer' removes the frame pointer for
-     all functions which might make debugging harder.
-
-   These `-m' switches are supported in addition to the above on AMD
-x86-64 processors in 64-bit environments.
-
-`-m32'
-`-m64'
-     Generate code for a 32-bit or 64-bit environment.  The 32-bit
-     environment sets int, long and pointer to 32 bits and generates
-     code that runs on any i386 system.  The 64-bit environment sets
-     int to 32 bits and long and pointer to 64 bits and generates code
-     for AMD's x86-64 architecture.
-
-`-mno-red-zone'
-     Do not use a so called red zone for x86-64 code.  The red zone is
-     mandated by the x86-64 ABI, it is a 128-byte area beyond the
-     location of the stack pointer that will not be modified by signal
-     or interrupt handlers and therefore can be used for temporary data
-     without adjusting the stack pointer.  The flag `-mno-red-zone'
-     disables this red zone.
-
-`-mcmodel=small'
-     Generate code for the small code model: the program and its
-     symbols must be linked in the lower 2 GB of the address space.
-     Pointers are 64 bits.  Programs can be statically or dynamically
-     linked.  This is the default code model.
-
-`-mcmodel=kernel'
-     Generate code for the kernel code model.  The kernel runs in the
-     negative 2 GB of the address space.  This model has to be used for
-     Linux kernel code.
-
-`-mcmodel=medium'
-     Generate code for the medium model: The program is linked in the
-     lower 2 GB of the address space but symbols can be located
-     anywhere in the address space.  Programs can be statically or
-     dynamically linked, but building of shared libraries are not
-     supported with the medium model.
-
-`-mcmodel=large'
-     Generate code for the large model: This model makes no assumptions
-     about addresses and sizes of sections.  Currently GCC does not
-     implement this model.
-
-\1f
-File: gcc.info,  Node: HPPA Options,  Next: Intel 960 Options,  Prev: i386 and x86-64 Options,  Up: Submodel Options
-
-HPPA Options
-------------
-
-   These `-m' options are defined for the HPPA family of computers:
-
-`-march=ARCHITECTURE-TYPE'
-     Generate code for the specified architecture.  The choices for
-     ARCHITECTURE-TYPE are `1.0' for PA 1.0, `1.1' for PA 1.1, and
-     `2.0' for PA 2.0 processors.  Refer to `/usr/lib/sched.models' on
-     an HP-UX system to determine the proper architecture option for
-     your machine.  Code compiled for lower numbered architectures will
-     run on higher numbered architectures, but not the other way around.
-
-     PA 2.0 support currently requires gas snapshot 19990413 or later.
-     The next release of binutils (current is 2.9.1) will probably
-     contain PA 2.0 support.
-
-`-mpa-risc-1-0'
-`-mpa-risc-1-1'
-`-mpa-risc-2-0'
-     Synonyms for `-march=1.0', `-march=1.1', and `-march=2.0'
-     respectively.
-
-`-mbig-switch'
-     Generate code suitable for big switch tables.  Use this option
-     only if the assembler/linker complain about out of range branches
-     within a switch table.
-
-`-mjump-in-delay'
-     Fill delay slots of function calls with unconditional jump
-     instructions by modifying the return pointer for the function call
-     to be the target of the conditional jump.
-
-`-mdisable-fpregs'
-     Prevent floating point registers from being used in any manner.
-     This is necessary for compiling kernels which perform lazy context
-     switching of floating point registers.  If you use this option and
-     attempt to perform floating point operations, the compiler will
-     abort.
-
-`-mdisable-indexing'
-     Prevent the compiler from using indexing address modes.  This
-     avoids some rather obscure problems when compiling MIG generated
-     code under MACH.
-
-`-mno-space-regs'
-     Generate code that assumes the target has no space registers.
-     This allows GCC to generate faster indirect calls and use unscaled
-     index address modes.
-
-     Such code is suitable for level 0 PA systems and kernels.
-
-`-mfast-indirect-calls'
-     Generate code that assumes calls never cross space boundaries.
-     This allows GCC to emit code which performs faster indirect calls.
-
-     This option will not work in the presence of shared libraries or
-     nested functions.
-
-`-mlong-load-store'
-     Generate 3-instruction load and store sequences as sometimes
-     required by the HP-UX 10 linker.  This is equivalent to the `+k'
-     option to the HP compilers.
-
-`-mportable-runtime'
-     Use the portable calling conventions proposed by HP for ELF
-     systems.
-
-`-mgas'
-     Enable the use of assembler directives only GAS understands.
-
-`-mschedule=CPU-TYPE'
-     Schedule code according to the constraints for the machine type
-     CPU-TYPE.  The choices for CPU-TYPE are `700' `7100', `7100LC',
-     `7200', and `8000'.  Refer to `/usr/lib/sched.models' on an HP-UX
-     system to determine the proper scheduling option for your machine.
-
-`-mlinker-opt'
-     Enable the optimization pass in the HPUX linker.  Note this makes
-     symbolic debugging impossible.  It also triggers a bug in the HPUX
-     8 and HPUX 9 linkers in which they give bogus error messages when
-     linking some programs.
-
-`-msoft-float'
-     Generate output containing library calls for floating point.
-     *Warning:* the requisite libraries are not available for all HPPA
-     targets.  Normally the facilities of the machine's usual C
-     compiler are used, but this cannot be done directly in
-     cross-compilation.  You must make your own arrangements to provide
-     suitable library functions for cross-compilation.  The embedded
-     target `hppa1.1-*-pro' does provide software floating point
-     support.
-
-     `-msoft-float' changes the calling convention in the output file;
-     therefore, it is only useful if you compile _all_ of a program with
-     this option.  In particular, you need to compile `libgcc.a', the
-     library that comes with GCC, with `-msoft-float' in order for this
-     to work.
-
-\1f
-File: gcc.info,  Node: Intel 960 Options,  Next: DEC Alpha Options,  Prev: HPPA Options,  Up: Submodel Options
-
-Intel 960 Options
------------------
-
-   These `-m' options are defined for the Intel 960 implementations:
-
-`-mCPU-TYPE'
-     Assume the defaults for the machine type CPU-TYPE for some of the
-     other options, including instruction scheduling, floating point
-     support, and addressing modes.  The choices for CPU-TYPE are `ka',
-     `kb', `mc', `ca', `cf', `sa', and `sb'.  The default is `kb'.
-
-`-mnumerics'
-`-msoft-float'
-     The `-mnumerics' option indicates that the processor does support
-     floating-point instructions.  The `-msoft-float' option indicates
-     that floating-point support should not be assumed.
-
-`-mleaf-procedures'
-`-mno-leaf-procedures'
-     Do (or do not) attempt to alter leaf procedures to be callable
-     with the `bal' instruction as well as `call'.  This will result in
-     more efficient code for explicit calls when the `bal' instruction
-     can be substituted by the assembler or linker, but less efficient
-     code in other cases, such as calls via function pointers, or using
-     a linker that doesn't support this optimization.
-
-`-mtail-call'
-`-mno-tail-call'
-     Do (or do not) make additional attempts (beyond those of the
-     machine-independent portions of the compiler) to optimize
-     tail-recursive calls into branches.  You may not want to do this
-     because the detection of cases where this is not valid is not
-     totally complete.  The default is `-mno-tail-call'.
-
-`-mcomplex-addr'
-`-mno-complex-addr'
-     Assume (or do not assume) that the use of a complex addressing
-     mode is a win on this implementation of the i960.  Complex
-     addressing modes may not be worthwhile on the K-series, but they
-     definitely are on the C-series.  The default is currently
-     `-mcomplex-addr' for all processors except the CB and CC.
-
-`-mcode-align'
-`-mno-code-align'
-     Align code to 8-byte boundaries for faster fetching (or don't
-     bother).  Currently turned on by default for C-series
-     implementations only.
-
-`-mic-compat'
-`-mic2.0-compat'
-`-mic3.0-compat'
-     Enable compatibility with iC960 v2.0 or v3.0.
-
-`-masm-compat'
-`-mintel-asm'
-     Enable compatibility with the iC960 assembler.
-
-`-mstrict-align'
-`-mno-strict-align'
-     Do not permit (do permit) unaligned accesses.
-
-`-mold-align'
-     Enable structure-alignment compatibility with Intel's gcc release
-     version 1.3 (based on gcc 1.37).  This option implies
-     `-mstrict-align'.
-
-`-mlong-double-64'
-     Implement type `long double' as 64-bit floating point numbers.
-     Without the option `long double' is implemented by 80-bit floating
-     point numbers.  The only reason we have it because there is no
-     128-bit `long double' support in `fp-bit.c' yet.  So it is only
-     useful for people using soft-float targets.  Otherwise, we should
-     recommend against use of it.
-
-
-\1f
-File: gcc.info,  Node: DEC Alpha Options,  Next: DEC Alpha/VMS Options,  Prev: Intel 960 Options,  Up: Submodel Options
-
-DEC Alpha Options
------------------
-
-   These `-m' options are defined for the DEC Alpha implementations:
-
-`-mno-soft-float'
-`-msoft-float'
-     Use (do not use) the hardware floating-point instructions for
-     floating-point operations.  When `-msoft-float' is specified,
-     functions in `libgcc.a' will be used to perform floating-point
-     operations.  Unless they are replaced by routines that emulate the
-     floating-point operations, or compiled in such a way as to call
-     such emulations routines, these routines will issue floating-point
-     operations.   If you are compiling for an Alpha without
-     floating-point operations, you must ensure that the library is
-     built so as not to call them.
-
-     Note that Alpha implementations without floating-point operations
-     are required to have floating-point registers.
-
-`-mfp-reg'
-`-mno-fp-regs'
-     Generate code that uses (does not use) the floating-point register
-     set.  `-mno-fp-regs' implies `-msoft-float'.  If the floating-point
-     register set is not used, floating point operands are passed in
-     integer registers as if they were integers and floating-point
-     results are passed in `$0' instead of `$f0'.  This is a
-     non-standard calling sequence, so any function with a
-     floating-point argument or return value called by code compiled
-     with `-mno-fp-regs' must also be compiled with that option.
-
-     A typical use of this option is building a kernel that does not
-     use, and hence need not save and restore, any floating-point
-     registers.
-
-`-mieee'
-     The Alpha architecture implements floating-point hardware
-     optimized for maximum performance.  It is mostly compliant with
-     the IEEE floating point standard.  However, for full compliance,
-     software assistance is required.  This option generates code fully
-     IEEE compliant code _except_ that the INEXACT-FLAG is not
-     maintained (see below).  If this option is turned on, the
-     preprocessor macro `_IEEE_FP' is defined during compilation.  The
-     resulting code is less efficient but is able to correctly support
-     denormalized numbers and exceptional IEEE values such as
-     not-a-number and plus/minus infinity.  Other Alpha compilers call
-     this option `-ieee_with_no_inexact'.
-
-`-mieee-with-inexact'
-     This is like `-mieee' except the generated code also maintains the
-     IEEE INEXACT-FLAG.  Turning on this option causes the generated
-     code to implement fully-compliant IEEE math.  In addition to
-     `_IEEE_FP', `_IEEE_FP_EXACT' is defined as a preprocessor macro.
-     On some Alpha implementations the resulting code may execute
-     significantly slower than the code generated by default.  Since
-     there is very little code that depends on the INEXACT-FLAG, you
-     should normally not specify this option.  Other Alpha compilers
-     call this option `-ieee_with_inexact'.
-
-`-mfp-trap-mode=TRAP-MODE'
-     This option controls what floating-point related traps are enabled.
-     Other Alpha compilers call this option `-fptm TRAP-MODE'.  The
-     trap mode can be set to one of four values:
-
-    `n'
-          This is the default (normal) setting.  The only traps that
-          are enabled are the ones that cannot be disabled in software
-          (e.g., division by zero trap).
-
-    `u'
-          In addition to the traps enabled by `n', underflow traps are
-          enabled as well.
-
-    `su'
-          Like `su', but the instructions are marked to be safe for
-          software completion (see Alpha architecture manual for
-          details).
-
-    `sui'
-          Like `su', but inexact traps are enabled as well.
-
-`-mfp-rounding-mode=ROUNDING-MODE'
-     Selects the IEEE rounding mode.  Other Alpha compilers call this
-     option `-fprm ROUNDING-MODE'.  The ROUNDING-MODE can be one of:
-
-    `n'
-          Normal IEEE rounding mode.  Floating point numbers are
-          rounded towards the nearest machine number or towards the
-          even machine number in case of a tie.
-
-    `m'
-          Round towards minus infinity.
-
-    `c'
-          Chopped rounding mode.  Floating point numbers are rounded
-          towards zero.
-
-    `d'
-          Dynamic rounding mode.  A field in the floating point control
-          register (FPCR, see Alpha architecture reference manual)
-          controls the rounding mode in effect.  The C library
-          initializes this register for rounding towards plus infinity.
-          Thus, unless your program modifies the FPCR, `d' corresponds
-          to round towards plus infinity.
-
-`-mtrap-precision=TRAP-PRECISION'
-     In the Alpha architecture, floating point traps are imprecise.
-     This means without software assistance it is impossible to recover
-     from a floating trap and program execution normally needs to be
-     terminated.  GCC can generate code that can assist operating
-     system trap handlers in determining the exact location that caused
-     a floating point trap.  Depending on the requirements of an
-     application, different levels of precisions can be selected:
-
-    `p'
-          Program precision.  This option is the default and means a
-          trap handler can only identify which program caused a
-          floating point exception.
-
-    `f'
-          Function precision.  The trap handler can determine the
-          function that caused a floating point exception.
-
-    `i'
-          Instruction precision.  The trap handler can determine the
-          exact instruction that caused a floating point exception.
-
-     Other Alpha compilers provide the equivalent options called
-     `-scope_safe' and `-resumption_safe'.
-
-`-mieee-conformant'
-     This option marks the generated code as IEEE conformant.  You must
-     not use this option unless you also specify `-mtrap-precision=i'
-     and either `-mfp-trap-mode=su' or `-mfp-trap-mode=sui'.  Its only
-     effect is to emit the line `.eflag 48' in the function prologue of
-     the generated assembly file.  Under DEC Unix, this has the effect
-     that IEEE-conformant math library routines will be linked in.
-
-`-mbuild-constants'
-     Normally GCC examines a 32- or 64-bit integer constant to see if
-     it can construct it from smaller constants in two or three
-     instructions.  If it cannot, it will output the constant as a
-     literal and generate code to load it from the data segment at
-     runtime.
-
-     Use this option to require GCC to construct _all_ integer constants
-     using code, even if it takes more instructions (the maximum is
-     six).
-
-     You would typically use this option to build a shared library
-     dynamic loader.  Itself a shared library, it must relocate itself
-     in memory before it can find the variables and constants in its
-     own data segment.
-
-`-malpha-as'
-`-mgas'
-     Select whether to generate code to be assembled by the
-     vendor-supplied assembler (`-malpha-as') or by the GNU assembler
-     `-mgas'.
-
-`-mbwx'
-`-mno-bwx'
-`-mcix'
-`-mno-cix'
-`-mfix'
-`-mno-fix'
-`-mmax'
-`-mno-max'
-     Indicate whether GCC should generate code to use the optional BWX,
-     CIX, FIX and MAX instruction sets.  The default is to use the
-     instruction sets supported by the CPU type specified via `-mcpu='
-     option or that of the CPU on which GCC was built if none was
-     specified.
-
-`-mfloat-vax'
-`-mfloat-ieee'
-     Generate code that uses (does not use) VAX F and G floating point
-     arithmetic instead of IEEE single and double precision.
-
-`-mexplicit-relocs'
-`-mno-explicit-relocs'
-     Older Alpha assemblers provided no way to generate symbol
-     relocations except via assembler macros.  Use of these macros does
-     not allow optimial instruction scheduling.  GNU binutils as of
-     version 2.12 supports a new syntax that allows the compiler to
-     explicitly mark which relocations should apply to which
-     instructions.  This option is mostly useful for debugging, as GCC
-     detects the capabilities of the assembler when it is built and
-     sets the default accordingly.
-
-`-msmall-data'
-`-mlarge-data'
-     When `-mexplicit-relocs' is in effect, static data is accessed via
-     "gp-relative" relocations.  When `-msmall-data' is used, objects 8
-     bytes long or smaller are placed in a "small data area" (the
-     `.sdata' and `.sbss' sections) and are accessed via 16-bit
-     relocations off of the `$gp' register.  This limits the size of
-     the small data area to 64KB, but allows the variables to be
-     directly accessed via a single instruction.
-
-     The default is `-mlarge-data'.  With this option the data area is
-     limited to just below 2GB.  Programs that require more than 2GB of
-     data must use `malloc' or `mmap' to allocate the data in the heap
-     instead of in the program's data segment.
-
-     When generating code for shared libraries, `-fpic' implies
-     `-msmall-data' and `-fPIC' implies `-mlarge-data'.
-
-`-mcpu=CPU_TYPE'
-     Set the instruction set and instruction scheduling parameters for
-     machine type CPU_TYPE.  You can specify either the `EV' style name
-     or the corresponding chip number.  GCC supports scheduling
-     parameters for the EV4, EV5 and EV6 family of processors and will
-     choose the default values for the instruction set from the
-     processor you specify.  If you do not specify a processor type,
-     GCC will default to the processor on which the compiler was built.
-
-     Supported values for CPU_TYPE are
-
-    `ev4'
-
-    `ev45'
-    `21064'
-          Schedules as an EV4 and has no instruction set extensions.
-
-    `ev5'
-    `21164'
-          Schedules as an EV5 and has no instruction set extensions.
-
-    `ev56'
-    `21164a'
-          Schedules as an EV5 and supports the BWX extension.
-
-    `pca56'
-    `21164pc'
-    `21164PC'
-          Schedules as an EV5 and supports the BWX and MAX extensions.
-
-    `ev6'
-    `21264'
-          Schedules as an EV6 and supports the BWX, FIX, and MAX
-          extensions.
-
-    `ev67'
-
-    `21264a'
-          Schedules as an EV6 and supports the BWX, CIX, FIX, and MAX
-          extensions.
-
-`-mtune=CPU_TYPE'
-     Set only the instruction scheduling parameters for machine type
-     CPU_TYPE.  The instruction set is not changed.
-
-`-mmemory-latency=TIME'
-     Sets the latency the scheduler should assume for typical memory
-     references as seen by the application.  This number is highly
-     dependent on the memory access patterns used by the application
-     and the size of the external cache on the machine.
-
-     Valid options for TIME are
-
-    `NUMBER'
-          A decimal number representing clock cycles.
-
-    `L1'
-    `L2'
-    `L3'
-    `main'
-          The compiler contains estimates of the number of clock cycles
-          for "typical" EV4 & EV5 hardware for the Level 1, 2 & 3 caches
-          (also called Dcache, Scache, and Bcache), as well as to main
-          memory.  Note that L3 is only valid for EV5.
-
-
-\1f
-File: gcc.info,  Node: DEC Alpha/VMS Options,  Next: Clipper Options,  Prev: DEC Alpha Options,  Up: Submodel Options
-
-DEC Alpha/VMS Options
----------------------
-
-   These `-m' options are defined for the DEC Alpha/VMS implementations:
-
-`-mvms-return-codes'
-     Return VMS condition codes from main.  The default is to return
-     POSIX style condition (e.g. error) codes.
-
-\1f
-File: gcc.info,  Node: Clipper Options,  Next: H8/300 Options,  Prev: DEC Alpha/VMS Options,  Up: Submodel Options
-
-Clipper Options
----------------
-
-   These `-m' options are defined for the Clipper implementations:
-
-`-mc300'
-     Produce code for a C300 Clipper processor.  This is the default.
-
-`-mc400'
-     Produce code for a C400 Clipper processor, i.e. use floating point
-     registers f8-f15.
-
-\1f
-File: gcc.info,  Node: H8/300 Options,  Next: SH Options,  Prev: Clipper Options,  Up: Submodel Options
-
-H8/300 Options
---------------
-
-   These `-m' options are defined for the H8/300 implementations:
-
-`-mrelax'
-     Shorten some address references at link time, when possible; uses
-     the linker option `-relax'.  *Note `ld' and the H8/300:
-     (ld.info)H8/300, for a fuller description.
-
-`-mh'
-     Generate code for the H8/300H.
-
-`-ms'
-     Generate code for the H8/S.
-
-`-ms2600'
-     Generate code for the H8/S2600.  This switch must be used with
-     `-ms'.
-
-`-mint32'
-     Make `int' data 32 bits by default.
-
-`-malign-300'
-     On the H8/300H and H8/S, use the same alignment rules as for the
-     H8/300.  The default for the H8/300H and H8/S is to align longs
-     and floats on 4 byte boundaries.  `-malign-300' causes them to be
-     aligned on 2 byte boundaries.  This option has no effect on the
-     H8/300.
-
-\1f
-File: gcc.info,  Node: SH Options,  Next: System V Options,  Prev: H8/300 Options,  Up: Submodel Options
-
-SH Options
-----------
-
-   These `-m' options are defined for the SH implementations:
-
-`-m1'
-     Generate code for the SH1.
-
-`-m2'
-     Generate code for the SH2.
-
-`-m3'
-     Generate code for the SH3.
-
-`-m3e'
-     Generate code for the SH3e.
-
-`-m4-nofpu'
-     Generate code for the SH4 without a floating-point unit.
-
-`-m4-single-only'
-     Generate code for the SH4 with a floating-point unit that only
-     supports single-precision arithmetic.
-
-`-m4-single'
-     Generate code for the SH4 assuming the floating-point unit is in
-     single-precision mode by default.
-
-`-m4'
-     Generate code for the SH4.
-
-`-mb'
-     Compile code for the processor in big endian mode.
-
-`-ml'
-     Compile code for the processor in little endian mode.
-
-`-mdalign'
-     Align doubles at 64-bit boundaries.  Note that this changes the
-     calling conventions, and thus some functions from the standard C
-     library will not work unless you recompile it first with
-     `-mdalign'.
-
-`-mrelax'
-     Shorten some address references at link time, when possible; uses
-     the linker option `-relax'.
-
-`-mbigtable'
-     Use 32-bit offsets in `switch' tables.  The default is to use
-     16-bit offsets.
-
-`-mfmovd'
-     Enable the use of the instruction `fmovd'.
-
-`-mhitachi'
-     Comply with the calling conventions defined by Hitachi.
-
-`-mnomacsave'
-     Mark the `MAC' register as call-clobbered, even if `-mhitachi' is
-     given.
-
-`-mieee'
-     Increase IEEE-compliance of floating-point code.
-
-`-misize'
-     Dump instruction size and location in the assembly code.
-
-`-mpadstruct'
-     This option is deprecated.  It pads structures to multiple of 4
-     bytes, which is incompatible with the SH ABI.
-
-`-mspace'
-     Optimize for space instead of speed.  Implied by `-Os'.
-
-`-mprefergot'
-     When generating position-independent code, emit function calls
-     using the Global Offset Table instead of the Procedure Linkage
-     Table.
-
-`-musermode'
-     Generate a library function call to invalidate instruction cache
-     entries, after fixing up a trampoline.  This library function call
-     doesn't assume it can write to the whole memory address space.
-     This is the default when the target is `sh-*-linux*'.
-
-\1f
-File: gcc.info,  Node: System V Options,  Next: TMS320C3x/C4x Options,  Prev: SH Options,  Up: Submodel Options
-
-Options for System V
---------------------
-
-   These additional options are available on System V Release 4 for
-compatibility with other compilers on those systems:
-
-`-G'
-     Create a shared object.  It is recommended that `-symbolic' or
-     `-shared' be used instead.
-
-`-Qy'
-     Identify the versions of each tool used by the compiler, in a
-     `.ident' assembler directive in the output.
-
-`-Qn'
-     Refrain from adding `.ident' directives to the output file (this is
-     the default).
-
-`-YP,DIRS'
-     Search the directories DIRS, and no others, for libraries
-     specified with `-l'.
-
-`-Ym,DIR'
-     Look in the directory DIR to find the M4 preprocessor.  The
-     assembler uses this option.
-