diff options
Diffstat (limited to 'gcc/gcc.info-4')
-rw-r--r-- | gcc/gcc.info-4 | 1171 |
1 files changed, 0 insertions, 1171 deletions
diff --git a/gcc/gcc.info-4 b/gcc/gcc.info-4 deleted file mode 100644 index 8a3d1fbdbf6..00000000000 --- a/gcc/gcc.info-4 +++ /dev/null @@ -1,1171 +0,0 @@ -This is Info file gcc.info, produced by Makeinfo version 1.68 from the -input file gcc.texi. - - This file documents the use and the internals of the GNU compiler. - - 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 Free -Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy and distribute modified versions of -this manual under the conditions for verbatim copying, provided also -that the sections entitled "GNU General Public License," "Funding for -Free Software," and "Protect Your Freedom--Fight `Look And Feel'" are -included exactly as in the original, and provided that the entire -resulting derived work is distributed under the terms of a permission -notice identical to this one. - - Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions, except that the sections entitled "GNU General Public -License," "Funding for Free Software," and "Protect Your Freedom--Fight -`Look And Feel'", and this permission notice, may be included in -translations approved by the Free Software Foundation instead of in the -original English. - - -File: gcc.info, Node: M88K Options, Next: RS/6000 and PowerPC Options, Prev: M32R/D Options, Up: Submodel Options - -M88K Options ------------- - - These `-m' options are defined for Motorola 88k architectures: - -`-m88000' - Generate code that works well on both the m88100 and the m88110. - -`-m88100' - Generate code that works best for the m88100, but that also runs - on the m88110. - -`-m88110' - Generate code that works best for the m88110, and may not run on - the m88100. - -`-mbig-pic' - Obsolete option to be removed from the next revision. Use `-fPIC'. - -`-midentify-revision' - Include an `ident' directive in the assembler output recording the - source file name, compiler name and version, timestamp, and - compilation flags used. - -`-mno-underscores' - In assembler output, emit symbol names without adding an underscore - character at the beginning of each name. The default is to use an - underscore as prefix on each name. - -`-mocs-debug-info' -`-mno-ocs-debug-info' - Include (or omit) additional debugging information (about - registers used in each stack frame) as specified in the 88open - Object Compatibility Standard, "OCS". This extra information - allows debugging of code that has had the frame pointer - eliminated. The default for DG/UX, SVr4, and Delta 88 SVr3.2 is - to include this information; other 88k configurations omit this - information by default. - -`-mocs-frame-position' - When emitting COFF debugging information for automatic variables - and parameters stored on the stack, use the offset from the - canonical frame address, which is the stack pointer (register 31) - on entry to the function. The DG/UX, SVr4, Delta88 SVr3.2, and - BCS configurations use `-mocs-frame-position'; other 88k - configurations have the default `-mno-ocs-frame-position'. - -`-mno-ocs-frame-position' - When emitting COFF debugging information for automatic variables - and parameters stored on the stack, use the offset from the frame - pointer register (register 30). When this option is in effect, - the frame pointer is not eliminated when debugging information is - selected by the -g switch. - -`-moptimize-arg-area' -`-mno-optimize-arg-area' - Control how function arguments are stored in stack frames. - `-moptimize-arg-area' saves space by optimizing them, but this - conflicts with the 88open specifications. The opposite - alternative, `-mno-optimize-arg-area', agrees with 88open - standards. By default GNU CC does not optimize the argument area. - -`-mshort-data-NUM' - Generate smaller data references by making them relative to `r0', - which allows loading a value using a single instruction (rather - than the usual two). You control which data references are - affected by specifying NUM with this option. For example, if you - specify `-mshort-data-512', then the data references affected are - those involving displacements of less than 512 bytes. - `-mshort-data-NUM' is not effective for NUM greater than 64k. - -`-mserialize-volatile' -`-mno-serialize-volatile' - Do, or don't, generate code to guarantee sequential consistency of - volatile memory references. By default, consistency is guaranteed. - - The order of memory references made by the MC88110 processor does - not always match the order of the instructions requesting those - references. In particular, a load instruction may execute before - a preceding store instruction. Such reordering violates - sequential consistency of volatile memory references, when there - are multiple processors. When consistency must be guaranteed, - GNU C generates special instructions, as needed, to force - execution in the proper order. - - The MC88100 processor does not reorder memory references and so - always provides sequential consistency. However, by default, GNU - C generates the special instructions to guarantee consistency even - when you use `-m88100', so that the code may be run on an MC88110 - processor. If you intend to run your code only on the MC88100 - processor, you may use `-mno-serialize-volatile'. - - The extra code generated to guarantee consistency may affect the - performance of your application. If you know that you can safely - forgo this guarantee, you may use `-mno-serialize-volatile'. - -`-msvr4' -`-msvr3' - Turn on (`-msvr4') or off (`-msvr3') compiler extensions related - to System V release 4 (SVr4). This controls the following: - - 1. Which variant of the assembler syntax to emit. - - 2. `-msvr4' makes the C preprocessor recognize `#pragma weak' - that is used on System V release 4. - - 3. `-msvr4' makes GNU CC issue additional declaration directives - used in SVr4. - - `-msvr4' is the default for the m88k-motorola-sysv4 and - m88k-dg-dgux m88k configurations. `-msvr3' is the default for all - other m88k configurations. - -`-mversion-03.00' - This option is obsolete, and is ignored. - -`-mno-check-zero-division' -`-mcheck-zero-division' - Do, or don't, generate code to guarantee that integer division by - zero will be detected. By default, detection is guaranteed. - - Some models of the MC88100 processor fail to trap upon integer - division by zero under certain conditions. By default, when - compiling code that might be run on such a processor, GNU C - generates code that explicitly checks for zero-valued divisors and - traps with exception number 503 when one is detected. Use of - mno-check-zero-division suppresses such checking for code - generated to run on an MC88100 processor. - - GNU C assumes that the MC88110 processor correctly detects all - instances of integer division by zero. When `-m88110' is - specified, both `-mcheck-zero-division' and - `-mno-check-zero-division' are ignored, and no explicit checks for - zero-valued divisors are generated. - -`-muse-div-instruction' - Use the div instruction for signed integer division on the MC88100 - processor. By default, the div instruction is not used. - - On the MC88100 processor the signed integer division instruction - div) traps to the operating system on a negative operand. The - operating system transparently completes the operation, but at a - large cost in execution time. By default, when compiling code - that might be run on an MC88100 processor, GNU C emulates signed - integer division using the unsigned integer division instruction - divu), thereby avoiding the large penalty of a trap to the - operating system. Such emulation has its own, smaller, execution - cost in both time and space. To the extent that your code's - important signed integer division operations are performed on two - nonnegative operands, it may be desirable to use the div - instruction directly. - - On the MC88110 processor the div instruction (also known as the - divs instruction) processes negative operands without trapping to - the operating system. When `-m88110' is specified, - `-muse-div-instruction' is ignored, and the div instruction is used - for signed integer division. - - Note that the result of dividing INT_MIN by -1 is undefined. In - particular, the behavior of such a division with and without - `-muse-div-instruction' may differ. - -`-mtrap-large-shift' -`-mhandle-large-shift' - Include code to detect bit-shifts of more than 31 bits; - respectively, trap such shifts or emit code to handle them - properly. By default GNU CC makes no special provision for large - bit shifts. - -`-mwarn-passed-structs' - Warn when a function passes a struct as an argument or result. - Structure-passing conventions have changed during the evolution of - the C language, and are often the source of portability problems. - By default, GNU CC issues no such warning. - - -File: gcc.info, Node: RS/6000 and PowerPC Options, Next: RT Options, Prev: M88K Options, Up: Submodel Options - -IBM RS/6000 and PowerPC Options -------------------------------- - - These `-m' options are defined for the IBM RS/6000 and PowerPC: -`-mpower' -`-mno-power' -`-mpower2' -`-mno-power2' -`-mpowerpc' -`-mno-powerpc' -`-mpowerpc-gpopt' -`-mno-powerpc-gpopt' -`-mpowerpc-gfxopt' -`-mno-powerpc-gfxopt' - GNU CC supports two related instruction set architectures for the - RS/6000 and PowerPC. The "POWER" instruction set are those - instructions supported by the `rios' chip set used in the original - RS/6000 systems and the "PowerPC" instruction set is the - architecture of the Motorola MPC5xx, MPC6xx, MPC8xx - microprocessors, and the IBM 4xx microprocessors. - - Neither architecture is a subset of the other. However there is a - large common subset of instructions supported by both. An MQ - register is included in processors supporting the POWER - architecture. - - You use these options to specify which instructions are available - on the processor you are using. The default value of these - options is determined when configuring GNU CC. Specifying the - `-mcpu=CPU_TYPE' overrides the specification of these options. We - recommend you use the `-mcpu=CPU_TYPE' option rather than the - options listed above. - - The `-mpower' option allows GNU CC to generate instructions that - are found only in the POWER architecture and to use the MQ - register. Specifying `-mpower2' implies `-power' and also allows - GNU CC to generate instructions that are present in the POWER2 - architecture but not the original POWER architecture. - - The `-mpowerpc' option allows GNU CC to generate instructions that - are found only in the 32-bit subset of the PowerPC architecture. - Specifying `-mpowerpc-gpopt' implies `-mpowerpc' and also allows - GNU CC to use the optional PowerPC architecture instructions in the - General Purpose group, including floating-point square root. - Specifying `-mpowerpc-gfxopt' implies `-mpowerpc' and also allows - GNU CC to use the optional PowerPC architecture instructions in - the Graphics group, including floating-point select. - - If you specify both `-mno-power' and `-mno-powerpc', GNU CC will - use only the instructions in the common subset of both - architectures plus some special AIX common-mode calls, and will - not use the MQ register. Specifying both `-mpower' and `-mpowerpc' - permits GNU CC to use any instruction from either architecture and - to allow use of the MQ register; specify this for the Motorola - MPC601. - -`-mnew-mnemonics' -`-mold-mnemonics' - Select which mnemonics to use in the generated assembler code. - `-mnew-mnemonics' requests output that uses the assembler mnemonics - defined for the PowerPC architecture, while `-mold-mnemonics' - requests the assembler mnemonics defined for the POWER - architecture. Instructions defined in only one architecture have - only one mnemonic; GNU CC uses that mnemonic irrespective of which - of these options is specified. - - PowerPC assemblers support both the old and new mnemonics, as will - later POWER assemblers. Current POWER assemblers only support the - old mnemonics. Specify `-mnew-mnemonics' if you have an assembler - that supports them, otherwise specify `-mold-mnemonics'. - - The default value of these options depends on how GNU CC was - configured. Specifying `-mcpu=CPU_TYPE' sometimes overrides the - value of these option. Unless you are building a cross-compiler, - you should normally not specify either `-mnew-mnemonics' or - `-mold-mnemonics', but should instead accept the default. - -`-mcpu=CPU_TYPE' - Set architecture type, register usage, choice of mnemonics, and - instruction scheduling parameters for machine type CPU_TYPE. - Supported values for CPU_TYPE are `rs6000', `rios1', `rios2', - `rsc', `601', `602', `603', `603e', `604', `604e', `620', `power', - `power2', `powerpc', `403', `505', `801', `821', `823', and `860' - and `common'. `-mcpu=power', `-mcpu=power2', and `-mcpu=powerpc' - specify generic POWER, POWER2 and pure PowerPC (i.e., not MPC601) - architecture machine types, with an appropriate, generic processor - model assumed for scheduling purposes. - - Specifying any of the following options: `-mcpu=rios1', - `-mcpu=rios2', `-mcpu=rsc', `-mcpu=power', or `-mcpu=power2' - enables the `-mpower' option and disables the `-mpowerpc' option; - `-mcpu=601' enables both the `-mpower' and `-mpowerpc' options. - All of `-mcpu=602', `-mcpu=603', `-mcpu=603e', `-mcpu=604', - `-mcpu=620', enable the `-mpowerpc' option and disable the - `-mpower' option. Exactly similarly, all of `-mcpu=403', - `-mcpu=505', `-mcpu=821', `-mcpu=860' and `-mcpu=powerpc' enable - the `-mpowerpc' option and disable the `-mpower' option. - `-mcpu=common' disables both the `-mpower' and `-mpowerpc' options. - - AIX versions 4 or greater selects `-mcpu=common' by default, so - that code will operate on all members of the RS/6000 and PowerPC - families. In that case, GNU CC will use only the instructions in - the common subset of both architectures plus some special AIX - common-mode calls, and will not use the MQ register. GNU CC - assumes a generic processor model for scheduling purposes. - - Specifying any of the options `-mcpu=rios1', `-mcpu=rios2', - `-mcpu=rsc', `-mcpu=power', or `-mcpu=power2' also disables the - `new-mnemonics' option. Specifying `-mcpu=601', `-mcpu=602', - `-mcpu=603', `-mcpu=603e', `-mcpu=604', `620', `403', or - `-mcpu=powerpc' also enables the `new-mnemonics' option. - - Specifying `-mcpu=403', `-mcpu=821', or `-mcpu=860' also enables - the `-msoft-float' option. - -`-mtune=CPU_TYPE' - Set the instruction scheduling parameters for machine type - CPU_TYPE, but do not set the architecture type, register usage, - choice of mnemonics like `-mcpu='CPU_TYPE would. The same values - for CPU_TYPE are used for `-mtune='CPU_TYPE as for - `-mcpu='CPU_TYPE. The `-mtune='CPU_TYPE option overrides the - `-mcpu='CPU_TYPE option in terms of instruction scheduling - parameters. - -`-mfull-toc' -`-mno-fp-in-toc' -`-mno-sum-in-toc' -`-mminimal-toc' - Modify generation of the TOC (Table Of Contents), which is created - for every executable file. The `-mfull-toc' option is selected by - default. In that case, GNU CC will allocate at least one TOC - entry for each unique non-automatic variable reference in your - program. GNU CC will also place floating-point constants in the - TOC. However, only 16,384 entries are available in the TOC. - - If you receive a linker error message that saying you have - overflowed the available TOC space, you can reduce the amount of - TOC space used with the `-mno-fp-in-toc' and `-mno-sum-in-toc' - options. `-mno-fp-in-toc' prevents GNU CC from putting - floating-point constants in the TOC and `-mno-sum-in-toc' forces - GNU CC to generate code to calculate the sum of an address and a - constant at run-time instead of putting that sum into the TOC. - You may specify one or both of these options. Each causes GNU CC - to produce very slightly slower and larger code at the expense of - conserving TOC space. - - If you still run out of space in the TOC even when you specify - both of these options, specify `-mminimal-toc' instead. This - option causes GNU CC to make only one TOC entry for every file. - When you specify this option, GNU CC will produce code that is - slower and larger but which uses extremely little TOC space. You - may wish to use this option only on files that contain less - frequently executed code. - -`-mxl-call' -`-mno-xl-call' - On AIX, pass floating-point arguments to prototyped functions - beyond the register save area (RSA) on the stack in addition to - argument FPRs. The AIX calling convention was extended but not - initially documented to handle an obscure K&R C case of calling a - function that takes the address of its arguments with fewer - arguments than declared. AIX XL compilers assume that floating - point arguments which do not fit in the RSA are on the stack when - they compile a subroutine without optimization. Because always - storing floating-point arguments on the stack is inefficient and - rarely needed, this option is not enabled by default and only is - necessary when calling subroutines compiled by AIX XL compilers - without optimization. - -`-mthreads' - Support "AIX Threads". Link an application written to use - "pthreads" with special libraries and startup code to enable the - application to run. - -`-mpe' - Support "IBM RS/6000 SP" "Parallel Environment" (PE). Link an - application written to use message passing with special startup - code to enable the application to run. The system must have PE - installed in the standard location (`/usr/lpp/ppe.poe/'), or the - `specs' file must be overridden with the `-specs=' option to - specify the appropriate directory location. The Parallel - Environment does not support threads, so the `-mpe' option and the - `-mthreads' option are incompatible. - -`-msoft-float' -`-mhard-float' - Generate code that does not use (uses) the floating-point register - set. Software floating point emulation is provided if you use the - `-msoft-float' option, and pass the option to GNU CC when linking. - -`-mmultiple' -`-mno-multiple' - Generate code that uses (does not use) the load multiple word - instructions and the store multiple word instructions. These - instructions are generated by default on POWER systems, and not - generated on PowerPC systems. Do not use `-mmultiple' on little - endian PowerPC systems, since those instructions do not work when - the processor is in little endian mode. - -`-mstring' -`-mno-string' - Generate code that uses (does not use) the load string - instructions and the store string word instructions to save - multiple registers and do small block moves. These instructions - are generated by default on POWER systems, and not generated on - PowerPC systems. Do not use `-mstring' on little endian PowerPC - systems, since those instructions do not work when the processor - is in little endian mode. - -`-mupdate' -`-mno-update' - Generate code that uses (does not use) the load or store - instructions that update the base register to the address of the - calculated memory location. These instructions are generated by - default. If you use `-mno-update', there is a small window - between the time that the stack pointer is updated and the address - of the previous frame is stored, which means code that walks the - stack frame across interrupts or signals may get corrupted data. - -`-mfused-madd' -`-mno-fused-madd' - Generate code that uses (does not use) the floating point multiply - and accumulate instructions. These instructions are generated by - default if hardware floating is used. - -`-mno-bit-align' -`-mbit-align' - On System V.4 and embedded PowerPC systems do not (do) force - structures and unions that contain bit fields to be aligned to the - base type of the bit field. - - For example, by default a structure containing nothing but 8 - `unsigned' bitfields of length 1 would be aligned to a 4 byte - boundary and have a size of 4 bytes. By using `-mno-bit-align', - the structure would be aligned to a 1 byte boundary and be one - byte in size. - -`-mno-strict-align' -`-mstrict-align' - On System V.4 and embedded PowerPC systems do not (do) assume that - unaligned memory references will be handled by the system. - -`-mrelocatable' -`-mno-relocatable' - On embedded PowerPC systems generate code that allows (does not - allow) the program to be relocated to a different address at - runtime. If you use `-mrelocatable' on any module, all objects - linked together must be compiled with `-mrelocatable' or - `-mrelocatable-lib'. - -`-mrelocatable-lib' -`-mno-relocatable-lib' - On embedded PowerPC systems generate code that allows (does not - allow) the program to be relocated to a different address at - runtime. Modules compiled with `-mreloctable-lib' can be linked - with either modules compiled without `-mrelocatable' and - `-mrelocatable-lib' or with modules compiled with the - `-mrelocatable' options. - -`-mno-toc' -`-mtoc' - On System V.4 and embedded PowerPC systems do not (do) assume that - register 2 contains a pointer to a global area pointing to the - addresses used in the program. - -`-mno-traceback' -`-mtraceback' - On embedded PowerPC systems do not (do) generate a traceback tag - before the start of the function. This tag can be used by the - debugger to identify where the start of a function is. - -`-mlittle' -`-mlittle-endian' - On System V.4 and embedded PowerPC systems compile code for the - processor in little endian mode. The `-mlittle-endian' option is - the same as `-mlittle'. - -`-mbig' -`-mbig-endian' - On System V.4 and embedded PowerPC systems compile code for the - processor in big endian mode. The `-mbig-endian' option is the - same as `-mbig'. - -`-mcall-sysv' - On System V.4 and embedded PowerPC systems compile code using - calling conventions that adheres to the March 1995 draft of the - System V Application Binary Interface, PowerPC processor - supplement. This is the default unless you configured GCC using - `powerpc-*-eabiaix'. - -`-mcall-sysv-eabi' - Specify both `-mcall-sysv' and `-meabi' options. - -`-mcall-sysv-noeabi' - Specify both `-mcall-sysv' and `-mno-eabi' options. - -`-mcall-aix' - On System V.4 and embedded PowerPC systems compile code using - calling conventions that are similar to those used on AIX. This - is the default if you configured GCC using `powerpc-*-eabiaix'. - -`-mcall-solaris' - On System V.4 and embedded PowerPC systems compile code for the - Solaris operating system. - -`-mcall-linux' - On System V.4 and embedded PowerPC systems compile code for the - Linux-based GNU system. - -`-mprototype' -`-mno-prototype' - On System V.4 and embedded PowerPC systems assume that all calls to - variable argument functions are properly prototyped. Otherwise, - the compiler must insert an instruction before every non - prototyped call to set or clear bit 6 of the condition code - register (CR) to indicate whether floating point values were - passed in the floating point registers in case the function takes - a variable arguments. With `-mprototype', only calls to - prototyped variable argument functions will set or clear the bit. - -`-msim' - On embedded PowerPC systems, assume that the startup module is - called `sim-crt0.o' and that the standard C libraries are - `libsim.a' and `libc.a'. This is the default for - `powerpc-*-eabisim'. configurations. - -`-mmvme' - On embedded PowerPC systems, assume that the startup module is - called `crt0.o' and the standard C libraries are `libmvme.a' and - `libc.a'. - -`-mads' - On embedded PowerPC systems, assume that the startup module is - called `crt0.o' and the standard C libraries are `libads.a' and - `libc.a'. - -`-myellowknife' - On embedded PowerPC systems, assume that the startup module is - called `crt0.o' and the standard C libraries are `libyk.a' and - `libc.a'. - -`-memb' - On embedded PowerPC systems, set the PPC_EMB bit in the ELF flags - header to indicate that `eabi' extended relocations are used. - -`-meabi' -`-mno-eabi' - On System V.4 and embedded PowerPC systems do (do not) adhere to - the Embedded Applications Binary Interface (eabi) which is a set of - modifications to the System V.4 specifications. Selecting `-meabi' - means that the stack is aligned to an 8 byte boundary, a function - `__eabi' is called to from `main' to set up the eabi environment, - and the `-msdata' option can use both `r2' and `r13' to point to - two separate small data areas. Selecting `-mno-eabi' means that - the stack is aligned to a 16 byte boundary, do not call an - initialization function from `main', and the `-msdata' option will - only use `r13' to point to a single small data area. The `-meabi' - option is on by default if you configured GCC using one of the - `powerpc*-*-eabi*' options. - -`-msdata=eabi' - On System V.4 and embedded PowerPC systems, put small initialized - `const' global and static data in the `.sdata2' section, which is - pointed to by register `r2'. Put small initialized non-`const' - global and static data in the `.sdata' section, which is pointed - to by register `r13'. Put small uninitialized global and static - data in the `.sbss' section, which is adjacent to the `.sdata' - section. The `-msdata=eabi' option is incompatible with the - `-mrelocatable' option. The `-msdata=eabi' option also sets the - `-memb' option. - -`-msdata=sysv' - On System V.4 and embedded PowerPC systems, put small global and - static data in the `.sdata' section, which is pointed to by - register `r13'. Put small uninitialized global and static data in - the `.sbss' section, which is adjacent to the `.sdata' section. - The `-msdata=sysv' option is incompatible with the `-mrelocatable' - option. - -`-msdata=default' -`-msdata' - On System V.4 and embedded PowerPC systems, if `-meabi' is used, - compile code the same as `-msdata=eabi', otherwise compile code the - same as `-msdata=sysv'. - -`-msdata-data' - On System V.4 and embedded PowerPC systems, put small global and - static data in the `.sdata' section. Put small uninitialized - global and static data in the `.sbss' section. Do not use - register `r13' to address small data however. This is the default - behavior unless other `-msdata' options are used. - -`-msdata=none' -`-mno-sdata' - On embedded PowerPC systems, put all initialized global and static - data in the `.data' section, and all uninitialized data in the - `.bss' section. - -`-G NUM' - On embbeded PowerPC systems, 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. By default, NUM is 8. The `-G - NUM' switch is also passed to the linker. All modules should be - compiled with the same `-G NUM' value. - -`-mregnames' -`-mno-regnames' - On System V.4 and embedded PowerPC systems do (do not) emit - register names in the assembly language output using symbolic - forms. - - -File: gcc.info, Node: RT Options, Next: MIPS Options, Prev: RS/6000 and PowerPC Options, Up: Submodel Options - -IBM RT Options --------------- - - These `-m' options are defined for the IBM RT PC: - -`-min-line-mul' - Use an in-line code sequence for integer multiplies. This is the - default. - -`-mcall-lib-mul' - Call `lmul$$' for integer multiples. - -`-mfull-fp-blocks' - Generate full-size floating point data blocks, including the - minimum amount of scratch space recommended by IBM. This is the - default. - -`-mminimum-fp-blocks' - Do not include extra scratch space in floating point data blocks. - This results in smaller code, but slower execution, since scratch - space must be allocated dynamically. - -`-mfp-arg-in-fpregs' - Use a calling sequence incompatible with the IBM calling - convention in which floating point arguments are passed in - floating point registers. Note that `varargs.h' and `stdargs.h' - will not work with floating point operands if this option is - specified. - -`-mfp-arg-in-gregs' - Use the normal calling convention for floating point arguments. - This is the default. - -`-mhc-struct-return' - Return structures of more than one word in memory, rather than in a - register. This provides compatibility with the MetaWare HighC (hc) - compiler. Use the option `-fpcc-struct-return' for compatibility - with the Portable C Compiler (pcc). - -`-mnohc-struct-return' - Return some structures of more than one word in registers, when - convenient. This is the default. For compatibility with the - IBM-supplied compilers, use the option `-fpcc-struct-return' or the - option `-mhc-struct-return'. - - -File: gcc.info, Node: MIPS Options, Next: i386 Options, Prev: RT Options, Up: Submodel Options - -MIPS Options ------------- - - These `-m' options are defined for the MIPS family of computers: - -`-mcpu=CPU TYPE' - Assume the defaults for the machine type CPU TYPE when scheduling - instructions. The choices for CPU TYPE are `r2000', `r3000', - `r4000', `r4400', `r4600', and `r6000'. 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 the - `-mips2' or `-mips3' switches being used. - -`-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. - This option does not change the sizes of any of the C data types. - -`-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. - -`-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' - Types long, int, and pointer are 64 bits. This works only if - `-mips3' is also specified. - -`-mlong64' - Types long and pointer are 64 bits, and type int is 32 bits. This - works only if `-mips3' is also specified. - -`-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 GNU CC. - 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. This requires GNU as and GNU ld which do - most of the work. - -`-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. - -`-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'. - -`-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 it's preprocessor over user - assembler files (with a `.s' suffix) when assembling them. - - 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. - - -File: gcc.info, Node: i386 Options, Next: HPPA Options, Prev: MIPS Options, Up: Submodel Options - -Intel 386 Options ------------------ - - These `-m' options are defined for the i386 family of computers: - -`-m486' -`-m386' - Control whether or not code is optimized for a 486 instead of an - 386. Code generated for an 486 will run on a 386 and vice versa. - -`-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 GNU CC. - 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. As of - revision 2.6.1, these instructions are not generated unless you - also use the `-ffast-math' switch. - -`-malign-double' -`-mno-align-double' - Control whether GNU CC 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. - -`-msvr3-shlib' -`-mno-svr3-shlib' - Control whether GNU CC places uninitialized locals into `bss' or - `data'. `-msvr3-shlib' places these locals into `bss'. These - options are meaningful only on System V Release 3. - -`-mno-wide-multiply' -`-mwide-multiply' - Control whether GNU CC uses the `mul' and `imul' that produce 64 - bit results in `eax:edx' from 32 bit operands to do `long long' - multiplies and 32-bit division by constants. - -`-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.) - -`-mreg-alloc=REGS' - Control the default allocation order of integer registers. The - string REGS is a series of letters specifying a register. The - supported letters are: `a' allocate EAX; `b' allocate EBX; `c' - allocate ECX; `d' allocate EDX; `S' allocate ESI; `D' allocate - EDI; `B' allocate EBP. - -`-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. - -`-malign-loops=NUM' - Align loops to a 2 raised to a NUM byte boundary. If - `-malign-loops' is not specified, the default is 2. - -`-malign-jumps=NUM' - Align instructions that are only jumped to to a 2 raised to a NUM - byte boundary. If `-malign-jumps' is not specified, the default is - 2 if optimizing for a 386, and 4 if optimizing for a 486. - -`-malign-functions=NUM' - Align the start of functions to a 2 raised to NUM byte boundary. - If `-malign-functions' is not specified, the default is 2 if - optimizing for a 386, and 4 if optimizing for a 486. - - -File: gcc.info, Node: HPPA Options, Next: Intel 960 Options, Prev: i386 Options, Up: Submodel Options - -HPPA Options ------------- - - These `-m' options are defined for the HPPA family of computers: - -`-mpa-risc-1-0' - Generate code for a PA 1.0 processor. - -`-mpa-risc-1-1' - Generate code for a PA 1.1 processor. - -`-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 presense of shared libraries or - nested functions. - -`-mspace' - Optimize for space rather than execution time. Currently this only - enables out of line function prologues and epilogues. This option - is incompatable with PIC code generation and profiling. - -`-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' for 7N0 machines, - `7100' for 7N5 machines, and `7100' for 7N2 machines. `7100' is - the default for CPU TYPE. - - Note the `7100LC' scheduling information is incomplete and using - `7100LC' often leads to bad schedules. For now it's probably best - to use `7100' instead of `7100LC' for the 7N2 machines. - -`-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 GNU CC, with `-msoft-float' in order for - this to work. - - -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'. - |