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

#### 3.20.16 FRV Options ¶

`-mgpr-32` ¶

  Only use the first 32 general-purpose registers.

`-mgpr-64` ¶

  Use all 64 general-purpose registers.

`-mfpr-32` ¶

  Use only the first 32 floating-point registers.

`-mfpr-64` ¶

  Use all 64 floating-point registers.

`-mhard-float` ¶

  Use hardware instructions for floating-point operations.

`-msoft-float` ¶

  Use library routines for floating-point operations.

`-malloc-cc` ¶

  Dynamically allocate condition code registers.

`-mfixed-cc` ¶

  Do not try to dynamically allocate condition code registers, only use `icc0` and `fcc0`.

`-mdword` ¶
`-mno-dword`

  Control whether the ABI uses double-word instructions.

`-mdouble` ¶
`-mno-double`

  Enable or disable use of floating-point double instructions.

`-mmedia` ¶
`-mno-media`

  Enable or disable use of media instructions.

`-mmuladd` ¶
`-mno-muladd`

  Enable or disable use of multiply and add/subtract instructions.

`-mfdpic` ¶

  Select the FDPIC ABI, which uses function descriptors to represent pointers to functions. Without any PIC/PIE-related options, it implies `-fPIE`. With `-fpic` or `-fpie`, it assumes GOT entries and small data are within a 12-bit range from the GOT base address; with `-fPIC` or `-fPIE`, GOT offsets are computed with 32 bits. With a ‘`bfin-elf`’ target, this option implies `-msim`.

`-minline-plt` ¶

  Enable inlining of PLT entries in function calls to functions that are not known to bind locally. It has no effect without `-mfdpic`. It’s enabled by default if optimizing for speed and compiling for shared libraries (i.e., `-fPIC` or `-fpic`), or when an optimization option such as `-O3` or above is present in the command line.

`-mTLS` ¶

  Assume a large TLS segment when generating thread-local code.

`-mtls` ¶

  Do not assume a large TLS segment when generating thread-local code.

`-mgprel-ro` ¶

  Enable the use of `GPREL` relocations in the FDPIC ABI for data that is known to be in read-only sections. It’s enabled by default, except for `-fpic` or `-fpie`: even though it may help make the global offset table smaller, it trades 1 instruction for 4. With `-fPIC` or `-fPIE`, it trades 3 instructions for 4, one of which may be shared by multiple symbols, and it avoids the need for a GOT entry for the referenced symbol, so it’s more likely to be a win. If it is not, `-mno-gprel-ro` can be used to disable it.

`-multilib-library-pic` ¶

  Link with the (library, not FD) pic libraries. It’s implied by `-mlibrary-pic`, as well as by `-fPIC` and `-fpic` without `-mfdpic`. You should never have to use it explicitly.

`-mlinked-fp` ¶

  Follow the EABI requirement of always creating a frame pointer whenever a stack frame is allocated. This option is enabled by default and can be disabled with `-mno-linked-fp`.

`-mlong-calls` ¶

  Use indirect addressing to call functions outside the current compilation unit. This allows the functions to be placed anywhere within the 32-bit address space.

`-malign-labels` ¶

  Try to align labels to an 8-byte boundary by inserting NOPs into the previous packet. This option only has an effect when VLIW packing is enabled. It doesn’t create new packets; it merely adds NOPs to existing ones.

`-mlibrary-pic` ¶

  Generate position-independent EABI code.

`-macc-4` ¶

  Use only the first four media accumulator registers.

`-macc-8` ¶

  Use all eight media accumulator registers.

`-mpack` ¶
`-mno-pack`

  Enable or disable packing VLIW instructions.

`-mno-eflags` ¶

  Do not mark ABI switches in e_flags.

`-mcond-move` ¶
`-mno-cond-move`

  Enable or disable the use of conditional-move instructions; it is enabled by default.

  This switch is mainly for debugging the compiler and will likely be removed in a future version.

`-mscc` ¶
`-mno-scc`

  Enable or disable the use of conditional set instructions; it is enabled by default.

  This switch is mainly for debugging the compiler and will likely be removed in a future version.

`-mcond-exec` ¶
`-mno-cond-exec`

  Enable or disable the use of conditional execution; it is enabled by default.

  This switch is mainly for debugging the compiler and will likely be removed in a future version.

`-mvliw-branch` ¶
`-mno-vliw-branch`

  Enable or disable an optimization pass to pack branches into VLIW instructions; it is enabled by default.

  This switch is mainly for debugging the compiler and will likely be removed in a future version.

`-mmulti-cond-exec` ¶
`-mno-multi-cond-exec`

  Enable or disable optimization of `&&` and `||` in conditional execution; it is enabled by default.

  This switch is mainly for debugging the compiler and will likely be removed in a future version.

`-mnested-cond-exec` ¶
`-mno-nested-cond-exec`

  Enable or disable nested conditional execution optimizations; it is enabled by default.

  This switch is mainly for debugging the compiler and will likely be removed in a future version.

`-moptimize-membar` ¶
`-mno-optimize-membar`

  This switch removes redundant `membar` instructions from the compiler-generated code. It is enabled by default.

`-mtomcat-stats` ¶

  Cause gas to print out tomcat statistics.

`-mcpu=cpu` ¶

  Select the processor type for which to generate code. Possible values are ‘`frv`’, ‘`fr550`’, ‘`tomcat`’, ‘`fr500`’, ‘`fr450`’, ‘`fr405`’, ‘`fr400`’, ‘`fr300`’ and ‘`simple`’.