1 ; Options for the Modula-2 front end.
3 ; Copyright (C) 2016-2024 Free Software Foundation, Inc.
4 ; Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
6 ; This file is part of GNU Modula-2.
8 ; GNU Modula-2 is free software; you can redistribute it and/or modify
9 ; it under the terms of the GNU General Public License as published by
10 ; the Free Software Foundation; either version 3, or (at your option)
13 ; GNU Modula-2 is distributed in the hope that it will be useful, but
14 ; WITHOUT ANY WARRANTY; without even the implied warranty of
15 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 ; General Public License for more details.
18 ; You should have received a copy of the GNU General Public License
19 ; along with GNU Modula-2; see the file COPYING. If not,
20 ; see <https://www.gnu.org/licenses/>. *)
22 ; See the GCC internals manual for a description of this file's format.
24 ; There are two sections:
25 ; 1. Options specific to Modula-2
26 ; 2. Options shared with C or the Driver.
27 ; Please keep any new additions for either case in the relevant section.
28 ; Please try to keep this file in ASCII collating order.
35 turns on case statement label compile time checking when using an expression of an enum type.
39 compiler checks to force definition module procedure parameter names with their implementation module counterpart
43 compiler warns if a cast is being used on types of differing sizes
47 inform user which parameters will be passed by reference
51 extra compile time semantic checking, typically tries to catch poor programming style
53 Wuninit-variable-checking
55 turns on compile time analysis in the first basic block of a procedure detecting access to uninitialized data.
57 Wuninit-variable-checking=
59 turns on compile time analysis to detect access to uninitialized variables, the checking can be specified by: known,cond,all.
63 automatically initializes all pointers to NIL
67 turns on runtime subrange, array index and indirection via NIL pointer checking
71 turns on runtime checking to check whether a CASE statement requires an ELSE clause when one was not specified
75 use cpp to preprocess the module
79 passed to the preprocessor if -fcpp is used (internal switch)
83 passed to the preprocessor if -fcpp is used (internal switch)
87 call a real function, rather than the builtin equivalent
91 turn on internal debugging of the compiler (internal switch)
95 turn on quadruple tracing (internal switch)
99 turn on the Modula-2 api tracing (internal switch)
101 fdebug-function-line-numbers
103 turn on the Modula-2 function line number generation (internal switch)
107 recognise the specified suffix as a definition module filename
111 display all inbuilt system items
115 allows opaque types to be implemented as any type (a GNU Modula-2 extension)
119 turns on runtime checking to check whether a floating point number will exceed range
123 create a topologically sorted module list from all dependent modules used in the application
127 turns on all range checking for numerical values
131 use ISO dialect of Modula-2
135 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.
139 set all location values to a specific value (internal switch)
143 generate extra nops to improve debugging, producing an instruction for every code related keyword
147 generate error messages which render keywords in lower case
151 specify the module mangled prefix name for all modules in the following include paths
155 ; For internal use only: used by the driver to copy the user facing -I option
159 insert plugin to identify runtime errors at compiletime
163 specify the module mangled prefix name
167 display statistics about the amount of source lines compiled and symbols used
171 experimental flag to turn on the new strict type checker
175 compile all implementation modules and program module at once
179 recognise the specified suffix as implementation and module filenames
183 turns on runtime checking to detect accessing data through a NIL value pointer
187 use PIM [234] dialect of Modula-2
191 use PIM 2 dialect of Modula-2
195 use PIM 3 dialect of Modula-2
199 use PIM 4 dialect of Modula-2
201 fpositive-mod-floor-div
203 force positive result from MOD and DIV result floor
207 link against the pthread library (default on)
211 internal compiler debugging information, dump the list of quadruples
215 turns on all range checking for numerical values
219 turns on runtime checking for functions which finish without executing a RETURN statement
223 specify the list of runtime modules and their initialization order
227 the modules initialization order is dynamically determined by M2RTS and application dependencies
231 generate a C source scaffold for the current module being compiled
235 generate a C++ source scaffold for the current module being compiled
239 generate the main function
243 generate static scaffold initialization and finalization for every module inside main
247 generate a shared library from the module
251 turns on all software runtime checking (an abbreviation for -fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue)
255 display the location of module source files as they are compiled
259 create a swig interface file for the module
261 funbounded-by-reference
263 optimize non var unbounded parameters by passing it by reference, providing it is not written to within the callee procedure.
267 orders the initialization/finalializations for scaffold-static or force linking of modules if scaffold-dynamic
271 ; Documented in common.opt
275 turns on all division and modulus by zero checking for ordinal values
279 turns on runtime checking to check whether a whole number will exceed range
283 Link the standard Modula-2 libraries statically in the compilation.
285 ; Here are C options that we also recognise, either within the compiler
286 ; or to build the preprocessor command lines.
290 ; Documented in c.opt
294 ; Documented in common.opt
298 ; Documented in common.opt
302 ; Documented in c.opt
306 ; Documented in c.opt
310 ; Documented in c.opt
314 ; Documented in c.opt
318 ; Documented in c.opt
321 Modula-2 Joined Separate
322 ; Documented in c.opt
325 Modula-2 Joined Separate
330 ; Documented in c.opt
334 ; Documented in c.opt
338 ; Documented in c.opt
342 ; Documented in c.opt
346 ; Documented in c.opt
350 ; Documented in c.opt
354 ; Documented in c.opt
358 ; Documented in c.opt
362 ; Documented in c.opt
366 ; Documented in c.opt
370 ; Documented in c.opt
374 ; Documented in c.opt
378 ; Documented in c.opt
382 ; Documented in c.opt
386 ; Documented in common.opt
390 ; Documented in c.opt
394 ; Documented in c.opt
398 ; Documented in c.opt
402 ; Documented in c.opt
406 ; Documented in c.opt
410 ; Documented in c.opt
414 ; Documented in c.opt
418 ; Documented in c.opt
424 Modula-2 Alias(save-temps)
428 save temporary preprocessed files
432 save temporary preprocessed files
436 ; Documented in c.opt
438 ; This comment is to ensure we retain the blank line above.