; Options for the Vitesse IQ2000 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/iq2000/iq2000-opts.h

; The target cpu for optimization and scheduling.
Variable
enum processor_type iq2000_tune = PROCESSOR_DEFAULT

; This option has no effect at the moment.
march=
Target RejectNegative Joined Enum(iq2000_arch)
Specify CPU for code generation purposes.

Enum
Name(iq2000_arch) Type(int)

EnumValue
Enum(iq2000_arch) String(default) Value(0)

EnumValue
Enum(iq2000_arch) String(DEFAULT) Value(0)

EnumValue
Enum(iq2000_arch) String(iq2000) Value(0)

mcpu=
Target RejectNegative Joined Enum(iq2000_tune) Var(iq2000_tune)
Specify CPU for scheduling purposes.

Enum
Name(iq2000_tune) Type(enum processor_type)
Known IQ2000 CPUs (for use with the -mcpu= option):

EnumValue
Enum(iq2000_tune) String(iq10) Value(PROCESSOR_IQ10)

EnumValue
Enum(iq2000_tune) String(iq2000) Value(PROCESSOR_IQ2000)

membedded-data
Target Mask(EMBEDDED_DATA)
Use ROM instead of RAM.

mgpopt
Target Mask(GPOPT)
Use GP relative sdata/sbss sections.

; Not used by the compiler proper.
mno-crt0
Target RejectNegative
No default crt0.o.

muninit-const-in-rodata
Target Mask(UNINIT_CONST_IN_RODATA)
Put uninitialized constants in ROM (needs -membedded-data).
