+++ /dev/null
-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: TMS320C3x/C4x Options, Next: V850 Options, Prev: System V Options, Up: Submodel Options
-
-TMS320C3x/C4x Options
----------------------
-
- These `-m' options are defined for TMS320C3x/C4x implementations:
-
-`-mcpu=CPU_TYPE'
- Set the instruction set, register set, and instruction scheduling
- parameters for machine type CPU_TYPE. Supported values for
- CPU_TYPE are `c30', `c31', `c32', `c40', and `c44'. The default
- is `c40' to generate code for the TMS320C40.
-
-`-mbig-memory'
-
-`-mbig'
-`-msmall-memory'
-`-msmall'
- Generates code for the big or small memory model. The small memory
- model assumed that all data fits into one 64K word page. At
- run-time the data page (DP) register must be set to point to the
- 64K page containing the .bss and .data program sections. The big
- memory model is the default and requires reloading of the DP
- register for every direct memory access.
-
-`-mbk'
-`-mno-bk'
- Allow (disallow) allocation of general integer operands into the
- block count register BK.
-
-`-mdb'
-`-mno-db'
- Enable (disable) generation of code using decrement and branch,
- DBcond(D), instructions. This is enabled by default for the C4x.
- To be on the safe side, this is disabled for the C3x, since the
- maximum iteration count on the C3x is 2^23 + 1 (but who iterates
- loops more than 2^23 times on the C3x?). Note that GCC will try
- to reverse a loop so that it can utilise the decrement and branch
- instruction, but will give up if there is more than one memory
- reference in the loop. Thus a loop where the loop counter is
- decremented can generate slightly more efficient code, in cases
- where the RPTB instruction cannot be utilised.
-
-`-mdp-isr-reload'
-`-mparanoid'
- Force the DP register to be saved on entry to an interrupt service
- routine (ISR), reloaded to point to the data section, and restored
- on exit from the ISR. This should not be required unless someone
- has violated the small memory model by modifying the DP register,
- say within an object library.
-
-`-mmpyi'
-`-mno-mpyi'
- For the C3x use the 24-bit MPYI instruction for integer multiplies
- instead of a library call to guarantee 32-bit results. Note that
- if one of the operands is a constant, then the multiplication will
- be performed using shifts and adds. If the `-mmpyi' option is not
- specified for the C3x, then squaring operations are performed
- inline instead of a library call.
-
-`-mfast-fix'
-`-mno-fast-fix'
- The C3x/C4x FIX instruction to convert a floating point value to an
- integer value chooses the nearest integer less than or equal to the
- floating point value rather than to the nearest integer. Thus if
- the floating point number is negative, the result will be
- incorrectly truncated an additional code is necessary to detect
- and correct this case. This option can be used to disable
- generation of the additional code required to correct the result.
-
-`-mrptb'
-`-mno-rptb'
- Enable (disable) generation of repeat block sequences using the
- RPTB instruction for zero overhead looping. The RPTB construct is
- only used for innermost loops that do not call functions or jump
- across the loop boundaries. There is no advantage having nested
- RPTB loops due to the overhead required to save and restore the
- RC, RS, and RE registers. This is enabled by default with `-O2'.
-
-`-mrpts=COUNT'
-`-mno-rpts'
- Enable (disable) the use of the single instruction repeat
- instruction RPTS. If a repeat block contains a single
- instruction, and the loop count can be guaranteed to be less than
- the value COUNT, GCC will emit a RPTS instruction instead of a
- RPTB. If no value is specified, then a RPTS will be emitted even
- if the loop count cannot be determined at compile time. Note that
- the repeated instruction following RPTS does not have to be
- reloaded from memory each iteration, thus freeing up the CPU buses
- for operands. However, since interrupts are blocked by this
- instruction, it is disabled by default.
-
-`-mloop-unsigned'
-`-mno-loop-unsigned'
- The maximum iteration count when using RPTS and RPTB (and DB on
- the C40) is 2^31 + 1 since these instructions test if the
- iteration count is negative to terminate the loop. If the
- iteration count is unsigned there is a possibility than the 2^31 +
- 1 maximum iteration count may be exceeded. This switch allows an
- unsigned iteration count.
-
-`-mti'
- Try to emit an assembler syntax that the TI assembler (asm30) is
- happy with. This also enforces compatibility with the API
- employed by the TI C3x C compiler. For example, long doubles are
- passed as structures rather than in floating point registers.
-
-`-mregparm'
-`-mmemparm'
- Generate code that uses registers (stack) for passing arguments to
- functions. By default, arguments are passed in registers where
- possible rather than by pushing arguments on to the stack.
-
-`-mparallel-insns'
-`-mno-parallel-insns'
- Allow the generation of parallel instructions. This is enabled by
- default with `-O2'.
-
-`-mparallel-mpy'
-`-mno-parallel-mpy'
- Allow the generation of MPY||ADD and MPY||SUB parallel
- instructions, provided `-mparallel-insns' is also specified.
- These instructions have tight register constraints which can
- pessimize the code generation of large functions.
-
-
-\1f
-File: gcc.info, Node: V850 Options, Next: ARC Options, Prev: TMS320C3x/C4x Options, Up: Submodel Options
-
-V850 Options
-------------
-
- These `-m' options are defined for V850 implementations:
-
-`-mlong-calls'
-`-mno-long-calls'
- Treat all calls as being far away (near). If calls are assumed to
- be far away, the compiler will always load the functions address
- up into a register, and call indirect through the pointer.
-
-`-mno-ep'
-`-mep'
- Do not optimize (do optimize) basic blocks that use the same index
- pointer 4 or more times to copy pointer into the `ep' register, and
- use the shorter `sld' and `sst' instructions. The `-mep' option
- is on by default if you optimize.
-
-`-mno-prolog-function'
-`-mprolog-function'
- Do not use (do use) external functions to save and restore
- registers at the prolog and epilog of a function. The external
- functions are slower, but use less code space if more than one
- function saves the same number of registers. The
- `-mprolog-function' option is on by default if you optimize.
-
-`-mspace'
- Try to make the code as small as possible. At present, this just
- turns on the `-mep' and `-mprolog-function' options.
-
-`-mtda=N'
- Put static or global variables whose size is N bytes or less into
- the tiny data area that register `ep' points to. The tiny data
- area can hold up to 256 bytes in total (128 bytes for byte
- references).
-
-`-msda=N'
- Put static or global variables whose size is N bytes or less into
- the small data area that register `gp' points to. The small data
- area can hold up to 64 kilobytes.
-
-`-mzda=N'
- Put static or global variables whose size is N bytes or less into
- the first 32 kilobytes of memory.
-
-`-mv850'
- Specify that the target processor is the V850.
-
-`-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.
-
-\1f
-File: gcc.info, Node: ARC Options, Next: NS32K Options, Prev: V850 Options, Up: Submodel Options
-
-ARC Options
------------
-
- These options are defined for ARC implementations:
-
-`-EL'
- Compile code for little endian mode. This is the default.
-
-`-EB'
- Compile code for big endian mode.
-
-`-mmangle-cpu'
- Prepend the name of the cpu to all public symbol names. In
- multiple-processor systems, there are many ARC variants with
- different instruction and register set characteristics. This flag
- prevents code compiled for one cpu to be linked with code compiled
- for another. No facility exists for handling variants that are
- "almost identical". This is an all or nothing option.
-
-`-mcpu=CPU'
- Compile code for ARC variant CPU. Which variants are supported
- depend on the configuration. All variants support `-mcpu=base',
- this is the default.
-
-`-mtext=TEXT-SECTION'
-`-mdata=DATA-SECTION'
-`-mrodata=READONLY-DATA-SECTION'
- Put functions, data, and readonly data in TEXT-SECTION,
- DATA-SECTION, and READONLY-DATA-SECTION respectively by default.
- This can be overridden with the `section' attribute. *Note
- Variable Attributes::.
-
-
-\1f
-File: gcc.info, Node: NS32K Options, Next: AVR Options, Prev: ARC Options, Up: Submodel Options
-
-NS32K Options
--------------
-
- These are the `-m' options defined for the 32000 series. The default
-values for these options depends on which style of 32000 was selected
-when the compiler was configured; the defaults for the most common
-choices are given below.
-
-`-m32032'
-`-m32032'
- Generate output for a 32032. This is the default when the
- compiler is configured for 32032 and 32016 based systems.
-
-`-m32332'
-`-m32332'
- Generate output for a 32332. This is the default when the
- compiler is configured for 32332-based systems.
-
-`-m32532'
-`-m32532'
- Generate output for a 32532. This is the default when the
- compiler is configured for 32532-based systems.
-
-`-m32081'
- Generate output containing 32081 instructions for floating point.
- This is the default for all systems.
-
-`-m32381'
- Generate output containing 32381 instructions for floating point.
- This also implies `-m32081'. The 32381 is only compatible with
- the 32332 and 32532 cpus. This is the default for the
- pc532-netbsd configuration.
-
-`-mmulti-add'
- Try and generate multiply-add floating point instructions `polyF'
- and `dotF'. This option is only available if the `-m32381' option
- is in effect. Using these instructions requires changes to
- register allocation which generally has a negative impact on
- performance. This option should only be enabled when compiling
- code particularly likely to make heavy use of multiply-add
- instructions.
-
-`-mnomulti-add'
- Do not try and generate multiply-add floating point instructions
- `polyF' and `dotF'. This is the default on all platforms.
-
-`-msoft-float'
- Generate output containing library calls for floating point.
- *Warning:* the requisite libraries may not be available.
-
-`-mnobitfield'
- Do not use the bit-field instructions. On some machines it is
- faster to use shifting and masking operations. This is the
- default for the pc532.
-
-`-mbitfield'
- Do use the bit-field instructions. This is the default for all
- platforms except the pc532.
-
-`-mrtd'
- Use a different function-calling convention, in which functions
- that take a fixed number of arguments return pop their arguments
- on return with the `ret' instruction.
-
- 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.)
-
- This option takes its name from the 680x0 `rtd' instruction.
-
-`-mregparam'
- Use a different function-calling convention where the first two
- arguments are passed in registers.
-
- 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.
-
-`-mnoregparam'
- Do not pass any arguments in registers. This is the default for
- all targets.
-
-`-msb'
- It is OK to use the sb as an index register which is always loaded
- with zero. This is the default for the pc532-netbsd target.
-
-`-mnosb'
- The sb register is not available for use or has not been
- initialized to zero by the run time system. This is the default
- for all targets except the pc532-netbsd. It is also implied
- whenever `-mhimem' or `-fpic' is set.
-
-`-mhimem'
- Many ns32000 series addressing modes use displacements of up to
- 512MB. If an address is above 512MB then displacements from zero
- can not be used. This option causes code to be generated which
- can be loaded above 512MB. This may be useful for operating
- systems or ROM code.
-
-`-mnohimem'
- Assume code will be loaded in the first 512MB of virtual address
- space. This is the default for all platforms.
-
-
-\1f
-File: gcc.info, Node: AVR Options, Next: MCore Options, Prev: NS32K Options, Up: Submodel Options
-
-AVR Options
------------
-
- These options are defined for AVR implementations:
-
-`-mmcu=MCU'
- Specify ATMEL AVR instruction set or MCU type.
-
- Instruction set avr1 is for the minimal AVR core, not supported by
- the C compiler, only for assembler programs (MCU types: at90s1200,
- attiny10, attiny11, attiny12, attiny15, attiny28).
-
- Instruction set avr2 (default) is for the classic AVR core with up
- to 8K program memory space (MCU types: at90s2313, at90s2323,
- attiny22, at90s2333, at90s2343, at90s4414, at90s4433, at90s4434,
- at90s8515, at90c8534, at90s8535).
-
- Instruction set avr3 is for the classic AVR core with up to 128K
- program memory space (MCU types: atmega103, atmega603, at43usb320,
- at76c711).
-
- Instruction set avr4 is for the enhanced AVR core with up to 8K
- program memory space (MCU types: atmega8, atmega83, atmega85).
-
- Instruction set avr5 is for the enhanced AVR core with up to 128K
- program memory space (MCU types: atmega16, atmega161, atmega163,
- atmega32, atmega323, atmega64, atmega128, at43usb355, at94k).
-
-`-msize'
- Output instruction sizes to the asm file.
-
-`-minit-stack=N'
- Specify the initial stack address, which may be a symbol or
- numeric value, `__stack' is the default.
-
-`-mno-interrupts'
- Generated code is not compatible with hardware interrupts. Code
- size will be smaller.
-
-`-mcall-prologues'
- Functions prologues/epilogues expanded as call to appropriate
- subroutines. Code size will be smaller.
-
-`-mno-tablejump'
- Do not generate tablejump insns which sometimes increase code size.
-
-`-mtiny-stack'
- Change only the low 8 bits of the stack pointer.
-
-\1f
-File: gcc.info, Node: MCore Options, Next: IA-64 Options, Prev: AVR Options, Up: Submodel Options
-
-MCore Options
--------------
-
- These are the `-m' options defined for the Motorola M*Core
-processors.
-
-`-mhardlit'
-`-mhardlit'
-`-mno-hardlit'
- Inline constants into the code stream if it can be done in two
- instructions or less.
-
-`-mdiv'
-`-mdiv'
-`-mno-div'
- Use the divide instruction. (Enabled by default).
-
-`-mrelax-immediate'
-`-mrelax-immediate'
-`-mno-relax-immediate'
- Allow arbitrary sized immediates in bit operations.
-
-`-mwide-bitfields'
-`-mwide-bitfields'
-`-mno-wide-bitfields'
- Always treat bit-fields as int-sized.
-
-`-m4byte-functions'
-`-m4byte-functions'
-`-mno-4byte-functions'
- Force all functions to be aligned to a four byte boundary.
-
-`-mcallgraph-data'
-`-mcallgraph-data'
-`-mno-callgraph-data'
- Emit callgraph information.
-
-`-mslow-bytes'
-`-mslow-bytes'
-`-mno-slow-bytes'
- Prefer word access when reading byte quantities.
-
-`-mlittle-endian'
-`-mlittle-endian'
-`-mbig-endian'
- Generate code for a little endian target.
-
-`-m210'
-`-m210'
-`-m340'
- Generate code for the 210 processor.
-
-\1f
-File: gcc.info, Node: IA-64 Options, Next: D30V Options, Prev: MCore Options, Up: Submodel Options
-
-IA-64 Options
--------------
-
- These are the `-m' options defined for the Intel IA-64 architecture.
-
-`-mbig-endian'
- Generate code for a big endian target. This is the default for
- HPUX.
-
-`-mlittle-endian'
- Generate code for a little endian target. This is the default for
- AIX5 and Linux.
-
-`-mgnu-as'
-`-mno-gnu-as'
- Generate (or don't) code for the GNU assembler. This is the
- default.
-
-`-mgnu-ld'
-`-mno-gnu-ld'
- Generate (or don't) code for the GNU linker. This is the default.
-
-`-mno-pic'
- Generate code that does not use a global pointer register. The
- result is not position independent code, and violates the IA-64
- ABI.
-
-`-mvolatile-asm-stop'
-`-mno-volatile-asm-stop'
- Generate (or don't) a stop bit immediately before and after
- volatile asm statements.
-
-`-mb-step'
- Generate code that works around Itanium B step errata.
-
-`-mregister-names'
-`-mno-register-names'
- Generate (or don't) `in', `loc', and `out' register names for the
- stacked registers. This may make assembler output more readable.
-
-`-mno-sdata'
-`-msdata'
- Disable (or enable) optimizations that use the small data section.
- This may be useful for working around optimizer bugs.
-
-`-mconstant-gp'
- Generate code that uses a single constant global pointer value.
- This is useful when compiling kernel code.
-
-`-mauto-pic'
- Generate code that is self-relocatable. This implies
- `-mconstant-gp'. This is useful when compiling firmware code.
-
-`-minline-divide-min-latency'
- Generate code for inline divides using the minimum latency
- algorithm.
-
-`-minline-divide-max-throughput'
- Generate code for inline divides using the maximum throughput
- algorithm.
-
-`-mno-dwarf2-asm'
-`-mdwarf2-asm'
- Don't (or do) generate assembler code for the DWARF2 line number
- debugging info. This may be useful when not using the GNU
- assembler.
-
-`-mfixed-range=REGISTER-RANGE'
- Generate code treating the given register range as fixed registers.
- A fixed register is one that the register allocator can not use.
- This is useful when compiling kernel code. A register range is
- specified as two registers separated by a dash. Multiple register
- ranges can be specified separated by a comma.
-
-\1f
-File: gcc.info, Node: D30V Options, Next: S/390 and zSeries Options, Prev: IA-64 Options, Up: Submodel Options
-
-D30V Options
-------------
-
- These `-m' options are defined for D30V implementations:
-
-`-mextmem'
- Link the `.text', `.data', `.bss', `.strings', `.rodata',
- `.rodata1', `.data1' sections into external memory, which starts
- at location `0x80000000'.
-
-`-mextmemory'
- Same as the `-mextmem' switch.
-
-`-monchip'
- Link the `.text' section into onchip text memory, which starts at
- location `0x0'. Also link `.data', `.bss', `.strings', `.rodata',
- `.rodata1', `.data1' sections into onchip data memory, which
- starts at location `0x20000000'.
-
-`-mno-asm-optimize'
-`-masm-optimize'
- Disable (enable) passing `-O' to the assembler when optimizing.
- The assembler uses the `-O' option to automatically parallelize
- adjacent short instructions where possible.
-
-`-mbranch-cost=N'
- Increase the internal costs of branches to N. Higher costs means
- that the compiler will issue more instructions to avoid doing a
- branch. The default is 2.
-
-`-mcond-exec=N'
- Specify the maximum number of conditionally executed instructions
- that replace a branch. The default is 4.
-
-\1f
-File: gcc.info, Node: S/390 and zSeries Options, Next: CRIS Options, Prev: D30V Options, Up: Submodel Options
-
-S/390 and zSeries Options
--------------------------
-
- These are the `-m' options defined for the S/390 and zSeries
-architecture.
-
-`-mhard-float'
-`-msoft-float'
- Use (do not use) the hardware floating-point instructions and
- registers for floating-point operations. When `-msoft-float' is
- specified, functions in `libgcc.a' will be used to perform
- floating-point operations. When `-mhard-float' is specified, the
- compiler generates IEEE floating-point instructions. This is the
- default.
-
-`-mbackchain'
-`-mno-backchain'
- Generate (or do not generate) code which maintains an explicit
- backchain within the stack frame that points to the caller's frame.
- This is currently needed to allow debugging. The default is to
- generate the backchain.
-
-`-msmall-exec'
-`-mno-small-exec'
- Generate (or do not generate) code using the `bras' instruction to
- do subroutine calls. This only works reliably if the total
- executable size does not exceed 64k. The default is to use the
- `basr' instruction instead, which does not have this limitation.
-
-`-m64'
-`-m31'
- When `-m31' is specified, generate code compliant to the Linux for
- S/390 ABI. When `-m64' is specified, generate code compliant to
- the Linux for zSeries ABI. This allows GCC in particular to
- generate 64-bit instructions. For the `s390' targets, the default
- is `-m31', while the `s390x' targets default to `-m64'.
-
-`-mmvcle'
-`-mno-mvcle'
- Generate (or do not generate) code using the `mvcle' instruction
- to perform block moves. When `-mno-mvcle' is specifed, use a
- `mvc' loop instead. This is the default.
-
-`-mdebug'
-`-mno-debug'
- Print (or do not print) additional debug information when
- compiling. The default is to not print debug information.
-
-
-\1f
-File: gcc.info, Node: CRIS Options, Next: MMIX Options, Prev: S/390 and zSeries Options, Up: Submodel Options
-
-CRIS Options
-------------
-
- These options are defined specifically for the CRIS ports.
-
-`-march=ARCHITECTURE-TYPE'
-`-mcpu=ARCHITECTURE-TYPE'
- Generate code for the specified architecture. The choices for
- ARCHITECTURE-TYPE are `v3', `v8' and `v10' for respectively
- ETRAX 4, ETRAX 100, and ETRAX 100 LX. Default is `v0' except for
- cris-axis-linux-gnu, where the default is `v10'.
-
-`-mtune=ARCHITECTURE-TYPE'
- Tune to ARCHITECTURE-TYPE everything applicable about the generated
- code, except for the ABI and the set of available instructions.
- The choices for ARCHITECTURE-TYPE are the same as for
- `-march=ARCHITECTURE-TYPE'.
-
-`-mmax-stack-frame=N'
- Warn when the stack frame of a function exceeds N bytes.
-
-`-melinux-stacksize=N'
- Only available with the `cris-axis-aout' target. Arranges for
- indications in the program to the kernel loader that the stack of
- the program should be set to N bytes.
-
-`-metrax4'
-`-metrax100'
- The options `-metrax4' and `-metrax100' are synonyms for
- `-march=v3' and `-march=v8' respectively.
-
-`-mpdebug'
- Enable CRIS-specific verbose debug-related information in the
- assembly code. This option also has the effect to turn off the
- `#NO_APP' formatted-code indicator to the assembler at the
- beginning of the assembly file.
-
-`-mcc-init'
- Do not use condition-code results from previous instruction;
- always emit compare and test instructions before use of condition
- codes.
-
-`-mno-side-effects'
- Do not emit instructions with side-effects in addressing modes
- other than post-increment.
-
-`-mstack-align'
-`-mno-stack-align'
-`-mdata-align'
-`-mno-data-align'
-`-mconst-align'
-`-mno-const-align'
- These options (no-options) arranges (eliminate arrangements) for
- the stack-frame, individual data and constants to be aligned for
- the maximum single data access size for the chosen CPU model. The
- default is to arrange for 32-bit alignment. ABI details such as
- structure layout are not affected by these options.
-
-`-m32-bit'
-`-m16-bit'
-`-m8-bit'
- Similar to the stack- data- and const-align options above, these
- options arrange for stack-frame, writable data and constants to
- all be 32-bit, 16-bit or 8-bit aligned. The default is 32-bit
- alignment.
-
-`-mno-prologue-epilogue'
-`-mprologue-epilogue'
- With `-mno-prologue-epilogue', the normal function prologue and
- epilogue that sets up the stack-frame are omitted and no return
- instructions or return sequences are generated in the code. Use
- this option only together with visual inspection of the compiled
- code: no warnings or errors are generated when call-saved
- registers must be saved, or storage for local variable needs to be
- allocated.
-
-`-mno-gotplt'
-`-mgotplt'
- With `-fpic' and `-fPIC', don't generate (do generate) instruction
- sequences that load addresses for functions from the PLT part of
- the GOT rather than (traditional on other architectures) calls to
- the PLT. The default is `-mgotplt'.
-
-`-maout'
- Legacy no-op option only recognized with the cris-axis-aout target.
-
-`-melf'
- Legacy no-op option only recognized with the cris-axis-elf and
- cris-axis-linux-gnu targets.
-
-`-melinux'
- Only recognized with the cris-axis-aout target, where it selects a
- GNU/linux-like multilib, include files and instruction set for
- `-march=v8'.
-
-`-mlinux'
- Legacy no-op option only recognized with the cris-axis-linux-gnu
- target.
-
-`-sim'
- This option, recognized for the cris-axis-aout and cris-axis-elf
- arranges to link with input-output functions from a simulator
- library. Code, initialized data and zero-initialized data are
- allocated consecutively.
-
-`-sim2'
- Like `-sim', but pass linker options to locate initialized data at
- 0x40000000 and zero-initialized data at 0x80000000.
-
-\1f
-File: gcc.info, Node: MMIX Options, Next: PDP-11 Options, Prev: CRIS Options, Up: Submodel Options
-
-MMIX Options
-------------
-
- These options are defined for the MMIX:
-
-`-mlibfuncs'
-`-mno-libfuncs'
- Specify that intrinsic library functions are being compiled,
- passing all values in registers, no matter the size.
-
-`-mepsilon'
-`-mno-epsilon'
- Generate floating-point comparison instructions that compare with
- respect to the `rE' epsilon register.
-
-`-mabi=mmixware'
-`-mabi=gnu'
- Generate code that passes function parameters and return values
- that (in the called function) are seen as registers `$0' and up,
- as opposed to the GNU ABI which uses global registers `$231' and
- up.
-
-`-mzero-extend'
-`-mno-zero-extend'
- When reading data from memory in sizes shorter than 64 bits, use
- (do not use) zero-extending load instructions by default, rather
- than sign-extending ones.
-
-`-mknuthdiv'
-`-mno-knuthdiv'
- Make the result of a division yielding a remainder have the same
- sign as the divisor. With the default, `-mno-knuthdiv', the sign
- of the remainder follows the sign of the dividend. Both methods
- are arithmetically valid, the latter being almost exclusively used.
-
-`-mtoplevel-symbols'
-`-mno-toplevel-symbols'
- Prepend (do not prepend) a `:' to all global symbols, so the
- assembly code can be used with the `PREFIX' assembly directive.
-
-`-melf'
- Generate an executable in the ELF format, rather than the default
- `mmo' format used by the `mmix' simulator.
-
-`-mbranch-predict'
-`-mno-branch-predict'
- Use (do not use) the probable-branch instructions, when static
- branch prediction indicates a probable branch.
-
-`-mbase-addresses'
-`-mno-base-addresses'
- Generate (do not generate) code that uses _base addresses_. Using
- a base address automatically generates a request (handled by the
- assembler and the linker) for a constant to be set up in a global
- register. The register is used for one or more base address
- requests within the range 0 to 255 from the value held in the
- register. The generally leads to short and fast code, but the
- number of different data items that can be addressed is limited.
- This means that a program that uses lots of static data may
- require `-mno-base-addresses'.
-
-\1f
-File: gcc.info, Node: PDP-11 Options, Next: Xstormy16 Options, Prev: MMIX Options, Up: Submodel Options
-
-PDP-11 Options
---------------
-
- These options are defined for the PDP-11:
-
-`-mfpu'
- Use hardware FPP floating point. This is the default. (FIS
- floating point on the PDP-11/40 is not supported.)
-
-`-msoft-float'
- Do not use hardware floating point.
-
-`-mac0'
- Return floating-point results in ac0 (fr0 in Unix assembler
- syntax).
-
-`-mno-ac0'
- Return floating-point results in memory. This is the default.
-
-`-m40'
- Generate code for a PDP-11/40.
-
-`-m45'
- Generate code for a PDP-11/45. This is the default.
-
-`-m10'
- Generate code for a PDP-11/10.
-
-`-mbcopy-builtin'
- Use inline `movstrhi' patterns for copying memory. This is the
- default.
-
-`-mbcopy'
- Do not use inline `movstrhi' patterns for copying memory.
-
-`-mint16'
-`-mno-int32'
- Use 16-bit `int'. This is the default.
-
-`-mint32'
-`-mno-int16'
- Use 32-bit `int'.
-
-`-mfloat64'
-`-mno-float32'
- Use 64-bit `float'. This is the default.
-
-`-mfloat32'
-
-`-mno-float64'
- Use 32-bit `float'.
-
-`-mabshi'
- Use `abshi2' pattern. This is the default.
-
-`-mno-abshi'
- Do not use `abshi2' pattern.
-
-`-mbranch-expensive'
- Pretend that branches are expensive. This is for experimenting
- with code generation only.
-
-`-mbranch-cheap'
- Do not pretend that branches are expensive. This is the default.
-
-`-msplit'
- Generate code for a system with split I&D.
-
-`-mno-split'
- Generate code for a system without split I&D. This is the default.
-
-`-munix-asm'
- Use Unix assembler syntax. This is the default when configured for
- `pdp11-*-bsd'.
-
-`-mdec-asm'
- Use DEC assembler syntax. This is the default when configured for
- any PDP-11 target other than `pdp11-*-bsd'.
-
-\1f
-File: gcc.info, Node: Xstormy16 Options, Next: Xtensa Options, Prev: PDP-11 Options, Up: Submodel Options
-
-Xstormy16 Options
------------------
-
- These options are defined for Xstormy16:
-
-`-msim'
- Choose startup files and linker script suitable for the simulator.
-
-\1f
-File: gcc.info, Node: Xtensa Options, Prev: Xstormy16 Options, Up: Submodel Options
-
-Xtensa Options
---------------
-
- The Xtensa architecture is designed to support many different
-configurations. The compiler's default options can be set to match a
-particular Xtensa configuration by copying a configuration file into the
-GCC sources when building GCC. The options below may be used to
-override the default options.
-
-`-mbig-endian'
-`-mlittle-endian'
- Specify big-endian or little-endian byte ordering for the target
- Xtensa processor.
-
-`-mdensity'
-`-mno-density'
- Enable or disable use of the optional Xtensa code density
- instructions.
-
-`-mmac16'
-`-mno-mac16'
- Enable or disable use of the Xtensa MAC16 option. When enabled,
- GCC will generate MAC16 instructions from standard C code, with the
- limitation that it will use neither the MR register file nor any
- instruction that operates on the MR registers. When this option is
- disabled, GCC will translate 16-bit multiply/accumulate operations
- to a combination of core instructions and library calls, depending
- on whether any other multiplier options are enabled.
-
-`-mmul16'
-`-mno-mul16'
- Enable or disable use of the 16-bit integer multiplier option.
- When enabled, the compiler will generate 16-bit multiply
- instructions for multiplications of 16 bits or smaller in standard
- C code. When this option is disabled, the compiler will either
- use 32-bit multiply or MAC16 instructions if they are available or
- generate library calls to perform the multiply operations using
- shifts and adds.
-
-`-mmul32'
-`-mno-mul32'
- Enable or disable use of the 32-bit integer multiplier option.
- When enabled, the compiler will generate 32-bit multiply
- instructions for multiplications of 32 bits or smaller in standard
- C code. When this option is disabled, the compiler will generate
- library calls to perform the multiply operations using either
- shifts and adds or 16-bit multiply instructions if they are
- available.
-
-`-mnsa'
-`-mno-nsa'
- Enable or disable use of the optional normalization shift amount
- (`NSA') instructions to implement the built-in `ffs' function.
-
-`-mminmax'
-`-mno-minmax'
- Enable or disable use of the optional minimum and maximum value
- instructions.
-
-`-msext'
-`-mno-sext'
- Enable or disable use of the optional sign extend (`SEXT')
- instruction.
-
-`-mbooleans'
-`-mno-booleans'
- Enable or disable support for the boolean register file used by
- Xtensa coprocessors. This is not typically useful by itself but
- may be required for other options that make use of the boolean
- registers (e.g., the floating-point option).
-
-`-mhard-float'
-`-msoft-float'
- Enable or disable use of the floating-point option. When enabled,
- GCC generates floating-point instructions for 32-bit `float'
- operations. When this option is disabled, GCC generates library
- calls to emulate 32-bit floating-point operations using integer
- instructions. Regardless of this option, 64-bit `double'
- operations are always emulated with calls to library functions.
-
-`-mfused-madd'
-`-mno-fused-madd'
- Enable or disable use of fused multiply/add and multiply/subtract
- instructions in the floating-point option. This has no effect if
- the floating-point option is not also enabled. Disabling fused
- multiply/add and multiply/subtract instructions forces the
- compiler to use separate instructions for the multiply and
- add/subtract operations. This may be desirable in some cases
- where strict IEEE 754-compliant results are required: the fused
- multiply add/subtract instructions do not round the intermediate
- result, thereby producing results with _more_ bits of precision
- than specified by the IEEE standard. Disabling fused multiply
- add/subtract instructions also ensures that the program output is
- not sensitive to the compiler's ability to combine multiply and
- add/subtract operations.
-
-`-mserialize-volatile'
-`-mno-serialize-volatile'
- When this option is enabled, GCC inserts `MEMW' instructions before
- `volatile' memory references to guarantee sequential consistency.
- The default is `-mserialize-volatile'. Use
- `-mno-serialize-volatile' to omit the `MEMW' instructions.
-
-`-mtext-section-literals'
-`-mno-text-section-literals'
- Control the treatment of literal pools. The default is
- `-mno-text-section-literals', which places literals in a separate
- section in the output file. This allows the literal pool to be
- placed in a data RAM/ROM, and it also allows the linker to combine
- literal pools from separate object files to remove redundant
- literals and improve code size. With `-mtext-section-literals',
- the literals are interspersed in the text section in order to keep
- them as close as possible to their references. This may be
- necessary for large assembly files.
-
-`-mtarget-align'
-`-mno-target-align'
- When this option is enabled, GCC instructs the assembler to
- automatically align instructions to reduce branch penalties at the
- expense of some code density. The assembler attempts to widen
- density instructions to align branch targets and the instructions
- following call instructions. If there are not enough preceding
- safe density instructions to align a target, no widening will be
- performed. The default is `-mtarget-align'. These options do not
- affect the treatment of auto-aligned instructions like `LOOP',
- which the assembler will always align, either by widening density
- instructions or by inserting no-op instructions.
-
-`-mlongcalls'
-`-mno-longcalls'
- When this option is enabled, GCC instructs the assembler to
- translate direct calls to indirect calls unless it can determine
- that the target of a direct call is in the range allowed by the
- call instruction. This translation typically occurs for calls to
- functions in other source files. Specifically, the assembler
- translates a direct `CALL' instruction into an `L32R' followed by
- a `CALLX' instruction. The default is `-mno-longcalls'. This
- option should be used in programs where the call target can
- potentially be out of range. This option is implemented in the
- assembler, not the compiler, so the assembly code generated by GCC
- will still show direct call instructions--look at the disassembled
- object code to see the actual instructions. Note that the
- assembler will use an indirect call for every cross-file call, not
- just those that really will be out of range.
-