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)
93 fdebug-function-line-numbers
95 turn on tracing of procedure line numbers (internal switch)
99 recognise the specified suffix as a definition module filename
103 display all inbuilt system items
107 allows opaque types to be implemented as any type (a GNU Modula-2 extension)
111 turns on runtime checking to check whether a floating point number will exceed range
115 create a topologically sorted module list from all dependent modules used in the application
119 turns on all range checking for numerical values
123 use ISO dialect of Modula-2
127 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.
131 set all location values to a specific value (internal switch)
135 turn on internal debug tracing for quad,token,line,all (internal switch)
139 generate extra nops to improve debugging, producing an instruction for every code related keyword
143 generate error messages which render keywords in lower case
147 specify the module mangled prefix name for all modules in the following include paths
151 ; For internal use only: used by the driver to copy the user facing -I option
155 insert plugin to identify runtime errors at compiletime
159 specify the module mangled prefix name
163 display statistics about the amount of source lines compiled and symbols used
167 experimental flag to turn on the new strict type checker
171 compile all implementation modules and program module at once
175 recognise the specified suffix as implementation and module filenames
179 turns on runtime checking to detect accessing data through a NIL value pointer
183 use PIM [234] dialect of Modula-2
187 use PIM 2 dialect of Modula-2
191 use PIM 3 dialect of Modula-2
195 use PIM 4 dialect of Modula-2
197 fpositive-mod-floor-div
199 force positive result from MOD and DIV result floor
203 link against the pthread library (default on)
207 internal compiler debugging information, dump the list of quadruples
211 turns on all range checking for numerical values
215 turns on runtime checking for functions which finish without executing a RETURN statement
219 specify the list of runtime modules and their initialization order
223 the modules initialization order is dynamically determined by M2RTS and application dependencies
227 generate a C source scaffold for the current module being compiled
231 generate a C++ source scaffold for the current module being compiled
235 generate the main function
239 generate static scaffold initialization and finalization for every module inside main
243 generate a shared library from the module
247 turns on all software runtime checking (an abbreviation for -fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue)
251 display the location of module source files as they are compiled
255 create a swig interface file for the module
257 funbounded-by-reference
259 optimize non var unbounded parameters by passing it by reference, providing it is not written to within the callee procedure.
263 orders the initialization/finalializations for scaffold-static or force linking of modules if scaffold-dynamic
267 ; Documented in common.opt
271 turns on all division and modulus by zero checking for ordinal values
275 turns on runtime checking to check whether a whole number will exceed range
279 Link the standard Modula-2 libraries statically in the compilation.
281 ; Here are C options that we also recognise, either within the compiler
282 ; or to build the preprocessor command lines.
286 ; Documented in c.opt
290 ; Documented in common.opt
294 ; Documented in common.opt
298 ; Documented in c.opt
302 ; Documented in c.opt
306 ; Documented in c.opt
310 ; Documented in c.opt
314 ; Documented in c.opt
317 Modula-2 Joined Separate
318 ; Documented in c.opt
321 Modula-2 Joined Separate
326 ; Documented in c.opt
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 common.opt
386 ; Documented in c.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
420 Modula-2 Alias(save-temps)
424 save temporary preprocessed files
428 save temporary preprocessed files
432 ; Documented in c.opt
434 ; This comment is to ensure we retain the blank line above.