; Options for the picoChip port of the compiler.

; Copyright (C) 2008-2013 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/>.

mae=
Target RejectNegative Joined Var(picochip_ae_type_string)
Specify which type of AE to target. This option sets the mul-type and byte-access.

mmul-type=
Target RejectNegative Undocumented Joined Var(picochip_mul_type_string)
Specify which type of multiplication to use. Can be mem, mac or none.

mbyte-access
Target Undocumented Var(picochip_has_byte_access,1) Init(1)
Specify whether the byte access instructions should be used. Enabled by default.

mdebug
Target RejectNegative Undocumented Mask(DEBUG)
Enable debug output to be generated.

msymbol-as-address
Target Mask(SYMBOL_AS_ADDRESS)
Allow a symbol value to be used as an immediate value in an instruction.

minefficient-warnings
Target Mask(INEFFICIENT_WARNINGS)
Generate warnings when inefficient code is known to be generated.

minefficient
Target Mask(INEFFICIENT_WARNINGS) Undocumented
