mirror of
https://github.com/pmret/gcc-papermario.git
synced 2024-11-09 20:32:32 +01:00
1188 lines
49 KiB
Plaintext
1188 lines
49 KiB
Plaintext
|
This is Info file gcc.info, produced by Makeinfo version 1.67 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, 1998
|
|||
|
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 `-mrelocatable-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 embedded 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:
|
|||
|
|
|||
|
`-mcpu=CPU TYPE'
|
|||
|
Assume the defaults for the machine type CPU TYPE when scheduling
|
|||
|
instructions. The choices for CPU TYPE are: `i386', `i486',
|
|||
|
`i586' (`pentium'), `pentium', `i686' (`pentiumpro') and
|
|||
|
`pentiumpro'. 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.
|
|||
|
|
|||
|
`-march=CPU TYPE'
|
|||
|
Generate instructions for the machine type CPU TYPE. The choices
|
|||
|
for CPU TYPE are: `i386', `i486', `pentium', and `pentiumpro'.
|
|||
|
Specifying `-march=CPU TYPE' implies `-mcpu=CPU TYPE'.
|
|||
|
|
|||
|
`-m386'
|
|||
|
`-m486'
|
|||
|
`-mpentium'
|
|||
|
`-mpentiumpro'
|
|||
|
Synonyms for -mcpu=i386, -mcpu=i486, -mcpu=pentium, and
|
|||
|
-mcpu=pentiumpro respectively.
|
|||
|
|
|||
|
`-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 incompatible 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'.
|
|||
|
|