V850 Options (Using the GNU Compiler Collection (GCC))

#### 3.20.51 V850 Options ¶

These ‘`-m`’ options are defined for V850 implementations:

`-mlong-calls` ¶
`-mno-long-calls`

  Treat all calls as being far away (near). If calls are assumed to be far away, the compiler 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` ¶
`-mno-big-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` ¶
`-mno-app-regs`

  `-mapp-regs` causes r2 and r5 to be used in the code generated by the compiler. This setting is the default. `-mno-app-regs` causes r2 and r5 to be treated as fixed registers.

`-msmall-sld` ¶
`-mno-small-sld`

  Enable or disable the use of the short load instructions.

`-mno-strict-align` ¶

  Do not enforce strict data alignment.

`-mjump-tables-in-data-section` ¶
`-mno-jump-tables-in-data-section`

  Enable or disable placement of jump tables for switch statements in the `.data` section rather than the `.code` section. The default is `-mno-jump-tables-in-data-section`.