(root)/
gcc-13.2.0/
gcc/
m2/
lang.opt
; Options for the Modula-2 front end.
;
; Copyright (C) 2016-2023 Free Software Foundation, Inc.
; Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
;
; This file is part of GNU Modula-2.
;
; GNU Modula-2 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.
;
; GNU Modula-2 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 GNU Modula-2; see the file COPYING.  If not,
; see <https://www.gnu.org/licenses/>.  *)

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

; There are two sections:
;  1. Options specific to Modula-2
;  2. Options shared with C or the Driver.
; Please keep any new additions for either case in the relevant section.
; Please try to keep this file in ASCII collating order.

Language
Modula-2

Wpedantic-param-names
Modula-2
compiler checks to force definition module procedure parameter names with their implementation module counterpart

Wpedantic-cast
Modula-2
compiler warns if a cast is being used on types of differing sizes

Wverbose-unbounded
Modula-2
inform user which parameters will be passed by reference

Wstyle
Modula-2
extra compile time semantic checking, typically tries to catch poor programming style

fauto-init
Modula-2
automatically initializes all pointers to NIL

fbounds
Modula-2
turns on runtime subrange, array index and indirection via NIL pointer checking

fcase
Modula-2
turns on runtime checking to check whether a CASE statement requires an ELSE clause when one was not specified

fcpp
Modula-2
use cpp to preprocess the module

fcpp-end
Modula-2
passed to the preprocessor if -fcpp is used (internal switch)

fcpp-begin
Modula-2
passed to the preprocessor if -fcpp is used (internal switch)

fdebug-builtins
Modula-2
call a real function, rather than the builtin equivalent

fd
Modula-2
turn on internal debugging of the compiler (internal switch)

fdebug-trace-quad
Modula-2
turn on quadruple tracing (internal switch)

fdebug-trace-api
Modula-2
turn on the Modula-2 api tracing (internal switch)

fdebug-function-line-numbers
Modula-2
turn on the Modula-2 function line number generation (internal switch)

fdef=
Modula-2 Joined
recognise the specified suffix as a definition module filename

fdump-system-exports
Modula-2
display all inbuilt system items

fextended-opaque
Modula-2
allows opaque types to be implemented as any type (a GNU Modula-2 extension)

ffloatvalue
Modula-2
turns on runtime checking to check whether a floating point number will exceed range

fgen-module-list=
Modula-2 Joined
create a topologically sorted module list from all dependent modules used in the application

findex
Modula-2
turns on all range checking for numerical values

fiso
Modula-2
use ISO dialect of Modula-2

flibs=
Modula-2 Joined
specify the library order, the libraries may be specified by a comma separated abbreviation: log,min,pim,iso or by directory names: m2log,m2min,m2pim,m2iso.

flocation=
Modula-2 Joined
set all location values to a specific value (internal switch)

fm2-g
Modula-2
generate extra nops to improve debugging, producing an instruction for every code related keyword

fm2-lower-case
Modula-2
generate error messages which render keywords in lower case

fm2-pathname=
Modula-2 Joined
specify the module mangled prefix name for all modules in the following include paths

fm2-pathnameI
Modula-2 Joined
; For internal use only: used by the driver to copy the user facing -I option

fm2-plugin
Modula-2
insert plugin to identify runtime errors at compiletime

fm2-prefix=
Modula-2 Joined
specify the module mangled prefix name

fm2-statistics
Modula-2
display statistics about the amount of source lines compiled and symbols used

fm2-strict-type
Modula-2
experimental flag to turn on the new strict type checker

fm2-whole-program
Modula-2
compile all implementation modules and program module at once

fmod=
Modula-2 Joined
recognise the specified suffix as implementation and module filenames

fnil
Modula-2
turns on runtime checking to detect accessing data through a NIL value pointer

fpim
Modula-2
use PIM [234] dialect of Modula-2

fpim2
Modula-2
use PIM 2 dialect of Modula-2

fpim3
Modula-2
use PIM 3 dialect of Modula-2

fpim4
Modula-2
use PIM 4 dialect of Modula-2

fpositive-mod-floor-div
Modula-2
force positive result from MOD and DIV result floor

fpthread
Modula-2
link against the pthread library (default on)

fq
Modula-2
internal compiler debugging information, dump the list of quadruples

frange
Modula-2
turns on all range checking for numerical values

freturn
Modula-2
turns on runtime checking for functions which finish without executing a RETURN statement

fruntime-modules=
Modula-2 Joined
specify the list of runtime modules and their initialization order

fscaffold-dynamic
Modula-2
the modules initialization order is dynamically determined by M2RTS and application dependencies

fscaffold-c
Modula-2
generate a C source scaffold for the current module being compiled

fscaffold-c++
Modula-2
generate a C++ source scaffold for the current module being compiled

fscaffold-main
Modula-2
generate the main function

fscaffold-static
Modula-2
generate static scaffold initialization and finalization for every module inside main

fshared
Modula-2
generate a shared library from the module

fsoft-check-all
Modula-2
turns on all software runtime checking (an abbreviation for -fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue)

fsources
Modula-2
display the location of module source files as they are compiled

fswig
Modula-2
create a swig interface file for the module

funbounded-by-reference
Modula-2
optimize non var unbounded parameters by passing it by reference, providing it is not written to within the callee procedure.

fuse-list=
Modula-2 Joined
orders the initialization/finalializations for scaffold-static or force linking of modules if scaffold-dynamic

fversion
Modula-2
; Documented in common.opt

fwholediv
Modula-2
turns on all division and modulus by zero checking for ordinal values

fwholevalue
Modula-2
turns on runtime checking to check whether a whole number will exceed range

static-libgm2
Driver
Link the standard Modula-2 libraries statically in the compilation.

; Here are C options that we also recognise, either within the compiler
; or to build the preprocessor command lines.

Wall
Modula-2
; Documented in c.opt

Wpedantic
Modula-2
; Documented in common.opt

Wreturn-type
Modula-2
; Documented in common.opt

Wunused-variable
Modula-2
; Documented in c.opt

Wunused-parameter
Modula-2
; Documented in c.opt

B
Modula-2
; Documented in c.opt

D
Modula-2
; Documented in c.opt

E
Modula-2
; Documented in c.opt

I
Modula-2 Joined Separate
; Documented in c.opt

L
Modula-2 Joined Separate
; Not documented

M
Modula-2
; Documented in c.opt

MD
Modula-2
; Documented in c.opt

MF
Modula-2
; Documented in c.opt

MG
Modula-2
; Documented in c.opt

MM
Modula-2
; Documented in c.opt

MMD
Modula-2
; Documented in c.opt

Mmodules
Modula-2
; Documented in c.opt

Mno-modules
Modula-2
; Documented in c.opt

MP
Modula-2
; Documented in c.opt

MQ
Modula-2
; Documented in c.opt

MT
Modula-2
; Documented in c.opt

P
Modula-2
; Documented in c.opt

ansi
Modula-2
; Documented in c.opt

c
Modula-2
; Documented in c.opt

fexceptions
Modula-2
; Documented in common.opt

fobjc-std=objc1
Modula-2
; Documented in c.opt

fpreprocessed
Modula-2
; Documented in c.opt

fworking-directory
Modula-2
; Documented in c.opt

iprefix
Modula-2
; Documented in c.opt

iquote
Modula-2
; Documented in c.opt

isystem
Modula-2
; Documented in c.opt

idirafter
Modula-2
; Documented in c.opt

imultilib
Modula-2

-save-temps
Modula-2 Alias(save-temps)

save-temps
Modula-2
save temporary preprocessed files

save-temps=
Modula-2 Joined
save temporary preprocessed files

traditional-cpp
Modula-2
; Documented in c.opt

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