; lang.opt -- Options for the gcc Go front end.

; Copyright (C) 2009-2018 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/>.

; See the GCC internals manual for a description of this file's format.

; Please try to keep this file in ASCII collating order.

Language
Go

I
Go Joined Separate
; Documented in c.opt

L
Go Joined Separate
; Not documented

Wall
Go
; Documented in c.opt

fgo-c-header=
Go Joined RejectNegative
-fgo-c-header=<file>	Write Go struct definitions to file as C code.

fgo-check-divide-zero
Go Var(go_check_divide_zero) Init(1)
Add explicit checks for division by zero.

fgo-check-divide-overflow
Go Var(go_check_divide_overflow) Init(1)
Add explicit checks for division overflow in INT_MIN / -1.

fgo-compiling-runtime
Go Var(go_compiling_runtime) Init(0)
Apply special rules for compiling runtime package.

fgo-dump-
Go Joined RejectNegative
-fgo-dump-<type>	Dump Go frontend internal information.

fgo-optimize-
Go Joined
-fgo-optimize-<type>	Turn on optimization passes in the frontend.

fgo-pkgpath=
Go Joined RejectNegative
-fgo-pkgpath=<string>	Set Go package path.

fgo-prefix=
Go Joined RejectNegative
-fgo-prefix=<string>	Set package-specific prefix for exported Go names.

fgo-relative-import-path=
Go Joined RejectNegative
-fgo-relative-import-path=<path>	Treat a relative import as relative to path.

frequire-return-statement
Go Var(go_require_return_statement) Init(1) Warning
Functions which return values must end with return statements.

fgo-debug-escape
Go Joined UInteger Var(go_debug_escape_level) Init(0)
Emit debugging information related to the escape analysis pass when run with -fgo-optimize-allocs.

fgo-debug-escape-hash=
Go Joined RejectNegative Var(go_debug_escape_hash) Init(0)
-fgo-debug-escape-hash=<string>	Hash value to debug escape analysis.

o
Go Joined Separate
; Documented in common.opt

; This comment is to ensure we retain the blank line above.
