; Options for the NEC V850 port of the compiler.

; Copyright (C) 2005-2021 Free Software Foundation, Inc.
;
; This file is part of GCC.
;
; GCC is free software; you can redistribute it and/or modify it under
; the terms of the GNU General Public License as published by the Free
; Software Foundation; either version 3, or (at your option) any later
; version.
;
; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
; WARRANTY; without even the implied warranty of MERCHANTABILITY or
; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
; for more details.
;
; You should have received a copy of the GNU General Public License
; along with GCC; see the file COPYING3.  If not see
; <http://www.gnu.org/licenses/>.

HeaderInclude
config/v850/v850-opts.h

Variable
int small_memory_max[(int)SMALL_MEMORY_max] = { 0, 0, 0 }

mapp-regs
Target Mask(APP_REGS)
Use registers r2 and r5.

mbig-switch
Target Mask(BIG_SWITCH)
Use 4 byte entries in switch tables.

mdebug
Target Mask(DEBUG)
Enable backend debugging.

mdisable-callt
Target Mask(DISABLE_CALLT)
Do not use the callt instruction (default).

mep
Target Mask(EP)
Reuse r30 on a per function basis.

mghs
Target RejectNegative InverseMask(GCC_ABI) MaskExists

mlong-calls
Target Mask(LONG_CALLS)
Prohibit PC relative function calls.

mprolog-function
Target Mask(PROLOG_FUNCTION)
Use stubs for function prologues.

msda=
Target RejectNegative Joined UInteger
Set the max size of data eligible for the SDA area.

msda-
Target RejectNegative Joined Undocumented Alias(msda=)

msmall-sld
Target Mask(SMALL_SLD)
Enable the use of the short load instructions.

mspace
Target RejectNegative
Same as: -mep -mprolog-function.

mtda=
Target RejectNegative Joined UInteger
Set the max size of data eligible for the TDA area.

mtda-
Target RejectNegative Joined Undocumented Alias(mtda=)

mno-strict-align
Target Mask(NO_STRICT_ALIGN)
Do not enforce strict alignment.

mjump-tables-in-data-section
Target Mask(JUMP_TABLES_IN_DATA_SECTION)
Put jump tables for switch statements into the .data section rather than the .code section.

mUS-bit-set
Target Mask(US_BIT_SET)

mv850
Target RejectNegative Mask(V850)
Compile for the v850 processor.

mv850e
Target RejectNegative Mask(V850E)
Compile for the v850e processor.

mv850e1
Target RejectNegative Mask(V850E1)
Compile for the v850e1 processor.

mv850es
Target RejectNegative Mask(V850E1)
Compile for the v850es variant of the v850e1.

mv850e2
Target RejectNegative Mask(V850E2)
Compile for the v850e2 processor.

mv850e2v3
Target RejectNegative Mask(V850E2V3)
Compile for the v850e2v3 processor.

mv850e3v5
Target RejectNegative Mask(V850E3V5)
Compile for the v850e3v5 processor.

mv850e2v4
Target RejectNegative Mask(V850E3V5) MaskExists

mloop
Target Mask(LOOP)
Enable v850e3v5 loop instructions.

mzda=
Target RejectNegative Joined UInteger
Set the max size of data eligible for the ZDA area.

mzda-
Target RejectNegative Joined Undocumented Alias(mzda=)

mrelax
Target Mask(RELAX)
Enable relaxing in the assembler.

mlong-jumps
Target Mask(BIG_SWITCH) MaskExists
Prohibit PC relative jumps.

msoft-float
Target RejectNegative Mask(SOFT_FLOAT)
Inhibit the use of hardware floating point instructions.

mhard-float
Target RejectNegative InverseMask(SOFT_FLOAT) MaskExists
Allow the use of hardware floating point instructions for V850E2V3 and up.

mrh850-abi
Target RejectNegative InverseMask(GCC_ABI) MaskExists
Enable support for the RH850 ABI.  This is the default.

mgcc-abi
Target RejectNegative Mask(GCC_ABI)
Enable support for the old GCC ABI.

m8byte-align
Target Mask(8BYTE_ALIGN)
Support alignments of up to 64-bits.
