Branch data Line data Source code
1 : : /* do not edit automatically generated by mc from M2Options. */
2 : : /* M2Options.mod initializes the user options.
3 : :
4 : : Copyright (C) 2001-2024 Free Software Foundation, Inc.
5 : : Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
6 : :
7 : : This file is part of GNU Modula-2.
8 : :
9 : : GNU Modula-2 is free software; you can redistribute it and/or modify
10 : : it under the terms of the GNU General Public License as published by
11 : : the Free Software Foundation; either version 3, or (at your option)
12 : : any later version.
13 : :
14 : : GNU Modula-2 is distributed in the hope that it will be useful, but
15 : : WITHOUT ANY WARRANTY; without even the implied warranty of
16 : : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 : : General Public License for more details.
18 : :
19 : : You should have received a copy of the GNU General Public License
20 : : along with GNU Modula-2; see the file COPYING3. If not see
21 : : <http://www.gnu.org/licenses/>. */
22 : :
23 : : #include "config.h"
24 : : #include "system.h"
25 : : #include "gcc-consolidation.h"
26 : :
27 : : #include <stdbool.h>
28 : : # if !defined (PROC_D)
29 : : # define PROC_D
30 : : typedef void (*PROC_t) (void);
31 : : typedef struct { PROC_t proc; } PROC;
32 : : # endif
33 : :
34 : : # if !defined (TRUE)
35 : : # define TRUE (1==1)
36 : : # endif
37 : :
38 : : # if !defined (FALSE)
39 : : # define FALSE (1==0)
40 : : # endif
41 : :
42 : : #if defined(__cplusplus)
43 : : # undef NULL
44 : : # define NULL 0
45 : : #endif
46 : : #define _M2Options_C
47 : :
48 : : #include "GM2Options.h"
49 : : # include "GCmdArgs.h"
50 : : # include "GSArgs.h"
51 : : # include "GM2Search.h"
52 : : # include "GPathName.h"
53 : : # include "GM2Printf.h"
54 : : # include "GFIO.h"
55 : : # include "Glibc.h"
56 : : # include "GDebug.h"
57 : : # include "Ggcctypes.h"
58 : : # include "Gm2configure.h"
59 : : # include "GM2Error.h"
60 : : # include "GFormatStrings.h"
61 : : # include "Gm2misc.h"
62 : : # include "GDynamicStrings.h"
63 : :
64 : : # define Debugging false
65 : : # define DefaultRuntimeModuleOverride "m2iso:RTentity,m2iso:Storage,m2iso:SYSTEM,m2iso:M2RTS,m2iso:RTExceptions,m2iso:IOLink"
66 : : static DynamicStrings_String DumpDeclFilename;
67 : : static DynamicStrings_String DumpQuadFilename;
68 : : static DynamicStrings_String DumpGimpleFilename;
69 : : static DynamicStrings_String M2Dump;
70 : : static DynamicStrings_String M2DumpFilter;
71 : : static DynamicStrings_String M2Prefix;
72 : : static DynamicStrings_String M2PathName;
73 : : static DynamicStrings_String Barg;
74 : : static DynamicStrings_String MFarg;
75 : : static DynamicStrings_String MTFlag;
76 : : static DynamicStrings_String MQFlag;
77 : : static DynamicStrings_String DepTarget;
78 : : static DynamicStrings_String CmdLineObj;
79 : : static DynamicStrings_String SaveTempsDir;
80 : : static DynamicStrings_String DumpDir;
81 : : static DynamicStrings_String GenModuleListFilename;
82 : : static DynamicStrings_String UselistFilename;
83 : : static DynamicStrings_String RuntimeModuleOverride;
84 : : static DynamicStrings_String CppArgs;
85 : : static bool EnableForward;
86 : : static bool DebugFunctionLineNumbers;
87 : : static bool DebugTraceQuad;
88 : : static bool DebugTraceLine;
89 : : static bool DebugTraceToken;
90 : : static bool DebugTraceTree;
91 : : static bool DumpDecl;
92 : : static bool DumpGimple;
93 : : static bool DumpQuad;
94 : : static bool MFlag;
95 : : static bool MMFlag;
96 : : static bool MPFlag;
97 : : static bool MDFlag;
98 : : static bool MMDFlag;
99 : : static bool IBMLongDouble;
100 : : static bool IEEELongDouble;
101 : : static bool UselistFlag;
102 : : static bool CC1Quiet;
103 : : static bool SeenSources;
104 : : static location_t ForcedLocationValue;
105 : :
106 : : /*
107 : : SetM - set the MFlag.
108 : : */
109 : :
110 : : extern "C" void M2Options_SetM (bool value);
111 : :
112 : : /*
113 : : GetM - set the MFlag.
114 : : */
115 : :
116 : : extern "C" bool M2Options_GetM (void);
117 : :
118 : : /*
119 : : SetMM - set the MMFlag.
120 : : */
121 : :
122 : : extern "C" void M2Options_SetMM (bool value);
123 : :
124 : : /*
125 : : GetMM - set the MMFlag.
126 : : */
127 : :
128 : : extern "C" bool M2Options_GetMM (void);
129 : :
130 : : /*
131 : : SetMF - assigns MFarg to the filename from arg.
132 : : */
133 : :
134 : : extern "C" void M2Options_SetMF (void * arg);
135 : :
136 : : /*
137 : : GetMF - returns MFarg or NIL if never set.
138 : : */
139 : :
140 : : extern "C" void * M2Options_GetMF (void);
141 : :
142 : : /*
143 : : SetM2Prefix - assign arg to M2Prefix.
144 : : */
145 : :
146 : : extern "C" void M2Options_SetM2Prefix (void * arg);
147 : :
148 : : /*
149 : : GetM2Prefix - return M2Prefix as a C string.
150 : : */
151 : :
152 : : extern "C" void * M2Options_GetM2Prefix (void);
153 : :
154 : : /*
155 : : SetM2PathName - assign arg to M2PathName.
156 : : */
157 : :
158 : : extern "C" void M2Options_SetM2PathName (void * arg);
159 : :
160 : : /*
161 : : GetM2PathName - return M2PathName as a C string.
162 : : */
163 : :
164 : : extern "C" void * M2Options_GetM2PathName (void);
165 : :
166 : : /*
167 : : SetPPOnly - set the PPonly (preprocess only) to value.
168 : : */
169 : :
170 : : extern "C" void M2Options_SetPPOnly (bool value);
171 : :
172 : : /*
173 : : GetPPOnly - get the PPonly (preprocess only).
174 : : */
175 : :
176 : : extern "C" bool M2Options_GetPPOnly (void);
177 : :
178 : : /*
179 : : Setc - set the cflag (compile only flag -c) to value.
180 : : */
181 : :
182 : : extern "C" void M2Options_Setc (bool value);
183 : :
184 : : /*
185 : : Getc - get the cflag (compile only flag -c).
186 : : */
187 : :
188 : : extern "C" bool M2Options_Getc (void);
189 : :
190 : : /*
191 : : SetB - assigns Barg to arg.
192 : : */
193 : :
194 : : extern "C" void M2Options_SetB (void * arg);
195 : :
196 : : /*
197 : : GetB - returns Barg value as a C string or NIL if it was never set.
198 : : */
199 : :
200 : : extern "C" void * M2Options_GetB (void);
201 : :
202 : : /*
203 : : SetMD - set the MDFlag to value.
204 : : */
205 : :
206 : : extern "C" void M2Options_SetMD (bool value);
207 : :
208 : : /*
209 : : GetMD - return the MDFlag.
210 : : */
211 : :
212 : : extern "C" bool M2Options_GetMD (void);
213 : :
214 : : /*
215 : : SetMMD - set the MMDFlag to value.
216 : : */
217 : :
218 : : extern "C" void M2Options_SetMMD (bool value);
219 : :
220 : : /*
221 : : GetMMD - return the MMDFlag.
222 : : */
223 : :
224 : : extern "C" bool M2Options_GetMMD (void);
225 : :
226 : : /*
227 : : SetMQ - adds a quoted target arg to the DepTarget sentence.
228 : : */
229 : :
230 : : extern "C" void M2Options_SetMQ (void * arg);
231 : :
232 : : /*
233 : : GetMQ - returns a C string containing all the -MQ arg values.
234 : : */
235 : :
236 : : extern "C" void * M2Options_GetMQ (void);
237 : :
238 : : /*
239 : : SetMT - adds a target arg to the DepTarget sentence.
240 : : */
241 : :
242 : : extern "C" void M2Options_SetMT (void * arg);
243 : :
244 : : /*
245 : : GetMT - returns a C string containing all the -MT arg values.
246 : : */
247 : :
248 : : extern "C" void * M2Options_GetMT (void);
249 : :
250 : : /*
251 : : GetDepTarget - returns the DepTarget as a C string.
252 : : */
253 : :
254 : : extern "C" void * M2Options_GetDepTarget (void);
255 : :
256 : : /*
257 : : SetMP - set the MPflag to value.
258 : : */
259 : :
260 : : extern "C" void M2Options_SetMP (bool value);
261 : :
262 : : /*
263 : : GetMP - get the MPflag.
264 : : */
265 : :
266 : : extern "C" bool M2Options_GetMP (void);
267 : :
268 : : /*
269 : : SetObj - assigns CmdLineObj to the filename from arg.
270 : : */
271 : :
272 : : extern "C" void M2Options_SetObj (void * arg);
273 : :
274 : : /*
275 : : GetObj - returns CmdLineObj filename as a c-string or NIL if it was never set.
276 : : */
277 : :
278 : : extern "C" void * M2Options_GetObj (void);
279 : :
280 : : /*
281 : : SetCpp - enables the source to be preprocessed and enables the
282 : : recognition of C preprocessor line directives.
283 : : */
284 : :
285 : : extern "C" bool M2Options_SetCpp (bool value);
286 : :
287 : : /*
288 : : GetCpp - returns TRUE if the C preprocessor was used.
289 : : */
290 : :
291 : : extern "C" bool M2Options_GetCpp (void);
292 : :
293 : : /*
294 : : GetLineDirectives - returns TRUE if line directives are allowed.
295 : : */
296 : :
297 : : extern "C" bool M2Options_GetLineDirectives (void);
298 : :
299 : : /*
300 : : SetScaffoldDynamic - set the -fscaffold-dynamic flag.
301 : : */
302 : :
303 : : extern "C" void M2Options_SetScaffoldDynamic (bool value);
304 : :
305 : : /*
306 : : SetScaffoldStatic - set the -fscaffold-static flag.
307 : : */
308 : :
309 : : extern "C" void M2Options_SetScaffoldStatic (bool value);
310 : :
311 : : /*
312 : : GetScaffoldDynamic - get the -fscaffold-dynamic flag.
313 : : */
314 : :
315 : : extern "C" bool M2Options_GetScaffoldDynamic (void);
316 : :
317 : : /*
318 : : GetScaffoldStatic - get the -fscaffold-static flag.
319 : : */
320 : :
321 : : extern "C" bool M2Options_GetScaffoldStatic (void);
322 : :
323 : : /*
324 : : SetScaffoldMain - set the -fscaffold-main flag.
325 : : */
326 : :
327 : : extern "C" void M2Options_SetScaffoldMain (bool value);
328 : :
329 : : /*
330 : : SetRuntimeModuleOverride - set the override sequence used for module
331 : : initialization and finialization.
332 : : */
333 : :
334 : : extern "C" void M2Options_SetRuntimeModuleOverride (void * override);
335 : :
336 : : /*
337 : : GetRuntimeModuleOverride - return a string containing any user override
338 : : or the default module initialization override
339 : : sequence.
340 : : */
341 : :
342 : : extern "C" void * M2Options_GetRuntimeModuleOverride (void);
343 : :
344 : : /*
345 : : SetUselist - set the uselist flag to value and remember the filename.
346 : : */
347 : :
348 : : extern "C" void M2Options_SetUselist (bool value, void * filename);
349 : :
350 : : /*
351 : : GetUselist - return the uselist flag.
352 : : */
353 : :
354 : : extern "C" bool M2Options_GetUselist (void);
355 : :
356 : : /*
357 : : GetUselistFilename - return the uselist filename as a String.
358 : : */
359 : :
360 : : extern "C" DynamicStrings_String M2Options_GetUselistFilename (void);
361 : :
362 : : /*
363 : : SetWholeProgram - sets the WholeProgram flag (-fwhole-program).
364 : : */
365 : :
366 : : extern "C" void M2Options_SetWholeProgram (bool value);
367 : :
368 : : /*
369 : : SetAutoInit - -fauto-init turns on automatic initialization of pointers to NIL.
370 : : TRUE is returned.
371 : : */
372 : :
373 : : extern "C" bool M2Options_SetAutoInit (bool value);
374 : :
375 : : /*
376 : : SetReturnCheck -
377 : : */
378 : :
379 : : extern "C" bool M2Options_SetReturnCheck (bool value);
380 : :
381 : : /*
382 : : SetNilCheck -
383 : : */
384 : :
385 : : extern "C" bool M2Options_SetNilCheck (bool value);
386 : :
387 : : /*
388 : : SetCaseCheck - set else case checking to, value.
389 : : */
390 : :
391 : : extern "C" bool M2Options_SetCaseCheck (bool value);
392 : :
393 : : /*
394 : : SetCheckAll - set all runtime checking to, value.
395 : : */
396 : :
397 : : extern "C" bool M2Options_SetCheckAll (bool value);
398 : :
399 : : /*
400 : : SetVerboseUnbounded - sets the VerboseUnbounded flag to, value.
401 : : */
402 : :
403 : : extern "C" bool M2Options_SetVerboseUnbounded (bool value);
404 : :
405 : : /*
406 : : SetQuiet - sets the quiet flag to, value.
407 : : */
408 : :
409 : : extern "C" bool M2Options_SetQuiet (bool value);
410 : :
411 : : /*
412 : : SetCC1Quiet - sets the cc1quiet flag to, value.
413 : : */
414 : :
415 : : extern "C" void M2Options_SetCC1Quiet (bool value);
416 : :
417 : : /*
418 : : SetM2g - set GenerateStatementNote to value and return value.
419 : : Corresponds to the -fm2-g flag.
420 : : */
421 : :
422 : : extern "C" bool M2Options_SetM2g (bool value);
423 : :
424 : : /*
425 : : GetM2g - returns TRUE if the -fm2-g flags was used.
426 : : */
427 : :
428 : : extern "C" bool M2Options_GetM2g (void);
429 : :
430 : : /*
431 : : SetLowerCaseKeywords - set the lower case keyword flag and return the result.
432 : : */
433 : :
434 : : extern "C" bool M2Options_SetLowerCaseKeywords (bool value);
435 : :
436 : : /*
437 : : SetUnboundedByReference -
438 : : */
439 : :
440 : : extern "C" bool M2Options_SetUnboundedByReference (bool value);
441 : :
442 : : /*
443 : : SetSearchPath -
444 : : */
445 : :
446 : : extern "C" void M2Options_SetSearchPath (void * arg);
447 : :
448 : : /*
449 : : SetISO -
450 : : */
451 : :
452 : : extern "C" void M2Options_SetISO (bool value);
453 : :
454 : : /*
455 : : SetPIM -
456 : : */
457 : :
458 : : extern "C" void M2Options_SetPIM (bool value);
459 : :
460 : : /*
461 : : SetPIM2 -
462 : : */
463 : :
464 : : extern "C" void M2Options_SetPIM2 (bool value);
465 : :
466 : : /*
467 : : SetPIM3 -
468 : : */
469 : :
470 : : extern "C" void M2Options_SetPIM3 (bool value);
471 : :
472 : : /*
473 : : SetPIM4 -
474 : : */
475 : :
476 : : extern "C" void M2Options_SetPIM4 (bool value);
477 : :
478 : : /*
479 : : SetPositiveModFloor - sets the positive mod floor option.
480 : : */
481 : :
482 : : extern "C" void M2Options_SetPositiveModFloor (bool value);
483 : :
484 : : /*
485 : : SetWholeDiv - sets the whole division flag.
486 : : */
487 : :
488 : : extern "C" void M2Options_SetWholeDiv (bool value);
489 : :
490 : : /*
491 : : SetIndex - sets the runtime array index checking flag.
492 : : */
493 : :
494 : : extern "C" void M2Options_SetIndex (bool value);
495 : :
496 : : /*
497 : : SetRange - sets the runtime range checking flag.
498 : : */
499 : :
500 : : extern "C" void M2Options_SetRange (bool value);
501 : :
502 : : /*
503 : : SetExceptions - sets the enable runtime exceptions flag.
504 : : */
505 : :
506 : : extern "C" void M2Options_SetExceptions (bool value);
507 : :
508 : : /*
509 : : SetStyle -
510 : : */
511 : :
512 : : extern "C" void M2Options_SetStyle (bool value);
513 : :
514 : : /*
515 : : SetPedantic -
516 : : */
517 : :
518 : : extern "C" void M2Options_SetPedantic (bool value);
519 : :
520 : : /*
521 : : SetPedanticParamNames - sets the pedantic parameter name flag.
522 : : */
523 : :
524 : : extern "C" void M2Options_SetPedanticParamNames (bool value);
525 : :
526 : : /*
527 : : SetPedanticCast - sets the pedantic cast flag.
528 : : */
529 : :
530 : : extern "C" void M2Options_SetPedanticCast (bool value);
531 : :
532 : : /*
533 : : SetExtendedOpaque - sets the ExtendedOpaque flag.
534 : : */
535 : :
536 : : extern "C" void M2Options_SetExtendedOpaque (bool value);
537 : :
538 : : /*
539 : : SetXCode - sets the xcode flag.
540 : : */
541 : :
542 : : extern "C" void M2Options_SetXCode (bool value);
543 : :
544 : : /*
545 : : SetCompilerDebugging - turn on internal compiler debugging.
546 : : Enabled via the command line option -fd.
547 : : */
548 : :
549 : : extern "C" void M2Options_SetCompilerDebugging (bool value);
550 : :
551 : : /*
552 : : SetQuadDebugging - display the quadruples (internal debugging).
553 : : */
554 : :
555 : : extern "C" void M2Options_SetQuadDebugging (bool value);
556 : :
557 : : /*
558 : : SetM2DebugTraceFilter - set internal debug flags. The flags should be
559 : : specified as a comma separated list. The full
560 : : list allowed is quad,line,token,all.
561 : : */
562 : :
563 : : extern "C" void M2Options_SetM2DebugTraceFilter (bool value, void * filter);
564 : :
565 : : /*
566 : : SetDebugFunctionLineNumbers - set DebugFunctionLineNumbers.
567 : : */
568 : :
569 : : extern "C" void M2Options_SetDebugFunctionLineNumbers (bool value);
570 : :
571 : : /*
572 : : SetGenerateStatementNote - turn on generation of nops if necessary
573 : : to generate pedalogical single stepping.
574 : : */
575 : :
576 : : extern "C" void M2Options_SetGenerateStatementNote (bool value);
577 : :
578 : : /*
579 : : SetSources -
580 : : */
581 : :
582 : : extern "C" void M2Options_SetSources (bool value);
583 : :
584 : : /*
585 : : SetDumpSystemExports -
586 : : */
587 : :
588 : : extern "C" void M2Options_SetDumpSystemExports (bool value);
589 : :
590 : : /*
591 : : SetSwig -
592 : : */
593 : :
594 : : extern "C" void M2Options_SetSwig (bool value);
595 : :
596 : : /*
597 : : SetOptimizing -
598 : : */
599 : :
600 : : extern "C" void M2Options_SetOptimizing (unsigned int value);
601 : :
602 : : /*
603 : : OverrideLocation - possibly override the location value, depending upon
604 : : whether the -flocation= option was used.
605 : : */
606 : :
607 : : extern "C" location_t M2Options_OverrideLocation (location_t location);
608 : :
609 : : /*
610 : : SetForcedLocation - sets the location for the lifetime of this compile to, location.
611 : : This is primarily an internal debugging switch.
612 : : */
613 : :
614 : : extern "C" void M2Options_SetForcedLocation (location_t location);
615 : :
616 : : /*
617 : : SetUnusedVariableChecking - assigns the UnusedVariableChecking to value.
618 : : */
619 : :
620 : : extern "C" void M2Options_SetUnusedVariableChecking (bool value);
621 : :
622 : : /*
623 : : SetUnusedParameterChecking - assigns the UnusedParameterChecking to value.
624 : : */
625 : :
626 : : extern "C" void M2Options_SetUnusedParameterChecking (bool value);
627 : :
628 : : /*
629 : : SetStrictTypeChecking - assigns the StrictTypeChecking flag to value.
630 : : */
631 : :
632 : : extern "C" void M2Options_SetStrictTypeChecking (bool value);
633 : :
634 : : /*
635 : : setdefextension - set the source file definition module extension to arg.
636 : : This should include the . and by default it is set to .def.
637 : : */
638 : :
639 : : extern "C" void M2Options_setdefextension (void * arg);
640 : :
641 : : /*
642 : : setmodextension - set the source file module extension to arg.
643 : : This should include the . and by default it is set to .mod.
644 : : */
645 : :
646 : : extern "C" void M2Options_setmodextension (void * arg);
647 : :
648 : : /*
649 : : SetStatistics - turn on/off generate of compile time statistics.
650 : : */
651 : :
652 : : extern "C" void M2Options_SetStatistics (bool on);
653 : :
654 : : /*
655 : : SetVerbose - set the Verbose flag to, value. It returns TRUE.
656 : : */
657 : :
658 : : extern "C" bool M2Options_SetVerbose (bool value);
659 : :
660 : : /*
661 : : CppArg - sets the option and arg in the cpp command line.
662 : : */
663 : :
664 : : extern "C" void M2Options_CppArg (void * opt, void * arg, bool joined);
665 : :
666 : : /*
667 : : CppCommandLine - returns the Cpp command line and all arguments.
668 : : NIL is returned if the -fcpp is absent.
669 : : */
670 : :
671 : : extern "C" DynamicStrings_String M2Options_CppCommandLine (void);
672 : :
673 : : /*
674 : : CppRemember - remember a string, s, as a cpp related argument.
675 : : The string, s, is not garbage collected.
676 : : */
677 : :
678 : : extern "C" void M2Options_CppRemember (DynamicStrings_String s);
679 : :
680 : : /*
681 : : GetISO - return TRUE if -fiso was present on the command line.
682 : : */
683 : :
684 : : extern "C" bool M2Options_GetISO (void);
685 : :
686 : : /*
687 : : GetPIM - return TRUE if -fpim was present on the command line.
688 : : */
689 : :
690 : : extern "C" bool M2Options_GetPIM (void);
691 : :
692 : : /*
693 : : GetPIM2 - return TRUE if -fpim2 was present on the command line.
694 : : */
695 : :
696 : : extern "C" bool M2Options_GetPIM2 (void);
697 : :
698 : : /*
699 : : GetPIM3 - return TRUE if -fpim3 was present on the command line.
700 : : */
701 : :
702 : : extern "C" bool M2Options_GetPIM3 (void);
703 : :
704 : : /*
705 : : GetPIM4 - return TRUE if -fpim4 was present on the command line.
706 : : */
707 : :
708 : : extern "C" bool M2Options_GetPIM4 (void);
709 : :
710 : : /*
711 : : GetPositiveModFloor - return TRUE if -fpositive-mod-floor was present
712 : : on the command line.
713 : : */
714 : :
715 : : extern "C" bool M2Options_GetPositiveModFloor (void);
716 : :
717 : : /*
718 : : GetFloatValueCheck - return TRUE if -ffloatvalue was present on the
719 : : command line.
720 : : */
721 : :
722 : : extern "C" bool M2Options_GetFloatValueCheck (void);
723 : :
724 : : /*
725 : : SetFloatValueCheck - set depending upon the -ffloatvalue.
726 : : */
727 : :
728 : : extern "C" void M2Options_SetFloatValueCheck (bool value);
729 : :
730 : : /*
731 : : GetWholeValueCheck - return TRUE if -fwholevalue was present on the
732 : : command line.
733 : : */
734 : :
735 : : extern "C" bool M2Options_GetWholeValueCheck (void);
736 : :
737 : : /*
738 : : SetWholeValueCheck - set depending upon the -fwholevalue.
739 : : */
740 : :
741 : : extern "C" void M2Options_SetWholeValueCheck (bool value);
742 : :
743 : : /*
744 : : SetWall - set all warnings to, value.
745 : : */
746 : :
747 : : extern "C" void M2Options_SetWall (bool value);
748 : :
749 : : /*
750 : : SetSaveTemps - turn on/off -save-temps.
751 : : */
752 : :
753 : : extern "C" void M2Options_SetSaveTemps (bool value);
754 : :
755 : : /*
756 : : SetSaveTempsDir - turn on/off -save-temps and specify the directory.
757 : : */
758 : :
759 : : extern "C" void M2Options_SetSaveTempsDir (void * arg);
760 : :
761 : : /*
762 : : GetSaveTempsDir - return SaveTempsDir or NIL if -save-temps was not used.
763 : : */
764 : :
765 : : extern "C" DynamicStrings_String M2Options_GetSaveTempsDir (void);
766 : :
767 : : /*
768 : : SetDumpDir - Set the dump dir.
769 : : */
770 : :
771 : : extern "C" void M2Options_SetDumpDir (void * arg);
772 : :
773 : : /*
774 : : GetDumpDir - return DumpDir or NIL.
775 : : */
776 : :
777 : : extern "C" DynamicStrings_String M2Options_GetDumpDir (void);
778 : :
779 : : /*
780 : : SetGenModuleList - set the GenModuleList flag to true and pass
781 : : set GenModuleListFilename to filename.
782 : : */
783 : :
784 : : extern "C" void M2Options_SetGenModuleList (bool value, void * filename);
785 : :
786 : : /*
787 : : GetGenModuleFilename - returns the filename set by SetGenModuleList.
788 : : */
789 : :
790 : : extern "C" DynamicStrings_String M2Options_GetGenModuleFilename (void);
791 : :
792 : : /*
793 : : SetShared - sets the SharedFlag to value.
794 : : */
795 : :
796 : : extern "C" void M2Options_SetShared (bool value);
797 : :
798 : : /*
799 : : SetUninitVariableChecking - sets the UninitVariableChecking and
800 : : UninitVariableConditionalChecking flags to value
801 : : depending upon arg string. The arg string
802 : : can be: "all", "known,cond", "cond,known", "known"
803 : : or "cond".
804 : : */
805 : :
806 : : extern "C" int M2Options_SetUninitVariableChecking (bool value, void * arg);
807 : :
808 : : /*
809 : : SetCaseEnumChecking - sets the CaseEnumChecking to value.
810 : : */
811 : :
812 : : extern "C" void M2Options_SetCaseEnumChecking (bool value);
813 : :
814 : : /*
815 : : SetDebugBuiltins - sets the DebugBuiltins to value.
816 : : */
817 : :
818 : : extern "C" void M2Options_SetDebugBuiltins (bool value);
819 : :
820 : : /*
821 : : SetIBMLongDouble - enable/disable LONGREAL to map onto the
822 : : IBM long double 128 bit data type.
823 : : (Only available on the ppc).
824 : : */
825 : :
826 : : extern "C" void M2Options_SetIBMLongDouble (bool value);
827 : :
828 : : /*
829 : : GetIBMLongDouble - return the value of IBMLongDouble.
830 : : */
831 : :
832 : : extern "C" bool M2Options_GetIBMLongDouble (void);
833 : :
834 : : /*
835 : : SetIEEELongDouble - enable/disable LONGREAL to map onto the
836 : : IEEE long double 128 bit data type.
837 : : (Only available on the ppc).
838 : : */
839 : :
840 : : extern "C" void M2Options_SetIEEELongDouble (bool value);
841 : :
842 : : /*
843 : : GetIEEELongDouble - return the value of IEEELongDouble.
844 : : */
845 : :
846 : : extern "C" bool M2Options_GetIEEELongDouble (void);
847 : :
848 : : /*
849 : : GetDumpDeclFilename - returns the DumpDeclFilename.
850 : : */
851 : :
852 : : extern "C" DynamicStrings_String M2Options_GetDumpDeclFilename (void);
853 : :
854 : : /*
855 : : SetDumpDeclFilename -
856 : : */
857 : :
858 : : extern "C" void M2Options_SetDumpDeclFilename (bool value, void * filename);
859 : :
860 : : /*
861 : : GetDumpQuadFilename - returns the DumpQuadFilename.
862 : : */
863 : :
864 : : extern "C" DynamicStrings_String M2Options_GetDumpQuadFilename (void);
865 : :
866 : : /*
867 : : SetDumpQuadFilename -
868 : : */
869 : :
870 : : extern "C" void M2Options_SetDumpQuadFilename (bool value, void * filename);
871 : :
872 : : /*
873 : : GetDumpGimpleFilename - returns the DumpGimpleFilename.
874 : : */
875 : :
876 : : extern "C" DynamicStrings_String M2Options_GetDumpGimpleFilename (void);
877 : :
878 : : /*
879 : : SetDumpGimpleFilename - set DumpGimpleFilename to filename.
880 : : */
881 : :
882 : : extern "C" void M2Options_SetDumpGimpleFilename (bool value, void * filename);
883 : :
884 : : /*
885 : : SetM2DumpFilter - sets the filter to a comma separated list of procedures
886 : : and modules. Not to be confused with SetM2Dump below
887 : : which enables the class of data structures to be dumped.
888 : : */
889 : :
890 : : extern "C" void M2Options_SetM2DumpFilter (bool value, void * filter);
891 : :
892 : : /*
893 : : GetM2DumpFilter - returns the dump filter.
894 : : */
895 : :
896 : : extern "C" void * M2Options_GetM2DumpFilter (void);
897 : :
898 : : /*
899 : : SetM2Dump - sets the dump via a comma separated list: quad,decl,gimple,all.
900 : : It returns TRUE if the comma separated list is valid.
901 : : */
902 : :
903 : : extern "C" bool M2Options_SetM2Dump (bool value, void * filter);
904 : :
905 : : /*
906 : : GetDumpGimple - return TRUE if the dump gimple flag is set from SetM2Dump.
907 : : */
908 : :
909 : : extern "C" bool M2Options_GetDumpGimple (void);
910 : :
911 : : /*
912 : : GetDumpQuad - return TRUE if the dump quad flag is set from SetM2Dump.
913 : : */
914 : :
915 : : extern "C" bool M2Options_GetDumpQuad (void);
916 : :
917 : : /*
918 : : GetDumpDecl - return TRUE if the dump decl flag is set from SetM2Dump.
919 : : */
920 : :
921 : : extern "C" bool M2Options_GetDumpDecl (void);
922 : :
923 : : /*
924 : : GetDebugTraceQuad - return DebugTraceQuad.
925 : : */
926 : :
927 : : extern "C" bool M2Options_GetDebugTraceQuad (void);
928 : :
929 : : /*
930 : : GetDebugTraceTree - return DebugTraceTree.
931 : : */
932 : :
933 : : extern "C" bool M2Options_GetDebugTraceTree (void);
934 : :
935 : : /*
936 : : GetDebugTraceToken - return DebugTraceToken.
937 : : */
938 : :
939 : : extern "C" bool M2Options_GetDebugTraceToken (void);
940 : :
941 : : /*
942 : : GetDebugTraceLine - return DebugTraceLine.
943 : : */
944 : :
945 : : extern "C" bool M2Options_GetDebugTraceLine (void);
946 : :
947 : : /*
948 : : GetDebugFunctionLineNumbers - return DebugFunctionLineNumbers.
949 : : */
950 : :
951 : : extern "C" bool M2Options_GetDebugFunctionLineNumbers (void);
952 : :
953 : : /*
954 : : GetEnableForward - return EnableForward.
955 : : */
956 : :
957 : : extern "C" bool M2Options_GetEnableForward (void);
958 : :
959 : : /*
960 : : SetEnableForward - set EnableForward to value.
961 : : */
962 : :
963 : : extern "C" void M2Options_SetEnableForward (bool value);
964 : :
965 : : /*
966 : : FinaliseOptions - once all options have been parsed we set any inferred
967 : : values.
968 : : */
969 : :
970 : : extern "C" void M2Options_FinaliseOptions (void);
971 : :
972 : : /*
973 : : errors1 -
974 : : */
975 : :
976 : : static void errors1 (const char *format_, unsigned int _format_high, DynamicStrings_String arg);
977 : :
978 : : /*
979 : : AddWord - concats a word to sentence inserting a space if necessary.
980 : : sentence is returned. sentence will be created if it is NIL.
981 : : */
982 : :
983 : : static DynamicStrings_String AddWord (DynamicStrings_String sentence, DynamicStrings_String word);
984 : :
985 : : /*
986 : : QuoteTarget - quote the '$' character.
987 : : */
988 : :
989 : : static DynamicStrings_String QuoteTarget (DynamicStrings_String target);
990 : :
991 : : /*
992 : : SetM2DebugTrace -
993 : : */
994 : :
995 : : static void SetM2DebugTrace (DynamicStrings_String word, bool value);
996 : :
997 : : /*
998 : : InitializeLongDoubleFlags - initialize the long double related flags
999 : : with default values given during gcc configure.
1000 : : */
1001 : :
1002 : : static void InitializeLongDoubleFlags (void);
1003 : :
1004 : : /*
1005 : : MatchDump - enable/disable dump using value. It returns TRUE if dump
1006 : : is valid.
1007 : : */
1008 : :
1009 : : static bool MatchDump (DynamicStrings_String dump, bool value);
1010 : :
1011 : :
1012 : : /*
1013 : : errors1 -
1014 : : */
1015 : :
1016 : 0 : static void errors1 (const char *format_, unsigned int _format_high, DynamicStrings_String arg)
1017 : : {
1018 : 0 : DynamicStrings_String message;
1019 : 0 : void * cstr;
1020 : 0 : char format[_format_high+1];
1021 : :
1022 : : /* make a local copy of each unbounded array. */
1023 : 0 : memcpy (format, format_, _format_high+1);
1024 : :
1025 : 0 : message = FormatStrings_Sprintf1 (DynamicStrings_InitString ((const char *) format, _format_high), (const unsigned char *) &arg, (sizeof (arg)-1));
1026 : 0 : cstr = DynamicStrings_string (message);
1027 : 0 : m2misc_cerror (cstr);
1028 : 0 : libc_exit (1);
1029 : 0 : }
1030 : :
1031 : :
1032 : : /*
1033 : : AddWord - concats a word to sentence inserting a space if necessary.
1034 : : sentence is returned. sentence will be created if it is NIL.
1035 : : */
1036 : :
1037 : 0 : static DynamicStrings_String AddWord (DynamicStrings_String sentence, DynamicStrings_String word)
1038 : : {
1039 : 0 : if (word != NULL)
1040 : : {
1041 : : /* avoid gcc warning by using compound statement even if not strictly necessary. */
1042 : 0 : if (sentence == NULL)
1043 : : {
1044 : 0 : sentence = DynamicStrings_Dup (word);
1045 : : }
1046 : : else
1047 : : {
1048 : 0 : sentence = DynamicStrings_ConCatChar (sentence, ' ');
1049 : 0 : sentence = DynamicStrings_ConCat (sentence, word);
1050 : : }
1051 : : }
1052 : 0 : return sentence;
1053 : : /* static analysis guarentees a RETURN statement will be used before here. */
1054 : : __builtin_unreachable ();
1055 : : }
1056 : :
1057 : :
1058 : : /*
1059 : : QuoteTarget - quote the '$' character.
1060 : : */
1061 : :
1062 : 0 : static DynamicStrings_String QuoteTarget (DynamicStrings_String target)
1063 : : {
1064 : 0 : DynamicStrings_String quoted;
1065 : 0 : unsigned int i;
1066 : 0 : unsigned int n;
1067 : :
1068 : 0 : quoted = DynamicStrings_InitString ((const char *) "", 0);
1069 : 0 : i = 0;
1070 : 0 : n = DynamicStrings_Length (target);
1071 : 0 : while (i < n)
1072 : : {
1073 : 0 : switch (DynamicStrings_char (target, static_cast<int> (i)))
1074 : : {
1075 : 0 : case '$':
1076 : 0 : quoted = DynamicStrings_ConCat (quoted, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "$$", 2)));
1077 : 0 : break;
1078 : :
1079 : :
1080 : 0 : default:
1081 : 0 : quoted = DynamicStrings_ConCatChar (quoted, DynamicStrings_char (target, static_cast<int> (i)));
1082 : 0 : break;
1083 : : }
1084 : 0 : i += 1;
1085 : : }
1086 : 0 : return quoted;
1087 : : /* static analysis guarentees a RETURN statement will be used before here. */
1088 : : __builtin_unreachable ();
1089 : : }
1090 : :
1091 : :
1092 : : /*
1093 : : SetM2DebugTrace -
1094 : : */
1095 : :
1096 : 0 : static void SetM2DebugTrace (DynamicStrings_String word, bool value)
1097 : : {
1098 : 0 : if (DynamicStrings_EqualArray (word, (const char *) "all", 3))
1099 : : {
1100 : : /* DebugTraceTree := value ; */
1101 : 0 : DebugTraceQuad = value;
1102 : 0 : DebugTraceToken = value;
1103 : 0 : DebugTraceLine = value;
1104 : : }
1105 : 0 : else if (DynamicStrings_EqualArray (word, (const char *) "quad", 4))
1106 : : {
1107 : : /* avoid dangling else. */
1108 : 0 : DebugTraceQuad = value;
1109 : : }
1110 : 0 : else if (DynamicStrings_EqualArray (word, (const char *) "token", 5))
1111 : : {
1112 : : /* avoid dangling else. */
1113 : 0 : DebugTraceToken = value;
1114 : : }
1115 : 0 : else if (DynamicStrings_EqualArray (word, (const char *) "line", 4))
1116 : : {
1117 : : /* avoid dangling else. */
1118 : 0 : DebugTraceLine = value;
1119 : : }
1120 : : else
1121 : : {
1122 : : /* avoid dangling else. */
1123 : 0 : errors1 ((const char *) "unrecognized filter %s seen in -fm2-debug-trace= option\\n", 57, word);
1124 : : }
1125 : 0 : }
1126 : :
1127 : :
1128 : : /*
1129 : : InitializeLongDoubleFlags - initialize the long double related flags
1130 : : with default values given during gcc configure.
1131 : : */
1132 : :
1133 : 14232 : static void InitializeLongDoubleFlags (void)
1134 : : {
1135 : 14232 : IBMLongDouble = false;
1136 : 14232 : IEEELongDouble = false;
1137 : 14232 : switch (m2configure_TargetIEEEQuadDefault ())
1138 : : {
1139 : : case -1:
1140 : : break;
1141 : :
1142 : 0 : case 0:
1143 : 0 : IBMLongDouble = true;
1144 : 0 : break;
1145 : :
1146 : 0 : case 1:
1147 : 0 : IEEELongDouble = true;
1148 : 0 : break;
1149 : :
1150 : :
1151 : 0 : default:
1152 : 0 : M2Error_InternalError ((const char *) "unexpected value returned from TargetIEEEQuadDefault ()", 55);
1153 : 14232 : break;
1154 : : }
1155 : 14232 : }
1156 : :
1157 : :
1158 : : /*
1159 : : MatchDump - enable/disable dump using value. It returns TRUE if dump
1160 : : is valid.
1161 : : */
1162 : :
1163 : 0 : static bool MatchDump (DynamicStrings_String dump, bool value)
1164 : : {
1165 : 0 : if (DynamicStrings_EqualArray (dump, (const char *) "all", 3))
1166 : : {
1167 : 0 : DumpDecl = value;
1168 : 0 : DumpQuad = value;
1169 : 0 : DumpGimple = value;
1170 : 0 : return true;
1171 : : }
1172 : 0 : else if (DynamicStrings_EqualArray (dump, (const char *) "decl", 4))
1173 : : {
1174 : : /* avoid dangling else. */
1175 : 0 : DumpDecl = value;
1176 : 0 : return true;
1177 : : }
1178 : 0 : else if (DynamicStrings_EqualArray (dump, (const char *) "gimple", 6))
1179 : : {
1180 : : /* avoid dangling else. */
1181 : 0 : DumpGimple = value;
1182 : 0 : return true;
1183 : : }
1184 : 0 : else if (DynamicStrings_EqualArray (dump, (const char *) "quad", 4))
1185 : : {
1186 : : /* avoid dangling else. */
1187 : 0 : DumpQuad = value;
1188 : 0 : return true;
1189 : : }
1190 : : return false;
1191 : : /* static analysis guarentees a RETURN statement will be used before here. */
1192 : : __builtin_unreachable ();
1193 : : }
1194 : :
1195 : :
1196 : : /*
1197 : : SetM - set the MFlag.
1198 : : */
1199 : :
1200 : 0 : extern "C" void M2Options_SetM (bool value)
1201 : : {
1202 : 0 : MFlag = value;
1203 : 0 : }
1204 : :
1205 : :
1206 : : /*
1207 : : GetM - set the MFlag.
1208 : : */
1209 : :
1210 : 30577 : extern "C" bool M2Options_GetM (void)
1211 : : {
1212 : 30577 : return MFlag;
1213 : : /* static analysis guarentees a RETURN statement will be used before here. */
1214 : : __builtin_unreachable ();
1215 : : }
1216 : :
1217 : :
1218 : : /*
1219 : : SetMM - set the MMFlag.
1220 : : */
1221 : :
1222 : 0 : extern "C" void M2Options_SetMM (bool value)
1223 : : {
1224 : 0 : MMFlag = value;
1225 : 0 : }
1226 : :
1227 : :
1228 : : /*
1229 : : GetMM - set the MMFlag.
1230 : : */
1231 : :
1232 : 30577 : extern "C" bool M2Options_GetMM (void)
1233 : : {
1234 : 30577 : return MMFlag;
1235 : : /* static analysis guarentees a RETURN statement will be used before here. */
1236 : : __builtin_unreachable ();
1237 : : }
1238 : :
1239 : :
1240 : : /*
1241 : : SetMF - assigns MFarg to the filename from arg.
1242 : : */
1243 : :
1244 : 0 : extern "C" void M2Options_SetMF (void * arg)
1245 : : {
1246 : 0 : MFarg = DynamicStrings_KillString (MFarg);
1247 : 0 : MFarg = DynamicStrings_InitStringCharStar (arg);
1248 : 0 : }
1249 : :
1250 : :
1251 : : /*
1252 : : GetMF - returns MFarg or NIL if never set.
1253 : : */
1254 : :
1255 : 14232 : extern "C" void * M2Options_GetMF (void)
1256 : : {
1257 : 14232 : return DynamicStrings_string (MFarg);
1258 : : /* static analysis guarentees a RETURN statement will be used before here. */
1259 : : __builtin_unreachable ();
1260 : : }
1261 : :
1262 : :
1263 : : /*
1264 : : SetM2Prefix - assign arg to M2Prefix.
1265 : : */
1266 : :
1267 : 588 : extern "C" void M2Options_SetM2Prefix (void * arg)
1268 : : {
1269 : 588 : M2Prefix = DynamicStrings_KillString (M2Prefix);
1270 : 588 : M2Prefix = DynamicStrings_InitStringCharStar (arg);
1271 : 588 : }
1272 : :
1273 : :
1274 : : /*
1275 : : GetM2Prefix - return M2Prefix as a C string.
1276 : : */
1277 : :
1278 : 14221 : extern "C" void * M2Options_GetM2Prefix (void)
1279 : : {
1280 : 14221 : return DynamicStrings_string (M2Prefix);
1281 : : /* static analysis guarentees a RETURN statement will be used before here. */
1282 : : __builtin_unreachable ();
1283 : : }
1284 : :
1285 : :
1286 : : /*
1287 : : SetM2PathName - assign arg to M2PathName.
1288 : : */
1289 : :
1290 : 281076 : extern "C" void M2Options_SetM2PathName (void * arg)
1291 : : {
1292 : 281076 : M2PathName = DynamicStrings_KillString (M2PathName);
1293 : 281076 : M2PathName = DynamicStrings_InitStringCharStar (arg);
1294 : 281076 : }
1295 : :
1296 : :
1297 : : /*
1298 : : GetM2PathName - return M2PathName as a C string.
1299 : : */
1300 : :
1301 : 327154 : extern "C" void * M2Options_GetM2PathName (void)
1302 : : {
1303 : 327154 : return DynamicStrings_string (M2PathName);
1304 : : /* static analysis guarentees a RETURN statement will be used before here. */
1305 : : __builtin_unreachable ();
1306 : : }
1307 : :
1308 : :
1309 : : /*
1310 : : SetPPOnly - set the PPonly (preprocess only) to value.
1311 : : */
1312 : :
1313 : 0 : extern "C" void M2Options_SetPPOnly (bool value)
1314 : : {
1315 : 0 : M2Options_PPonly = value;
1316 : 0 : }
1317 : :
1318 : :
1319 : : /*
1320 : : GetPPOnly - get the PPonly (preprocess only).
1321 : : */
1322 : :
1323 : 55603 : extern "C" bool M2Options_GetPPOnly (void)
1324 : : {
1325 : 55603 : return M2Options_PPonly;
1326 : : /* static analysis guarentees a RETURN statement will be used before here. */
1327 : : __builtin_unreachable ();
1328 : : }
1329 : :
1330 : :
1331 : : /*
1332 : : Setc - set the cflag (compile only flag -c) to value.
1333 : : */
1334 : :
1335 : 11694 : extern "C" void M2Options_Setc (bool value)
1336 : : {
1337 : 11694 : M2Options_cflag = value;
1338 : 11694 : }
1339 : :
1340 : :
1341 : : /*
1342 : : Getc - get the cflag (compile only flag -c).
1343 : : */
1344 : :
1345 : 0 : extern "C" bool M2Options_Getc (void)
1346 : : {
1347 : 0 : return M2Options_cflag;
1348 : : /* static analysis guarentees a RETURN statement will be used before here. */
1349 : : __builtin_unreachable ();
1350 : : }
1351 : :
1352 : :
1353 : : /*
1354 : : SetB - assigns Barg to arg.
1355 : : */
1356 : :
1357 : 14232 : extern "C" void M2Options_SetB (void * arg)
1358 : : {
1359 : 14232 : Barg = DynamicStrings_KillString (Barg);
1360 : 14232 : Barg = DynamicStrings_InitStringCharStar (arg);
1361 : 14232 : }
1362 : :
1363 : :
1364 : : /*
1365 : : GetB - returns Barg value as a C string or NIL if it was never set.
1366 : : */
1367 : :
1368 : 2268 : extern "C" void * M2Options_GetB (void)
1369 : : {
1370 : 2268 : return DynamicStrings_string (Barg);
1371 : : /* static analysis guarentees a RETURN statement will be used before here. */
1372 : : __builtin_unreachable ();
1373 : : }
1374 : :
1375 : :
1376 : : /*
1377 : : SetMD - set the MDFlag to value.
1378 : : */
1379 : :
1380 : 0 : extern "C" void M2Options_SetMD (bool value)
1381 : : {
1382 : 0 : MDFlag = value;
1383 : 0 : }
1384 : :
1385 : :
1386 : : /*
1387 : : GetMD - return the MDFlag.
1388 : : */
1389 : :
1390 : 510 : extern "C" bool M2Options_GetMD (void)
1391 : : {
1392 : 510 : return MDFlag;
1393 : : /* static analysis guarentees a RETURN statement will be used before here. */
1394 : : __builtin_unreachable ();
1395 : : }
1396 : :
1397 : :
1398 : : /*
1399 : : SetMMD - set the MMDFlag to value.
1400 : : */
1401 : :
1402 : 0 : extern "C" void M2Options_SetMMD (bool value)
1403 : : {
1404 : 0 : MMDFlag = value;
1405 : 0 : }
1406 : :
1407 : :
1408 : : /*
1409 : : GetMMD - return the MMDFlag.
1410 : : */
1411 : :
1412 : 510 : extern "C" bool M2Options_GetMMD (void)
1413 : : {
1414 : 510 : return MMDFlag;
1415 : : /* static analysis guarentees a RETURN statement will be used before here. */
1416 : : __builtin_unreachable ();
1417 : : }
1418 : :
1419 : :
1420 : : /*
1421 : : SetMQ - adds a quoted target arg to the DepTarget sentence.
1422 : : */
1423 : :
1424 : 0 : extern "C" void M2Options_SetMQ (void * arg)
1425 : : {
1426 : 0 : DepTarget = AddWord (DepTarget, QuoteTarget (DynamicStrings_InitStringCharStar (arg)));
1427 : 0 : MQFlag = AddWord (MQFlag, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "-MQ", 3)));
1428 : 0 : MQFlag = AddWord (MQFlag, DynamicStrings_Mark (DynamicStrings_InitStringCharStar (arg)));
1429 : 0 : }
1430 : :
1431 : :
1432 : : /*
1433 : : GetMQ - returns a C string containing all the -MQ arg values.
1434 : : */
1435 : :
1436 : 0 : extern "C" void * M2Options_GetMQ (void)
1437 : : {
1438 : 0 : return DynamicStrings_string (MQFlag);
1439 : : /* static analysis guarentees a RETURN statement will be used before here. */
1440 : : __builtin_unreachable ();
1441 : : }
1442 : :
1443 : :
1444 : : /*
1445 : : SetMT - adds a target arg to the DepTarget sentence.
1446 : : */
1447 : :
1448 : 0 : extern "C" void M2Options_SetMT (void * arg)
1449 : : {
1450 : 0 : DepTarget = AddWord (DepTarget, DynamicStrings_InitStringCharStar (arg));
1451 : 0 : MTFlag = AddWord (MTFlag, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "-MT", 3)));
1452 : 0 : MTFlag = AddWord (MTFlag, DynamicStrings_Mark (DynamicStrings_InitStringCharStar (arg)));
1453 : 0 : }
1454 : :
1455 : :
1456 : : /*
1457 : : GetMT - returns a C string containing all the -MT arg values.
1458 : : */
1459 : :
1460 : 0 : extern "C" void * M2Options_GetMT (void)
1461 : : {
1462 : 0 : return DynamicStrings_string (MTFlag);
1463 : : /* static analysis guarentees a RETURN statement will be used before here. */
1464 : : __builtin_unreachable ();
1465 : : }
1466 : :
1467 : :
1468 : : /*
1469 : : GetDepTarget - returns the DepTarget as a C string.
1470 : : */
1471 : :
1472 : 0 : extern "C" void * M2Options_GetDepTarget (void)
1473 : : {
1474 : 0 : return DynamicStrings_string (DepTarget);
1475 : : /* static analysis guarentees a RETURN statement will be used before here. */
1476 : : __builtin_unreachable ();
1477 : : }
1478 : :
1479 : :
1480 : : /*
1481 : : SetMP - set the MPflag to value.
1482 : : */
1483 : :
1484 : 0 : extern "C" void M2Options_SetMP (bool value)
1485 : : {
1486 : 0 : MPFlag = value;
1487 : 0 : }
1488 : :
1489 : :
1490 : : /*
1491 : : GetMP - get the MPflag.
1492 : : */
1493 : :
1494 : 0 : extern "C" bool M2Options_GetMP (void)
1495 : : {
1496 : 0 : return MPFlag;
1497 : : /* static analysis guarentees a RETURN statement will be used before here. */
1498 : : __builtin_unreachable ();
1499 : : }
1500 : :
1501 : :
1502 : : /*
1503 : : SetObj - assigns CmdLineObj to the filename from arg.
1504 : : */
1505 : :
1506 : 14232 : extern "C" void M2Options_SetObj (void * arg)
1507 : : {
1508 : 14232 : CmdLineObj = DynamicStrings_KillString (CmdLineObj);
1509 : 14232 : CmdLineObj = DynamicStrings_InitStringCharStar (arg);
1510 : 14232 : }
1511 : :
1512 : :
1513 : : /*
1514 : : GetObj - returns CmdLineObj filename as a c-string or NIL if it was never set.
1515 : : */
1516 : :
1517 : 0 : extern "C" void * M2Options_GetObj (void)
1518 : : {
1519 : 0 : return DynamicStrings_string (CmdLineObj);
1520 : : /* static analysis guarentees a RETURN statement will be used before here. */
1521 : : __builtin_unreachable ();
1522 : : }
1523 : :
1524 : :
1525 : : /*
1526 : : SetCpp - enables the source to be preprocessed and enables the
1527 : : recognition of C preprocessor line directives.
1528 : : */
1529 : :
1530 : 510 : extern "C" bool M2Options_SetCpp (bool value)
1531 : : {
1532 : 510 : M2Options_CPreProcessor = value;
1533 : 510 : M2Options_LineDirectives = value;
1534 : 510 : return true;
1535 : : /* static analysis guarentees a RETURN statement will be used before here. */
1536 : : __builtin_unreachable ();
1537 : : }
1538 : :
1539 : :
1540 : : /*
1541 : : GetCpp - returns TRUE if the C preprocessor was used.
1542 : : */
1543 : :
1544 : 3390322 : extern "C" bool M2Options_GetCpp (void)
1545 : : {
1546 : 3390322 : return M2Options_CPreProcessor;
1547 : : /* static analysis guarentees a RETURN statement will be used before here. */
1548 : : __builtin_unreachable ();
1549 : : }
1550 : :
1551 : :
1552 : : /*
1553 : : GetLineDirectives - returns TRUE if line directives are allowed.
1554 : : */
1555 : :
1556 : 26516 : extern "C" bool M2Options_GetLineDirectives (void)
1557 : : {
1558 : 26516 : return M2Options_LineDirectives;
1559 : : /* static analysis guarentees a RETURN statement will be used before here. */
1560 : : __builtin_unreachable ();
1561 : : }
1562 : :
1563 : :
1564 : : /*
1565 : : SetScaffoldDynamic - set the -fscaffold-dynamic flag.
1566 : : */
1567 : :
1568 : 14232 : extern "C" void M2Options_SetScaffoldDynamic (bool value)
1569 : : {
1570 : 14232 : M2Options_ScaffoldDynamic = value;
1571 : 14232 : if (M2Options_ScaffoldDynamic)
1572 : : {
1573 : 14190 : M2Options_ScaffoldStatic = false;
1574 : : }
1575 : 14232 : }
1576 : :
1577 : :
1578 : : /*
1579 : : SetScaffoldStatic - set the -fscaffold-static flag.
1580 : : */
1581 : :
1582 : 22 : extern "C" void M2Options_SetScaffoldStatic (bool value)
1583 : : {
1584 : 22 : M2Options_ScaffoldStatic = value;
1585 : 22 : if (M2Options_ScaffoldStatic)
1586 : : {
1587 : 0 : M2Options_ScaffoldDynamic = false;
1588 : : }
1589 : 22 : }
1590 : :
1591 : :
1592 : : /*
1593 : : GetScaffoldDynamic - get the -fscaffold-dynamic flag.
1594 : : */
1595 : :
1596 : 0 : extern "C" bool M2Options_GetScaffoldDynamic (void)
1597 : : {
1598 : 0 : return M2Options_ScaffoldDynamic;
1599 : : /* static analysis guarentees a RETURN statement will be used before here. */
1600 : : __builtin_unreachable ();
1601 : : }
1602 : :
1603 : :
1604 : : /*
1605 : : GetScaffoldStatic - get the -fscaffold-static flag.
1606 : : */
1607 : :
1608 : 0 : extern "C" bool M2Options_GetScaffoldStatic (void)
1609 : : {
1610 : 0 : return M2Options_ScaffoldStatic;
1611 : : /* static analysis guarentees a RETURN statement will be used before here. */
1612 : : __builtin_unreachable ();
1613 : : }
1614 : :
1615 : :
1616 : : /*
1617 : : SetScaffoldMain - set the -fscaffold-main flag.
1618 : : */
1619 : :
1620 : 2558 : extern "C" void M2Options_SetScaffoldMain (bool value)
1621 : : {
1622 : 2558 : M2Options_ScaffoldMain = value;
1623 : 2558 : }
1624 : :
1625 : :
1626 : : /*
1627 : : SetRuntimeModuleOverride - set the override sequence used for module
1628 : : initialization and finialization.
1629 : : */
1630 : :
1631 : 0 : extern "C" void M2Options_SetRuntimeModuleOverride (void * override)
1632 : : {
1633 : 0 : RuntimeModuleOverride = DynamicStrings_KillString (RuntimeModuleOverride);
1634 : 0 : RuntimeModuleOverride = DynamicStrings_InitStringCharStar (override);
1635 : 0 : }
1636 : :
1637 : :
1638 : : /*
1639 : : GetRuntimeModuleOverride - return a string containing any user override
1640 : : or the default module initialization override
1641 : : sequence.
1642 : : */
1643 : :
1644 : 2510 : extern "C" void * M2Options_GetRuntimeModuleOverride (void)
1645 : : {
1646 : 2510 : return DynamicStrings_string (RuntimeModuleOverride);
1647 : : /* static analysis guarentees a RETURN statement will be used before here. */
1648 : : __builtin_unreachable ();
1649 : : }
1650 : :
1651 : :
1652 : : /*
1653 : : SetUselist - set the uselist flag to value and remember the filename.
1654 : : */
1655 : :
1656 : 0 : extern "C" void M2Options_SetUselist (bool value, void * filename)
1657 : : {
1658 : 0 : UselistFlag = value;
1659 : 0 : UselistFilename = DynamicStrings_KillString (UselistFilename);
1660 : 0 : if (filename != NULL)
1661 : : {
1662 : 0 : UselistFilename = DynamicStrings_InitStringCharStar (filename);
1663 : : }
1664 : 0 : }
1665 : :
1666 : :
1667 : : /*
1668 : : GetUselist - return the uselist flag.
1669 : : */
1670 : :
1671 : 13885 : extern "C" bool M2Options_GetUselist (void)
1672 : : {
1673 : 13885 : return UselistFlag;
1674 : : /* static analysis guarentees a RETURN statement will be used before here. */
1675 : : __builtin_unreachable ();
1676 : : }
1677 : :
1678 : :
1679 : : /*
1680 : : GetUselistFilename - return the uselist filename as a String.
1681 : : */
1682 : :
1683 : 0 : extern "C" DynamicStrings_String M2Options_GetUselistFilename (void)
1684 : : {
1685 : 0 : return UselistFilename;
1686 : : /* static analysis guarentees a RETURN statement will be used before here. */
1687 : : __builtin_unreachable ();
1688 : : }
1689 : :
1690 : :
1691 : : /*
1692 : : SetWholeProgram - sets the WholeProgram flag (-fwhole-program).
1693 : : */
1694 : :
1695 : 24 : extern "C" void M2Options_SetWholeProgram (bool value)
1696 : : {
1697 : 24 : M2Options_WholeProgram = value;
1698 : 24 : }
1699 : :
1700 : :
1701 : : /*
1702 : : SetAutoInit - -fauto-init turns on automatic initialization of pointers to NIL.
1703 : : TRUE is returned.
1704 : : */
1705 : :
1706 : 12 : extern "C" bool M2Options_SetAutoInit (bool value)
1707 : : {
1708 : 12 : M2Options_AutoInit = value;
1709 : 12 : return true;
1710 : : /* static analysis guarentees a RETURN statement will be used before here. */
1711 : : __builtin_unreachable ();
1712 : : }
1713 : :
1714 : :
1715 : : /*
1716 : : SetReturnCheck -
1717 : : */
1718 : :
1719 : 0 : extern "C" bool M2Options_SetReturnCheck (bool value)
1720 : : {
1721 : 0 : M2Options_ReturnChecking = value;
1722 : 0 : return true;
1723 : : /* static analysis guarentees a RETURN statement will be used before here. */
1724 : : __builtin_unreachable ();
1725 : : }
1726 : :
1727 : :
1728 : : /*
1729 : : SetNilCheck -
1730 : : */
1731 : :
1732 : 0 : extern "C" bool M2Options_SetNilCheck (bool value)
1733 : : {
1734 : 0 : M2Options_NilChecking = value;
1735 : 0 : return true;
1736 : : /* static analysis guarentees a RETURN statement will be used before here. */
1737 : : __builtin_unreachable ();
1738 : : }
1739 : :
1740 : :
1741 : : /*
1742 : : SetCaseCheck - set else case checking to, value.
1743 : : */
1744 : :
1745 : 580 : extern "C" bool M2Options_SetCaseCheck (bool value)
1746 : : {
1747 : 580 : M2Options_CaseElseChecking = value;
1748 : 580 : return true;
1749 : : /* static analysis guarentees a RETURN statement will be used before here. */
1750 : : __builtin_unreachable ();
1751 : : }
1752 : :
1753 : :
1754 : : /*
1755 : : SetCheckAll - set all runtime checking to, value.
1756 : : */
1757 : :
1758 : 1783 : extern "C" bool M2Options_SetCheckAll (bool value)
1759 : : {
1760 : 1783 : M2Options_NilChecking = value;
1761 : 1783 : M2Options_WholeDivChecking = value;
1762 : 1783 : M2Options_IndexChecking = value;
1763 : 1783 : M2Options_RangeChecking = value;
1764 : 1783 : M2Options_ReturnChecking = value;
1765 : 1783 : M2Options_NilChecking = value;
1766 : 1783 : M2Options_CaseElseChecking = value;
1767 : 1783 : M2Options_FloatValueChecking = value;
1768 : 1783 : M2Options_WholeValueChecking = value;
1769 : 1783 : return true;
1770 : : /* static analysis guarentees a RETURN statement will be used before here. */
1771 : : __builtin_unreachable ();
1772 : : }
1773 : :
1774 : :
1775 : : /*
1776 : : SetVerboseUnbounded - sets the VerboseUnbounded flag to, value.
1777 : : */
1778 : :
1779 : 0 : extern "C" bool M2Options_SetVerboseUnbounded (bool value)
1780 : : {
1781 : 0 : M2Options_VerboseUnbounded = value;
1782 : 0 : return true;
1783 : : /* static analysis guarentees a RETURN statement will be used before here. */
1784 : : __builtin_unreachable ();
1785 : : }
1786 : :
1787 : :
1788 : : /*
1789 : : SetQuiet - sets the quiet flag to, value.
1790 : : */
1791 : :
1792 : 14742 : extern "C" bool M2Options_SetQuiet (bool value)
1793 : : {
1794 : 14742 : M2Options_Quiet = value;
1795 : 14742 : return true;
1796 : : /* static analysis guarentees a RETURN statement will be used before here. */
1797 : : __builtin_unreachable ();
1798 : : }
1799 : :
1800 : :
1801 : : /*
1802 : : SetCC1Quiet - sets the cc1quiet flag to, value.
1803 : : */
1804 : :
1805 : 14232 : extern "C" void M2Options_SetCC1Quiet (bool value)
1806 : : {
1807 : 14232 : CC1Quiet = value;
1808 : 14232 : }
1809 : :
1810 : :
1811 : : /*
1812 : : SetM2g - set GenerateStatementNote to value and return value.
1813 : : Corresponds to the -fm2-g flag.
1814 : : */
1815 : :
1816 : 484 : extern "C" bool M2Options_SetM2g (bool value)
1817 : : {
1818 : 484 : M2Options_GenerateStatementNote = value;
1819 : 484 : return M2Options_GenerateStatementNote;
1820 : : /* static analysis guarentees a RETURN statement will be used before here. */
1821 : : __builtin_unreachable ();
1822 : : }
1823 : :
1824 : :
1825 : : /*
1826 : : GetM2g - returns TRUE if the -fm2-g flags was used.
1827 : : */
1828 : :
1829 : 338087 : extern "C" bool M2Options_GetM2g (void)
1830 : : {
1831 : 338087 : return M2Options_GenerateStatementNote;
1832 : : /* static analysis guarentees a RETURN statement will be used before here. */
1833 : : __builtin_unreachable ();
1834 : : }
1835 : :
1836 : :
1837 : : /*
1838 : : SetLowerCaseKeywords - set the lower case keyword flag and return the result.
1839 : : */
1840 : :
1841 : 0 : extern "C" bool M2Options_SetLowerCaseKeywords (bool value)
1842 : : {
1843 : 0 : M2Options_LowerCaseKeywords = value;
1844 : 0 : return M2Options_LowerCaseKeywords;
1845 : : /* static analysis guarentees a RETURN statement will be used before here. */
1846 : : __builtin_unreachable ();
1847 : : }
1848 : :
1849 : :
1850 : : /*
1851 : : SetUnboundedByReference -
1852 : : */
1853 : :
1854 : 0 : extern "C" bool M2Options_SetUnboundedByReference (bool value)
1855 : : {
1856 : 0 : M2Options_UnboundedByReference = value;
1857 : 0 : return true;
1858 : : /* static analysis guarentees a RETURN statement will be used before here. */
1859 : : __builtin_unreachable ();
1860 : : }
1861 : :
1862 : :
1863 : : /*
1864 : : SetSearchPath -
1865 : : */
1866 : :
1867 : 232986 : extern "C" void M2Options_SetSearchPath (void * arg)
1868 : : {
1869 : 232986 : DynamicStrings_String s;
1870 : :
1871 : 232986 : s = DynamicStrings_InitStringCharStar (arg);
1872 : 232986 : PathName_AddInclude (M2PathName, s);
1873 : 232986 : if (Debugging)
1874 : : {
1875 : : PathName_DumpPathName ((const char *) "path name entries: ", 19);
1876 : : }
1877 : 232986 : s = DynamicStrings_KillString (s);
1878 : 232986 : }
1879 : :
1880 : :
1881 : : /*
1882 : : SetISO -
1883 : : */
1884 : :
1885 : 3965 : extern "C" void M2Options_SetISO (bool value)
1886 : : {
1887 : 3965 : M2Options_Iso = value;
1888 : 3965 : M2Options_Pim = ! value;
1889 : 3965 : M2Options_Pim2 = ! value;
1890 : 3965 : }
1891 : :
1892 : :
1893 : : /*
1894 : : SetPIM -
1895 : : */
1896 : :
1897 : 9815 : extern "C" void M2Options_SetPIM (bool value)
1898 : : {
1899 : 9815 : M2Options_Pim = value;
1900 : 9815 : M2Options_Iso = ! value;
1901 : 9815 : }
1902 : :
1903 : :
1904 : : /*
1905 : : SetPIM2 -
1906 : : */
1907 : :
1908 : 86 : extern "C" void M2Options_SetPIM2 (bool value)
1909 : : {
1910 : 86 : M2Options_Pim = value;
1911 : 86 : M2Options_Pim2 = value;
1912 : 86 : M2Options_Iso = ! value;
1913 : 86 : if (value)
1914 : : {
1915 : : /* Pim4 is the default, turn it off. */
1916 : 86 : M2Options_Pim4 = false;
1917 : : }
1918 : 86 : }
1919 : :
1920 : :
1921 : : /*
1922 : : SetPIM3 -
1923 : : */
1924 : :
1925 : 12 : extern "C" void M2Options_SetPIM3 (bool value)
1926 : : {
1927 : 12 : M2Options_Pim = value;
1928 : 12 : M2Options_Pim3 = value;
1929 : 12 : M2Options_Iso = ! value;
1930 : 12 : if (value)
1931 : : {
1932 : : /* Pim4 is the default, turn it off. */
1933 : 12 : M2Options_Pim4 = false;
1934 : : }
1935 : 12 : }
1936 : :
1937 : :
1938 : : /*
1939 : : SetPIM4 -
1940 : : */
1941 : :
1942 : 66 : extern "C" void M2Options_SetPIM4 (bool value)
1943 : : {
1944 : 66 : M2Options_Pim = value;
1945 : 66 : M2Options_Pim4 = value;
1946 : 66 : M2Options_Iso = ! value;
1947 : 66 : }
1948 : :
1949 : :
1950 : : /*
1951 : : SetPositiveModFloor - sets the positive mod floor option.
1952 : : */
1953 : :
1954 : 0 : extern "C" void M2Options_SetPositiveModFloor (bool value)
1955 : : {
1956 : 0 : M2Options_PositiveModFloorDiv = value;
1957 : 0 : }
1958 : :
1959 : :
1960 : : /*
1961 : : SetWholeDiv - sets the whole division flag.
1962 : : */
1963 : :
1964 : 0 : extern "C" void M2Options_SetWholeDiv (bool value)
1965 : : {
1966 : 0 : M2Options_WholeDivChecking = value;
1967 : 0 : }
1968 : :
1969 : :
1970 : : /*
1971 : : SetIndex - sets the runtime array index checking flag.
1972 : : */
1973 : :
1974 : 0 : extern "C" void M2Options_SetIndex (bool value)
1975 : : {
1976 : 0 : M2Options_IndexChecking = value;
1977 : 0 : }
1978 : :
1979 : :
1980 : : /*
1981 : : SetRange - sets the runtime range checking flag.
1982 : : */
1983 : :
1984 : 6 : extern "C" void M2Options_SetRange (bool value)
1985 : : {
1986 : 6 : M2Options_RangeChecking = value;
1987 : 6 : }
1988 : :
1989 : :
1990 : : /*
1991 : : SetExceptions - sets the enable runtime exceptions flag.
1992 : : */
1993 : :
1994 : 18 : extern "C" void M2Options_SetExceptions (bool value)
1995 : : {
1996 : 18 : M2Options_Exceptions = value;
1997 : 18 : }
1998 : :
1999 : :
2000 : : /*
2001 : : SetStyle -
2002 : : */
2003 : :
2004 : 0 : extern "C" void M2Options_SetStyle (bool value)
2005 : : {
2006 : 0 : M2Options_StyleChecking = value;
2007 : 0 : }
2008 : :
2009 : :
2010 : : /*
2011 : : SetPedantic -
2012 : : */
2013 : :
2014 : 354 : extern "C" void M2Options_SetPedantic (bool value)
2015 : : {
2016 : 354 : M2Options_Pedantic = value;
2017 : 354 : }
2018 : :
2019 : :
2020 : : /*
2021 : : SetPedanticParamNames - sets the pedantic parameter name flag.
2022 : : */
2023 : :
2024 : 6 : extern "C" void M2Options_SetPedanticParamNames (bool value)
2025 : : {
2026 : 6 : M2Options_PedanticParamNames = value;
2027 : 6 : }
2028 : :
2029 : :
2030 : : /*
2031 : : SetPedanticCast - sets the pedantic cast flag.
2032 : : */
2033 : :
2034 : 0 : extern "C" void M2Options_SetPedanticCast (bool value)
2035 : : {
2036 : 0 : M2Options_PedanticCast = value;
2037 : 0 : }
2038 : :
2039 : :
2040 : : /*
2041 : : SetExtendedOpaque - sets the ExtendedOpaque flag.
2042 : : */
2043 : :
2044 : 324 : extern "C" void M2Options_SetExtendedOpaque (bool value)
2045 : : {
2046 : 324 : M2Options_ExtendedOpaque = value;
2047 : 324 : }
2048 : :
2049 : :
2050 : : /*
2051 : : SetXCode - sets the xcode flag.
2052 : : */
2053 : :
2054 : 0 : extern "C" void M2Options_SetXCode (bool value)
2055 : : {
2056 : 0 : M2Options_Xcode = value;
2057 : 0 : }
2058 : :
2059 : :
2060 : : /*
2061 : : SetCompilerDebugging - turn on internal compiler debugging.
2062 : : Enabled via the command line option -fd.
2063 : : */
2064 : :
2065 : 0 : extern "C" void M2Options_SetCompilerDebugging (bool value)
2066 : : {
2067 : 0 : M2Options_CompilerDebugging = value;
2068 : 0 : }
2069 : :
2070 : :
2071 : : /*
2072 : : SetQuadDebugging - display the quadruples (internal debugging).
2073 : : */
2074 : :
2075 : 0 : extern "C" void M2Options_SetQuadDebugging (bool value)
2076 : : {
2077 : 0 : DumpQuad = value;
2078 : 0 : DumpQuadFilename = DynamicStrings_KillString (DumpQuadFilename);
2079 : 0 : DumpQuadFilename = DynamicStrings_InitString ((const char *) "-", 1);
2080 : 0 : }
2081 : :
2082 : :
2083 : : /*
2084 : : SetM2DebugTraceFilter - set internal debug flags. The flags should be
2085 : : specified as a comma separated list. The full
2086 : : list allowed is quad,line,token,all.
2087 : : */
2088 : :
2089 : 0 : extern "C" void M2Options_SetM2DebugTraceFilter (bool value, void * filter)
2090 : : {
2091 : 0 : DynamicStrings_String word;
2092 : 0 : DynamicStrings_String full;
2093 : 0 : int start;
2094 : 0 : int i;
2095 : :
2096 : 0 : full = DynamicStrings_InitStringCharStar (filter);
2097 : 0 : start = 0;
2098 : 0 : do {
2099 : 0 : i = DynamicStrings_Index (full, ',', static_cast<unsigned int> (start));
2100 : 0 : if (i == -1)
2101 : : {
2102 : 0 : word = DynamicStrings_Slice (full, start, 0);
2103 : : }
2104 : : else
2105 : : {
2106 : 0 : word = DynamicStrings_Slice (full, start, i);
2107 : : }
2108 : 0 : SetM2DebugTrace (word, value);
2109 : 0 : word = DynamicStrings_KillString (word);
2110 : 0 : start = i+1;
2111 : 0 : } while (! (i == -1));
2112 : 0 : full = DynamicStrings_KillString (full);
2113 : 0 : }
2114 : :
2115 : :
2116 : : /*
2117 : : SetDebugFunctionLineNumbers - set DebugFunctionLineNumbers.
2118 : : */
2119 : :
2120 : 0 : extern "C" void M2Options_SetDebugFunctionLineNumbers (bool value)
2121 : : {
2122 : 0 : DebugFunctionLineNumbers = value;
2123 : 0 : }
2124 : :
2125 : :
2126 : : /*
2127 : : SetGenerateStatementNote - turn on generation of nops if necessary
2128 : : to generate pedalogical single stepping.
2129 : : */
2130 : :
2131 : 0 : extern "C" void M2Options_SetGenerateStatementNote (bool value)
2132 : : {
2133 : 0 : M2Options_GenerateStatementNote = value;
2134 : 0 : }
2135 : :
2136 : :
2137 : : /*
2138 : : SetSources -
2139 : : */
2140 : :
2141 : 0 : extern "C" void M2Options_SetSources (bool value)
2142 : : {
2143 : 0 : M2Options_Quiet = ! value;
2144 : 0 : SeenSources = value;
2145 : 0 : }
2146 : :
2147 : :
2148 : : /*
2149 : : SetDumpSystemExports -
2150 : : */
2151 : :
2152 : 22 : extern "C" void M2Options_SetDumpSystemExports (bool value)
2153 : : {
2154 : 22 : M2Options_DumpSystemExports = value;
2155 : 22 : }
2156 : :
2157 : :
2158 : : /*
2159 : : SetSwig -
2160 : : */
2161 : :
2162 : 0 : extern "C" void M2Options_SetSwig (bool value)
2163 : : {
2164 : 0 : M2Options_GenerateSwig = value;
2165 : 0 : }
2166 : :
2167 : :
2168 : : /*
2169 : : SetOptimizing -
2170 : : */
2171 : :
2172 : 7426 : extern "C" void M2Options_SetOptimizing (unsigned int value)
2173 : : {
2174 : 7426 : if (value > 0)
2175 : : {
2176 : 7426 : M2Options_Optimizing = true;
2177 : 7426 : M2Options_OptimizeBasicBlock = true;
2178 : 7426 : M2Options_OptimizeUncalledProcedures = true;
2179 : 7426 : M2Options_OptimizeCommonSubExpressions = true;
2180 : : }
2181 : : else
2182 : : {
2183 : 0 : M2Options_Optimizing = false;
2184 : 0 : M2Options_OptimizeBasicBlock = false;
2185 : 0 : M2Options_OptimizeUncalledProcedures = false;
2186 : 0 : M2Options_OptimizeCommonSubExpressions = false;
2187 : : }
2188 : 7426 : }
2189 : :
2190 : :
2191 : : /*
2192 : : OverrideLocation - possibly override the location value, depending upon
2193 : : whether the -flocation= option was used.
2194 : : */
2195 : :
2196 : 664605188 : extern "C" location_t M2Options_OverrideLocation (location_t location)
2197 : : {
2198 : 664605188 : if (M2Options_ForcedLocation)
2199 : : {
2200 : 0 : return ForcedLocationValue;
2201 : : }
2202 : : else
2203 : : {
2204 : : return location;
2205 : : }
2206 : : /* static analysis guarentees a RETURN statement will be used before here. */
2207 : : __builtin_unreachable ();
2208 : : }
2209 : :
2210 : :
2211 : : /*
2212 : : SetForcedLocation - sets the location for the lifetime of this compile to, location.
2213 : : This is primarily an internal debugging switch.
2214 : : */
2215 : :
2216 : 0 : extern "C" void M2Options_SetForcedLocation (location_t location)
2217 : : {
2218 : 0 : M2Options_ForcedLocation = true;
2219 : 0 : ForcedLocationValue = location;
2220 : 0 : }
2221 : :
2222 : :
2223 : : /*
2224 : : SetUnusedVariableChecking - assigns the UnusedVariableChecking to value.
2225 : : */
2226 : :
2227 : 342 : extern "C" void M2Options_SetUnusedVariableChecking (bool value)
2228 : : {
2229 : 342 : M2Options_UnusedVariableChecking = value;
2230 : 342 : }
2231 : :
2232 : :
2233 : : /*
2234 : : SetUnusedParameterChecking - assigns the UnusedParameterChecking to value.
2235 : : */
2236 : :
2237 : 0 : extern "C" void M2Options_SetUnusedParameterChecking (bool value)
2238 : : {
2239 : 0 : M2Options_UnusedParameterChecking = value;
2240 : 0 : }
2241 : :
2242 : :
2243 : : /*
2244 : : SetStrictTypeChecking - assigns the StrictTypeChecking flag to value.
2245 : : */
2246 : :
2247 : 0 : extern "C" void M2Options_SetStrictTypeChecking (bool value)
2248 : : {
2249 : 0 : M2Options_StrictTypeChecking = value;
2250 : 0 : }
2251 : :
2252 : :
2253 : : /*
2254 : : setdefextension - set the source file definition module extension to arg.
2255 : : This should include the . and by default it is set to .def.
2256 : : */
2257 : :
2258 : 6 : extern "C" void M2Options_setdefextension (void * arg)
2259 : : {
2260 : 6 : DynamicStrings_String s;
2261 : :
2262 : 6 : s = DynamicStrings_InitStringCharStar (arg);
2263 : 6 : M2Search_SetDefExtension (s);
2264 : 6 : s = DynamicStrings_KillString (s);
2265 : 6 : }
2266 : :
2267 : :
2268 : : /*
2269 : : setmodextension - set the source file module extension to arg.
2270 : : This should include the . and by default it is set to .mod.
2271 : : */
2272 : :
2273 : 6 : extern "C" void M2Options_setmodextension (void * arg)
2274 : : {
2275 : 6 : DynamicStrings_String s;
2276 : :
2277 : 6 : s = DynamicStrings_InitStringCharStar (arg);
2278 : 6 : M2Search_SetModExtension (s);
2279 : 6 : s = DynamicStrings_KillString (s);
2280 : 6 : }
2281 : :
2282 : :
2283 : : /*
2284 : : SetStatistics - turn on/off generate of compile time statistics.
2285 : : */
2286 : :
2287 : 0 : extern "C" void M2Options_SetStatistics (bool on)
2288 : : {
2289 : 0 : M2Options_Statistics = on;
2290 : 0 : }
2291 : :
2292 : :
2293 : : /*
2294 : : SetVerbose - set the Verbose flag to, value. It returns TRUE.
2295 : : */
2296 : :
2297 : 0 : extern "C" bool M2Options_SetVerbose (bool value)
2298 : : {
2299 : 0 : M2Options_Verbose = value;
2300 : 0 : return true;
2301 : : /* static analysis guarentees a RETURN statement will be used before here. */
2302 : : __builtin_unreachable ();
2303 : : }
2304 : :
2305 : :
2306 : : /*
2307 : : CppArg - sets the option and arg in the cpp command line.
2308 : : */
2309 : :
2310 : 7990 : extern "C" void M2Options_CppArg (void * opt, void * arg, bool joined)
2311 : : {
2312 : 7990 : DynamicStrings_String s;
2313 : :
2314 : 7990 : s = DynamicStrings_InitStringCharStar (opt);
2315 : 7990 : if ((DynamicStrings_EqualArray (s, (const char *) "-fcpp-begin", 11)) || (DynamicStrings_EqualArray (s, (const char *) "-fcpp-end", 9)))
2316 : : {} /* empty. */
2317 : : else
2318 : : {
2319 : : /* do nothing */
2320 : 7990 : if (! (DynamicStrings_EqualArray (CppArgs, (const char *) "", 0)))
2321 : : {
2322 : 7480 : CppArgs = DynamicStrings_ConCatChar (CppArgs, ' ');
2323 : : }
2324 : 7990 : CppArgs = DynamicStrings_ConCat (CppArgs, DynamicStrings_Mark (s));
2325 : 7990 : if (arg != NULL)
2326 : : {
2327 : 3570 : s = DynamicStrings_InitStringCharStar (arg);
2328 : 3570 : if (! joined)
2329 : : {
2330 : 1020 : CppArgs = DynamicStrings_ConCatChar (CppArgs, ' ');
2331 : : }
2332 : 3570 : CppArgs = DynamicStrings_ConCat (CppArgs, s);
2333 : : }
2334 : : }
2335 : 7990 : }
2336 : :
2337 : :
2338 : : /*
2339 : : CppCommandLine - returns the Cpp command line and all arguments.
2340 : : NIL is returned if the -fcpp is absent.
2341 : : */
2342 : :
2343 : 2268 : extern "C" DynamicStrings_String M2Options_CppCommandLine (void)
2344 : : {
2345 : 2268 : DynamicStrings_String s;
2346 : :
2347 : 2268 : if (M2Options_CPreProcessor)
2348 : : {
2349 : 2268 : s = DynamicStrings_InitStringCharStar (m2configure_FullPathCPP ());
2350 : 2268 : s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (s, ' '), CppArgs);
2351 : 2268 : if (CC1Quiet)
2352 : : {
2353 : 2268 : s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (s, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "-quiet", 6)));
2354 : : }
2355 : 2268 : return s;
2356 : : }
2357 : : else
2358 : : {
2359 : : return static_cast<DynamicStrings_String> (NULL);
2360 : : }
2361 : : /* static analysis guarentees a RETURN statement will be used before here. */
2362 : : __builtin_unreachable ();
2363 : : }
2364 : :
2365 : :
2366 : : /*
2367 : : CppRemember - remember a string, s, as a cpp related argument.
2368 : : The string, s, is not garbage collected.
2369 : : */
2370 : :
2371 : 0 : extern "C" void M2Options_CppRemember (DynamicStrings_String s)
2372 : : {
2373 : 0 : if ((CppArgs == NULL) || (DynamicStrings_EqualArray (CppArgs, (const char *) "", 0)))
2374 : : {
2375 : 0 : CppArgs = DynamicStrings_Dup (s);
2376 : : }
2377 : : else
2378 : : {
2379 : 0 : CppArgs = DynamicStrings_ConCatChar (CppArgs, ' ');
2380 : 0 : CppArgs = DynamicStrings_ConCat (CppArgs, s);
2381 : : }
2382 : 0 : }
2383 : :
2384 : :
2385 : : /*
2386 : : GetISO - return TRUE if -fiso was present on the command line.
2387 : : */
2388 : :
2389 : 2020 : extern "C" bool M2Options_GetISO (void)
2390 : : {
2391 : 2020 : return M2Options_Iso;
2392 : : /* static analysis guarentees a RETURN statement will be used before here. */
2393 : : __builtin_unreachable ();
2394 : : }
2395 : :
2396 : :
2397 : : /*
2398 : : GetPIM - return TRUE if -fpim was present on the command line.
2399 : : */
2400 : :
2401 : 315805 : extern "C" bool M2Options_GetPIM (void)
2402 : : {
2403 : 315805 : return M2Options_Pim;
2404 : : /* static analysis guarentees a RETURN statement will be used before here. */
2405 : : __builtin_unreachable ();
2406 : : }
2407 : :
2408 : :
2409 : : /*
2410 : : GetPIM2 - return TRUE if -fpim2 was present on the command line.
2411 : : */
2412 : :
2413 : 0 : extern "C" bool M2Options_GetPIM2 (void)
2414 : : {
2415 : 0 : return M2Options_Pim2;
2416 : : /* static analysis guarentees a RETURN statement will be used before here. */
2417 : : __builtin_unreachable ();
2418 : : }
2419 : :
2420 : :
2421 : : /*
2422 : : GetPIM3 - return TRUE if -fpim3 was present on the command line.
2423 : : */
2424 : :
2425 : 0 : extern "C" bool M2Options_GetPIM3 (void)
2426 : : {
2427 : 0 : return M2Options_Pim3;
2428 : : /* static analysis guarentees a RETURN statement will be used before here. */
2429 : : __builtin_unreachable ();
2430 : : }
2431 : :
2432 : :
2433 : : /*
2434 : : GetPIM4 - return TRUE if -fpim4 was present on the command line.
2435 : : */
2436 : :
2437 : 7007 : extern "C" bool M2Options_GetPIM4 (void)
2438 : : {
2439 : 7007 : return M2Options_Pim4;
2440 : : /* static analysis guarentees a RETURN statement will be used before here. */
2441 : : __builtin_unreachable ();
2442 : : }
2443 : :
2444 : :
2445 : : /*
2446 : : GetPositiveModFloor - return TRUE if -fpositive-mod-floor was present
2447 : : on the command line.
2448 : : */
2449 : :
2450 : 136 : extern "C" bool M2Options_GetPositiveModFloor (void)
2451 : : {
2452 : 136 : return M2Options_PositiveModFloorDiv;
2453 : : /* static analysis guarentees a RETURN statement will be used before here. */
2454 : : __builtin_unreachable ();
2455 : : }
2456 : :
2457 : :
2458 : : /*
2459 : : GetFloatValueCheck - return TRUE if -ffloatvalue was present on the
2460 : : command line.
2461 : : */
2462 : :
2463 : 1550 : extern "C" bool M2Options_GetFloatValueCheck (void)
2464 : : {
2465 : 1550 : return M2Options_FloatValueChecking;
2466 : : /* static analysis guarentees a RETURN statement will be used before here. */
2467 : : __builtin_unreachable ();
2468 : : }
2469 : :
2470 : :
2471 : : /*
2472 : : SetFloatValueCheck - set depending upon the -ffloatvalue.
2473 : : */
2474 : :
2475 : 0 : extern "C" void M2Options_SetFloatValueCheck (bool value)
2476 : : {
2477 : 0 : M2Options_FloatValueChecking = value;
2478 : 0 : }
2479 : :
2480 : :
2481 : : /*
2482 : : GetWholeValueCheck - return TRUE if -fwholevalue was present on the
2483 : : command line.
2484 : : */
2485 : :
2486 : 40986 : extern "C" bool M2Options_GetWholeValueCheck (void)
2487 : : {
2488 : 40986 : return M2Options_WholeValueChecking;
2489 : : /* static analysis guarentees a RETURN statement will be used before here. */
2490 : : __builtin_unreachable ();
2491 : : }
2492 : :
2493 : :
2494 : : /*
2495 : : SetWholeValueCheck - set depending upon the -fwholevalue.
2496 : : */
2497 : :
2498 : 0 : extern "C" void M2Options_SetWholeValueCheck (bool value)
2499 : : {
2500 : 0 : M2Options_WholeValueChecking = value;
2501 : 0 : }
2502 : :
2503 : :
2504 : : /*
2505 : : SetWall - set all warnings to, value.
2506 : : */
2507 : :
2508 : 0 : extern "C" void M2Options_SetWall (bool value)
2509 : : {
2510 : 0 : M2Options_UnusedVariableChecking = value;
2511 : 0 : M2Options_UnusedParameterChecking = value;
2512 : 0 : M2Options_UninitVariableChecking = value;
2513 : 0 : M2Options_PedanticCast = value;
2514 : 0 : M2Options_PedanticParamNames = value;
2515 : 0 : M2Options_StyleChecking = value;
2516 : 0 : M2Options_CaseEnumChecking = value;
2517 : 0 : }
2518 : :
2519 : :
2520 : : /*
2521 : : SetSaveTemps - turn on/off -save-temps.
2522 : : */
2523 : :
2524 : 0 : extern "C" void M2Options_SetSaveTemps (bool value)
2525 : : {
2526 : 0 : M2Options_SaveTemps = value;
2527 : 0 : }
2528 : :
2529 : :
2530 : : /*
2531 : : SetSaveTempsDir - turn on/off -save-temps and specify the directory.
2532 : : */
2533 : :
2534 : 0 : extern "C" void M2Options_SetSaveTempsDir (void * arg)
2535 : : {
2536 : 0 : SaveTempsDir = DynamicStrings_InitStringCharStar (arg);
2537 : 0 : M2Options_SaveTemps = true;
2538 : 0 : }
2539 : :
2540 : :
2541 : : /*
2542 : : GetSaveTempsDir - return SaveTempsDir or NIL if -save-temps was not used.
2543 : : */
2544 : :
2545 : 179102 : extern "C" DynamicStrings_String M2Options_GetSaveTempsDir (void)
2546 : : {
2547 : 179102 : return SaveTempsDir;
2548 : : /* static analysis guarentees a RETURN statement will be used before here. */
2549 : : __builtin_unreachable ();
2550 : : }
2551 : :
2552 : :
2553 : : /*
2554 : : SetDumpDir - Set the dump dir.
2555 : : */
2556 : :
2557 : 12092 : extern "C" void M2Options_SetDumpDir (void * arg)
2558 : : {
2559 : 12092 : DumpDir = DynamicStrings_InitStringCharStar (arg);
2560 : 12092 : }
2561 : :
2562 : :
2563 : : /*
2564 : : GetDumpDir - return DumpDir or NIL.
2565 : : */
2566 : :
2567 : 179102 : extern "C" DynamicStrings_String M2Options_GetDumpDir (void)
2568 : : {
2569 : 179102 : return DumpDir;
2570 : : /* static analysis guarentees a RETURN statement will be used before here. */
2571 : : __builtin_unreachable ();
2572 : : }
2573 : :
2574 : :
2575 : : /*
2576 : : SetGenModuleList - set the GenModuleList flag to true and pass
2577 : : set GenModuleListFilename to filename.
2578 : : */
2579 : :
2580 : 2528 : extern "C" void M2Options_SetGenModuleList (bool value, void * filename)
2581 : : {
2582 : 2528 : GenModuleListFilename = DynamicStrings_KillString (GenModuleListFilename);
2583 : 2528 : if (filename != NULL)
2584 : : {
2585 : 2528 : GenModuleListFilename = DynamicStrings_InitStringCharStar (filename);
2586 : : }
2587 : 2528 : M2Options_GenModuleList = value;
2588 : 2528 : }
2589 : :
2590 : :
2591 : : /*
2592 : : GetGenModuleFilename - returns the filename set by SetGenModuleList.
2593 : : */
2594 : :
2595 : 5044 : extern "C" DynamicStrings_String M2Options_GetGenModuleFilename (void)
2596 : : {
2597 : 5044 : return GenModuleListFilename;
2598 : : /* static analysis guarentees a RETURN statement will be used before here. */
2599 : : __builtin_unreachable ();
2600 : : }
2601 : :
2602 : :
2603 : : /*
2604 : : SetShared - sets the SharedFlag to value.
2605 : : */
2606 : :
2607 : 0 : extern "C" void M2Options_SetShared (bool value)
2608 : : {
2609 : 0 : M2Options_SharedFlag = value;
2610 : 0 : }
2611 : :
2612 : :
2613 : : /*
2614 : : SetUninitVariableChecking - sets the UninitVariableChecking and
2615 : : UninitVariableConditionalChecking flags to value
2616 : : depending upon arg string. The arg string
2617 : : can be: "all", "known,cond", "cond,known", "known"
2618 : : or "cond".
2619 : : */
2620 : :
2621 : 613 : extern "C" int M2Options_SetUninitVariableChecking (bool value, void * arg)
2622 : : {
2623 : 613 : DynamicStrings_String s;
2624 : :
2625 : 613 : if (Debugging)
2626 : : {
2627 : : /* avoid gcc warning by using compound statement even if not strictly necessary. */
2628 : : if (value)
2629 : : {
2630 : : libc_printf ((const char *) "SetUninitVariableChecking (TRUE, %s)\\n", 38, arg);
2631 : : }
2632 : : else
2633 : : {
2634 : : libc_printf ((const char *) "SetUninitVariableChecking (FALSE, %s)\\n", 39, arg);
2635 : : }
2636 : : }
2637 : 613 : s = DynamicStrings_InitStringCharStar (arg);
2638 : 613 : if (((DynamicStrings_EqualArray (s, (const char *) "all", 3)) || (DynamicStrings_EqualArray (s, (const char *) "known,cond", 10))) || (DynamicStrings_EqualArray (s, (const char *) "cond,known", 10)))
2639 : : {
2640 : 415 : M2Options_UninitVariableChecking = value;
2641 : 415 : M2Options_UninitVariableConditionalChecking = value;
2642 : 415 : s = DynamicStrings_KillString (s);
2643 : 415 : return 1;
2644 : : }
2645 : 198 : else if (DynamicStrings_EqualArray (s, (const char *) "known", 5))
2646 : : {
2647 : : /* avoid dangling else. */
2648 : 198 : M2Options_UninitVariableChecking = value;
2649 : 198 : s = DynamicStrings_KillString (s);
2650 : 198 : return 1;
2651 : : }
2652 : 0 : else if (DynamicStrings_EqualArray (s, (const char *) "cond", 4))
2653 : : {
2654 : : /* avoid dangling else. */
2655 : 0 : M2Options_UninitVariableConditionalChecking = value;
2656 : 0 : s = DynamicStrings_KillString (s);
2657 : 0 : return 1;
2658 : : }
2659 : : else
2660 : : {
2661 : : /* avoid dangling else. */
2662 : 0 : s = DynamicStrings_KillString (s);
2663 : 0 : return 0;
2664 : : }
2665 : : /* static analysis guarentees a RETURN statement will be used before here. */
2666 : : __builtin_unreachable ();
2667 : : }
2668 : :
2669 : :
2670 : : /*
2671 : : SetCaseEnumChecking - sets the CaseEnumChecking to value.
2672 : : */
2673 : :
2674 : 664 : extern "C" void M2Options_SetCaseEnumChecking (bool value)
2675 : : {
2676 : 664 : M2Options_CaseEnumChecking = value;
2677 : 664 : }
2678 : :
2679 : :
2680 : : /*
2681 : : SetDebugBuiltins - sets the DebugBuiltins to value.
2682 : : */
2683 : :
2684 : 0 : extern "C" void M2Options_SetDebugBuiltins (bool value)
2685 : : {
2686 : 0 : M2Options_DebugBuiltins = value;
2687 : 0 : }
2688 : :
2689 : :
2690 : : /*
2691 : : SetIBMLongDouble - enable/disable LONGREAL to map onto the
2692 : : IBM long double 128 bit data type.
2693 : : (Only available on the ppc).
2694 : : */
2695 : :
2696 : 0 : extern "C" void M2Options_SetIBMLongDouble (bool value)
2697 : : {
2698 : 0 : IBMLongDouble = value;
2699 : 0 : if (value)
2700 : : {
2701 : 0 : IEEELongDouble = false;
2702 : : }
2703 : 0 : }
2704 : :
2705 : :
2706 : : /*
2707 : : GetIBMLongDouble - return the value of IBMLongDouble.
2708 : : */
2709 : :
2710 : 0 : extern "C" bool M2Options_GetIBMLongDouble (void)
2711 : : {
2712 : 0 : return IBMLongDouble;
2713 : : /* static analysis guarentees a RETURN statement will be used before here. */
2714 : : __builtin_unreachable ();
2715 : : }
2716 : :
2717 : :
2718 : : /*
2719 : : SetIEEELongDouble - enable/disable LONGREAL to map onto the
2720 : : IEEE long double 128 bit data type.
2721 : : (Only available on the ppc).
2722 : : */
2723 : :
2724 : 0 : extern "C" void M2Options_SetIEEELongDouble (bool value)
2725 : : {
2726 : 0 : IEEELongDouble = value;
2727 : 0 : if (value)
2728 : : {
2729 : 0 : IBMLongDouble = false;
2730 : : }
2731 : 0 : }
2732 : :
2733 : :
2734 : : /*
2735 : : GetIEEELongDouble - return the value of IEEELongDouble.
2736 : : */
2737 : :
2738 : 14232 : extern "C" bool M2Options_GetIEEELongDouble (void)
2739 : : {
2740 : 14232 : return IEEELongDouble;
2741 : : /* static analysis guarentees a RETURN statement will be used before here. */
2742 : : __builtin_unreachable ();
2743 : : }
2744 : :
2745 : :
2746 : : /*
2747 : : GetDumpDeclFilename - returns the DumpDeclFilename.
2748 : : */
2749 : :
2750 : 0 : extern "C" DynamicStrings_String M2Options_GetDumpDeclFilename (void)
2751 : : {
2752 : 0 : return DumpDeclFilename;
2753 : : /* static analysis guarentees a RETURN statement will be used before here. */
2754 : : __builtin_unreachable ();
2755 : : }
2756 : :
2757 : :
2758 : : /*
2759 : : SetDumpDeclFilename -
2760 : : */
2761 : :
2762 : 0 : extern "C" void M2Options_SetDumpDeclFilename (bool value, void * filename)
2763 : : {
2764 : 0 : DumpDecl = value;
2765 : 0 : DumpDeclFilename = DynamicStrings_KillString (DumpDeclFilename);
2766 : 0 : if (filename != NULL)
2767 : : {
2768 : 0 : DumpDeclFilename = DynamicStrings_InitStringCharStar (filename);
2769 : : }
2770 : 0 : }
2771 : :
2772 : :
2773 : : /*
2774 : : GetDumpQuadFilename - returns the DumpQuadFilename.
2775 : : */
2776 : :
2777 : 0 : extern "C" DynamicStrings_String M2Options_GetDumpQuadFilename (void)
2778 : : {
2779 : 0 : return DumpQuadFilename;
2780 : : /* static analysis guarentees a RETURN statement will be used before here. */
2781 : : __builtin_unreachable ();
2782 : : }
2783 : :
2784 : :
2785 : : /*
2786 : : SetDumpQuadFilename -
2787 : : */
2788 : :
2789 : 0 : extern "C" void M2Options_SetDumpQuadFilename (bool value, void * filename)
2790 : : {
2791 : 0 : DumpQuad = value;
2792 : 0 : DumpQuadFilename = DynamicStrings_KillString (DumpQuadFilename);
2793 : 0 : if (filename != NULL)
2794 : : {
2795 : 0 : DumpQuadFilename = DynamicStrings_InitStringCharStar (filename);
2796 : : }
2797 : 0 : }
2798 : :
2799 : :
2800 : : /*
2801 : : GetDumpGimpleFilename - returns the DumpGimpleFilename.
2802 : : */
2803 : :
2804 : 0 : extern "C" DynamicStrings_String M2Options_GetDumpGimpleFilename (void)
2805 : : {
2806 : 0 : return DumpGimpleFilename;
2807 : : /* static analysis guarentees a RETURN statement will be used before here. */
2808 : : __builtin_unreachable ();
2809 : : }
2810 : :
2811 : :
2812 : : /*
2813 : : SetDumpGimpleFilename - set DumpGimpleFilename to filename.
2814 : : */
2815 : :
2816 : 0 : extern "C" void M2Options_SetDumpGimpleFilename (bool value, void * filename)
2817 : : {
2818 : 0 : DumpGimple = value;
2819 : 0 : DumpGimpleFilename = DynamicStrings_KillString (DumpGimpleFilename);
2820 : 0 : if (value && (filename != NULL))
2821 : : {
2822 : 0 : DumpGimpleFilename = DynamicStrings_InitStringCharStar (filename);
2823 : : }
2824 : 0 : }
2825 : :
2826 : :
2827 : : /*
2828 : : SetM2DumpFilter - sets the filter to a comma separated list of procedures
2829 : : and modules. Not to be confused with SetM2Dump below
2830 : : which enables the class of data structures to be dumped.
2831 : : */
2832 : :
2833 : 0 : extern "C" void M2Options_SetM2DumpFilter (bool value, void * filter)
2834 : : {
2835 : 0 : M2DumpFilter = DynamicStrings_KillString (M2DumpFilter);
2836 : 0 : if (value && (filter != NULL))
2837 : : {
2838 : 0 : M2DumpFilter = DynamicStrings_InitStringCharStar (filter);
2839 : : }
2840 : 0 : }
2841 : :
2842 : :
2843 : : /*
2844 : : GetM2DumpFilter - returns the dump filter.
2845 : : */
2846 : :
2847 : 0 : extern "C" void * M2Options_GetM2DumpFilter (void)
2848 : : {
2849 : 0 : if (M2DumpFilter == NULL)
2850 : : {
2851 : : return NULL;
2852 : : }
2853 : : else
2854 : : {
2855 : 0 : return DynamicStrings_string (M2DumpFilter);
2856 : : }
2857 : : /* static analysis guarentees a RETURN statement will be used before here. */
2858 : : __builtin_unreachable ();
2859 : : }
2860 : :
2861 : :
2862 : : /*
2863 : : SetM2Dump - sets the dump via a comma separated list: quad,decl,gimple,all.
2864 : : It returns TRUE if the comma separated list is valid.
2865 : : */
2866 : :
2867 : 0 : extern "C" bool M2Options_SetM2Dump (bool value, void * filter)
2868 : : {
2869 : 0 : bool result;
2870 : 0 : DynamicStrings_String dump;
2871 : 0 : int start;
2872 : 0 : int i;
2873 : :
2874 : 0 : if (filter == NULL)
2875 : : {
2876 : : return false;
2877 : : }
2878 : 0 : if (M2Dump != NULL)
2879 : : {
2880 : 0 : M2Dump = DynamicStrings_KillString (M2Dump);
2881 : : }
2882 : 0 : M2Dump = DynamicStrings_InitStringCharStar (filter);
2883 : 0 : start = 0;
2884 : 0 : do {
2885 : 0 : i = DynamicStrings_Index (M2Dump, ',', static_cast<unsigned int> (start));
2886 : 0 : if (i == -1)
2887 : : {
2888 : 0 : dump = DynamicStrings_Slice (M2Dump, start, 0);
2889 : : }
2890 : : else
2891 : : {
2892 : 0 : dump = DynamicStrings_Slice (M2Dump, start, i);
2893 : : }
2894 : 0 : result = MatchDump (dump, value);
2895 : 0 : dump = DynamicStrings_KillString (dump);
2896 : 0 : if (! result)
2897 : : {
2898 : : return false;
2899 : : }
2900 : 0 : start = i+1;
2901 : 0 : } while (! (i == -1));
2902 : : return true;
2903 : : /* static analysis guarentees a RETURN statement will be used before here. */
2904 : : __builtin_unreachable ();
2905 : : }
2906 : :
2907 : :
2908 : : /*
2909 : : GetDumpGimple - return TRUE if the dump gimple flag is set from SetM2Dump.
2910 : : */
2911 : :
2912 : 199933 : extern "C" bool M2Options_GetDumpGimple (void)
2913 : : {
2914 : 199933 : return DumpGimple;
2915 : : /* static analysis guarentees a RETURN statement will be used before here. */
2916 : : __builtin_unreachable ();
2917 : : }
2918 : :
2919 : :
2920 : : /*
2921 : : GetDumpQuad - return TRUE if the dump quad flag is set from SetM2Dump.
2922 : : */
2923 : :
2924 : 66581 : extern "C" bool M2Options_GetDumpQuad (void)
2925 : : {
2926 : 66581 : return DumpQuad;
2927 : : /* static analysis guarentees a RETURN statement will be used before here. */
2928 : : __builtin_unreachable ();
2929 : : }
2930 : :
2931 : :
2932 : : /*
2933 : : GetDumpDecl - return TRUE if the dump decl flag is set from SetM2Dump.
2934 : : */
2935 : :
2936 : 26642 : extern "C" bool M2Options_GetDumpDecl (void)
2937 : : {
2938 : 26642 : return DumpDecl;
2939 : : /* static analysis guarentees a RETURN statement will be used before here. */
2940 : : __builtin_unreachable ();
2941 : : }
2942 : :
2943 : :
2944 : : /*
2945 : : GetDebugTraceQuad - return DebugTraceQuad.
2946 : : */
2947 : :
2948 : 108856474 : extern "C" bool M2Options_GetDebugTraceQuad (void)
2949 : : {
2950 : 108856474 : return DebugTraceQuad;
2951 : : /* static analysis guarentees a RETURN statement will be used before here. */
2952 : : __builtin_unreachable ();
2953 : : }
2954 : :
2955 : :
2956 : : /*
2957 : : GetDebugTraceTree - return DebugTraceTree.
2958 : : */
2959 : :
2960 : 0 : extern "C" bool M2Options_GetDebugTraceTree (void)
2961 : : {
2962 : 0 : return DebugTraceTree;
2963 : : /* static analysis guarentees a RETURN statement will be used before here. */
2964 : : __builtin_unreachable ();
2965 : : }
2966 : :
2967 : :
2968 : : /*
2969 : : GetDebugTraceToken - return DebugTraceToken.
2970 : : */
2971 : :
2972 : 532218656 : extern "C" bool M2Options_GetDebugTraceToken (void)
2973 : : {
2974 : 532218656 : return DebugTraceToken;
2975 : : /* static analysis guarentees a RETURN statement will be used before here. */
2976 : : __builtin_unreachable ();
2977 : : }
2978 : :
2979 : :
2980 : : /*
2981 : : GetDebugTraceLine - return DebugTraceLine.
2982 : : */
2983 : :
2984 : 41184224 : extern "C" bool M2Options_GetDebugTraceLine (void)
2985 : : {
2986 : 41184224 : return DebugTraceLine;
2987 : : /* static analysis guarentees a RETURN statement will be used before here. */
2988 : : __builtin_unreachable ();
2989 : : }
2990 : :
2991 : :
2992 : : /*
2993 : : GetDebugFunctionLineNumbers - return DebugFunctionLineNumbers.
2994 : : */
2995 : :
2996 : 13201 : extern "C" bool M2Options_GetDebugFunctionLineNumbers (void)
2997 : : {
2998 : 13201 : return DebugFunctionLineNumbers;
2999 : : /* static analysis guarentees a RETURN statement will be used before here. */
3000 : : __builtin_unreachable ();
3001 : : }
3002 : :
3003 : :
3004 : : /*
3005 : : GetEnableForward - return EnableForward.
3006 : : */
3007 : :
3008 : 60 : extern "C" bool M2Options_GetEnableForward (void)
3009 : : {
3010 : 60 : return EnableForward;
3011 : : /* static analysis guarentees a RETURN statement will be used before here. */
3012 : : __builtin_unreachable ();
3013 : : }
3014 : :
3015 : :
3016 : : /*
3017 : : SetEnableForward - set EnableForward to value.
3018 : : */
3019 : :
3020 : 0 : extern "C" void M2Options_SetEnableForward (bool value)
3021 : : {
3022 : 0 : EnableForward = value;
3023 : 0 : }
3024 : :
3025 : :
3026 : : /*
3027 : : FinaliseOptions - once all options have been parsed we set any inferred
3028 : : values.
3029 : : */
3030 : :
3031 : 14232 : extern "C" void M2Options_FinaliseOptions (void)
3032 : : {
3033 : : /* currently only one value, this could be make an option in the future */
3034 : 14232 : M2Options_VariantValueChecking = M2Options_Iso;
3035 : 14232 : }
3036 : :
3037 : 14232 : extern "C" void _M2_M2Options_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[], __attribute__((unused)) char *envp[])
3038 : : {
3039 : 14232 : M2Options_cflag = false; /* -c. */
3040 : 14232 : RuntimeModuleOverride = DynamicStrings_InitString ((const char *) "m2iso:RTentity,m2iso:Storage,m2iso:SYSTEM,m2iso:M2RTS,m2iso:RTExceptions,m2iso:IOLink", 85); /* -c. */
3041 : 14232 : CppArgs = DynamicStrings_InitString ((const char *) "", 0);
3042 : 14232 : M2Options_Pim = true;
3043 : 14232 : M2Options_Pim2 = false;
3044 : 14232 : M2Options_Pim3 = false;
3045 : 14232 : M2Options_Pim4 = true;
3046 : 14232 : M2Options_PositiveModFloorDiv = false;
3047 : 14232 : M2Options_Iso = false;
3048 : 14232 : SeenSources = false;
3049 : 14232 : M2Options_Statistics = false;
3050 : 14232 : M2Options_StyleChecking = false;
3051 : 14232 : M2Options_CompilerDebugging = false;
3052 : 14232 : M2Options_GenerateDebugging = false;
3053 : 14232 : M2Options_Optimizing = false;
3054 : 14232 : M2Options_Pedantic = false;
3055 : 14232 : M2Options_Verbose = false;
3056 : 14232 : M2Options_Quiet = true;
3057 : 14232 : CC1Quiet = true;
3058 : 14232 : M2Options_Profiling = false;
3059 : 14232 : DumpQuad = false;
3060 : 14232 : M2Options_OptimizeBasicBlock = false;
3061 : 14232 : M2Options_OptimizeUncalledProcedures = false;
3062 : 14232 : M2Options_OptimizeCommonSubExpressions = false;
3063 : 14232 : M2Options_NilChecking = false;
3064 : 14232 : M2Options_WholeDivChecking = false;
3065 : 14232 : M2Options_WholeValueChecking = false;
3066 : 14232 : M2Options_FloatValueChecking = false;
3067 : 14232 : M2Options_IndexChecking = false;
3068 : 14232 : M2Options_RangeChecking = false;
3069 : 14232 : M2Options_ReturnChecking = false;
3070 : 14232 : M2Options_CaseElseChecking = false;
3071 : 14232 : M2Options_CPreProcessor = false;
3072 : 14232 : M2Options_LineDirectives = true;
3073 : 14232 : M2Options_ExtendedOpaque = false;
3074 : 14232 : M2Options_UnboundedByReference = false;
3075 : 14232 : M2Options_VerboseUnbounded = false;
3076 : 14232 : M2Options_PedanticParamNames = false;
3077 : 14232 : M2Options_PedanticCast = false;
3078 : 14232 : M2Options_Xcode = false;
3079 : 14232 : M2Options_DumpSystemExports = false;
3080 : 14232 : M2Options_GenerateSwig = false;
3081 : 14232 : M2Options_Exceptions = true;
3082 : 14232 : M2Options_DebugBuiltins = false;
3083 : 14232 : M2Options_ForcedLocation = false;
3084 : 14232 : M2Options_WholeProgram = false;
3085 : 14232 : DebugTraceQuad = false;
3086 : 14232 : DebugTraceTree = false;
3087 : 14232 : DebugTraceLine = false;
3088 : 14232 : DebugTraceToken = false;
3089 : 14232 : DebugFunctionLineNumbers = false;
3090 : 14232 : M2Options_GenerateStatementNote = false;
3091 : 14232 : M2Options_LowerCaseKeywords = false;
3092 : 14232 : M2Options_UnusedVariableChecking = false;
3093 : 14232 : M2Options_UnusedParameterChecking = false;
3094 : 14232 : M2Options_StrictTypeChecking = true;
3095 : 14232 : M2Options_AutoInit = false;
3096 : 14232 : M2Options_SaveTemps = false;
3097 : 14232 : M2Options_ScaffoldDynamic = true;
3098 : 14232 : M2Options_ScaffoldStatic = false;
3099 : 14232 : M2Options_ScaffoldMain = false;
3100 : 14232 : UselistFilename = static_cast<DynamicStrings_String> (NULL);
3101 : 14232 : M2Options_GenModuleList = false;
3102 : 14232 : GenModuleListFilename = static_cast<DynamicStrings_String> (NULL);
3103 : 14232 : M2Options_SharedFlag = false;
3104 : 14232 : Barg = static_cast<DynamicStrings_String> (NULL);
3105 : 14232 : MDFlag = false;
3106 : 14232 : MMDFlag = false;
3107 : 14232 : DepTarget = static_cast<DynamicStrings_String> (NULL);
3108 : 14232 : MPFlag = false;
3109 : 14232 : SaveTempsDir = static_cast<DynamicStrings_String> (NULL);
3110 : 14232 : DumpDir = static_cast<DynamicStrings_String> (NULL);
3111 : 14232 : M2Options_UninitVariableChecking = false;
3112 : 14232 : M2Options_UninitVariableConditionalChecking = false;
3113 : 14232 : M2Options_CaseEnumChecking = false;
3114 : 14232 : MFlag = false;
3115 : 14232 : MMFlag = false;
3116 : 14232 : MFarg = static_cast<DynamicStrings_String> (NULL);
3117 : 14232 : MTFlag = static_cast<DynamicStrings_String> (NULL);
3118 : 14232 : MQFlag = static_cast<DynamicStrings_String> (NULL);
3119 : 14232 : InitializeLongDoubleFlags ();
3120 : 14232 : M2Prefix = DynamicStrings_InitString ((const char *) "", 0);
3121 : 14232 : M2PathName = DynamicStrings_InitString ((const char *) "", 0);
3122 : 14232 : DumpQuadFilename = static_cast<DynamicStrings_String> (NULL);
3123 : 14232 : DumpGimpleFilename = static_cast<DynamicStrings_String> (NULL);
3124 : 14232 : DumpDeclFilename = static_cast<DynamicStrings_String> (NULL);
3125 : 14232 : DumpDecl = false;
3126 : 14232 : DumpQuad = false;
3127 : 14232 : DumpGimple = false;
3128 : 14232 : M2Dump = static_cast<DynamicStrings_String> (NULL);
3129 : 14232 : M2DumpFilter = static_cast<DynamicStrings_String> (NULL);
3130 : 14232 : EnableForward = true;
3131 : 14232 : }
3132 : :
3133 : 0 : extern "C" void _M2_M2Options_fini (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[], __attribute__((unused)) char *envp[])
3134 : : {
3135 : 0 : }
|