компилятор C и C ++ проекта GNU (GNU project C and C++ compiler)
Параметры подробно (Options detail)
V850
These -m
options are defined for V850 implementations:
-mlong-calls
-mno-long-calls
Treat all calls as being far away (near). If calls are
assumed to be far away, the compiler always loads the
function's address into a register, and calls indirect
through the pointer.
-mno-ep
-mep
Do not optimize (do optimize) basic blocks that use the same
index pointer 4 or more times to copy pointer into the "ep"
register, and use the shorter "sld" and "sst" instructions.
The -mep
option is on by default if you optimize.
-mno-prolog-function
-mprolog-function
Do not use (do use) external functions to save and restore
registers at the prologue and epilogue of a function. The
external functions are slower, but use less code space if
more than one function saves the same number of registers.
The -mprolog-function
option is on by default if you
optimize.
-mspace
Try to make the code as small as possible. At present, this
just turns on the -mep
and -mprolog-function
options.
-mtda=
n
Put static or global variables whose size is n bytes or less
into the tiny data area that register "ep" points to. The
tiny data area can hold up to 256 bytes in total (128 bytes
for byte references).
-msda=
n
Put static or global variables whose size is n bytes or less
into the small data area that register "gp" points to. The
small data area can hold up to 64 kilobytes.
-mzda=
n
Put static or global variables whose size is n bytes or less
into the first 32 kilobytes of memory.
-mv850
Specify that the target processor is the V850.
-mv850e3v5
Specify that the target processor is the V850E3V5. The
preprocessor constant "__v850e3v5__" is defined if this
option is used.
-mv850e2v4
Specify that the target processor is the V850E3V5. This is
an alias for the -mv850e3v5
option.
-mv850e2v3
Specify that the target processor is the V850E2V3. The
preprocessor constant "__v850e2v3__" is defined if this
option is used.
-mv850e2
Specify that the target processor is the V850E2. The
preprocessor constant "__v850e2__" is defined if this option
is used.
-mv850e1
Specify that the target processor is the V850E1. The
preprocessor constants "__v850e1__" and "__v850e__" are
defined if this option is used.
-mv850es
Specify that the target processor is the V850ES. This is an
alias for the -mv850e1
option.
-mv850e
Specify that the target processor is the V850E. The
preprocessor constant "__v850e__" is defined if this option
is used.
If neither -mv850
nor -mv850e
nor -mv850e1
nor -mv850e2
nor
-mv850e2v3
nor -mv850e3v5
are defined then a default target
processor is chosen and the relevant __v850*__
preprocessor
constant is defined.
The preprocessor constants "__v850" and "__v851__" are always
defined, regardless of which processor variant is the target.
-mdisable-callt
-mno-disable-callt
This option suppresses generation of the "CALLT" instruction
for the v850e, v850e1, v850e2, v850e2v3 and v850e3v5 flavors
of the v850 architecture.
This option is enabled by default when the RH850 ABI is in
use (see -mrh850-abi
), and disabled by default when the GCC
ABI is in use. If "CALLT" instructions are being generated
then the C preprocessor symbol "__V850_CALLT__" is defined.
-mrelax
-mno-relax
Pass on (or do not pass on) the -mrelax
command-line option
to the assembler.
-mlong-jumps
-mno-long-jumps
Disable (or re-enable) the generation of PC-relative jump
instructions.
-msoft-float
-mhard-float
Disable (or re-enable) the generation of hardware floating
point instructions. This option is only significant when the
target architecture is V850E2V3
or higher. If hardware
floating point instructions are being generated then the C
preprocessor symbol "__FPU_OK__" is defined, otherwise the
symbol "__NO_FPU__" is defined.
-mloop
Enables the use of the e3v5 LOOP instruction. The use of
this instruction is not enabled by default when the e3v5
architecture is selected because its use is still
experimental.
-mrh850-abi
-mghs
Enables support for the RH850 version of the V850 ABI. This
is the default. With this version of the ABI the following
rules apply:
* Integer sized structures and unions are returned via a
memory pointer rather than a register.
* Large structures and unions (more than 8 bytes in size)
are passed by value.
* Functions are aligned to 16-bit boundaries.
* The -m8byte-align
command-line option is supported.
* The -mdisable-callt
command-line option is enabled by
default. The -mno-disable-callt
command-line option is
not supported.
When this version of the ABI is enabled the C preprocessor
symbol "__V850_RH850_ABI__" is defined.
-mgcc-abi
Enables support for the old GCC version of the V850 ABI.
With this version of the ABI the following rules apply:
* Integer sized structures and unions are returned in
register "r10".
* Large structures and unions (more than 8 bytes in size)
are passed by reference.
* Functions are aligned to 32-bit boundaries, unless
optimizing for size.
* The -m8byte-align
command-line option is not supported.
* The -mdisable-callt
command-line option is supported but
not enabled by default.
When this version of the ABI is enabled the C preprocessor
symbol "__V850_GCC_ABI__" is defined.
-m8byte-align
-mno-8byte-align
Enables support for "double" and "long long" types to be
aligned on 8-byte boundaries. The default is to restrict the
alignment of all objects to at most 4-bytes. When
-m8byte-align
is in effect the C preprocessor symbol
"__V850_8BYTE_ALIGN__" is defined.
-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.
-mapp-regs
This option causes r2 and r5 to be used in the code generated
by the compiler. This setting is the default.
-mno-app-regs
This option causes r2 and r5 to be treated as fixed
registers.