authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-03-21 10:12:28-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-03-21 15:39:39-04:00
loga4eaeee72011a2f7866a18420812178991feaf8d
treeaf0e54122bf4c94e32f9d8f0ca000379a3d579a7
parentbeea478acc2491289ec3e3bbdcec3b68f65d6e62
signature Commit is signed but in an unrecognized format.

ability to use `zig cc` as a drop-in C compiler

The basics are working

11 files changed, 6295 insertions(+), 18 deletions(-)

src-self-hosted/clang_options.zig created+126
...@@ -0,0 +1,126 @@
1const std = @import("std");
2const mem = std.mem;
3
4pub const list = @import("clang_options_data.zig").data;
5
6pub const CliArg = struct {
7 name: []const u8,
8 syntax: Syntax,
9
10 /// TODO we're going to want to change this when we start shipping self-hosted because this causes
11 /// all the functions in stage2.zig to get exported.
12 zig_equivalent: @import("stage2.zig").ClangArgIterator.ZigEquivalent,
13
14 /// Prefixed by "-"
15 pd1: bool = false,
16
17 /// Prefixed by "--"
18 pd2: bool = false,
19
20 /// Prefixed by "/"
21 psl: bool = false,
22
23 const Syntax = union(enum) {
24 /// A flag with no values.
25 flag,
26
27 /// An option which prefixes its (single) value.
28 joined,
29
30 /// An option which is followed by its value.
31 separate,
32
33 /// An option which is either joined to its (non-empty) value, or followed by its value.
34 joined_or_separate,
35
36 /// An option which is both joined to its (first) value, and followed by its (second) value.
37 joined_and_separate,
38
39 /// An option followed by its values, which are separated by commas.
40 comma_joined,
41
42 /// An option which consumes an optional joined argument and any other remaining arguments.
43 remaining_args_joined,
44
45 /// An option which is which takes multiple (separate) arguments.
46 multi_arg: u8,
47 };
48
49 fn matchEql(self: CliArg, arg: []const u8) bool {
50 if (self.pd1 and arg.len >= self.name.len + 1 and
51 mem.startsWith(u8, arg, "-") and mem.eql(u8, arg[1..], self.name))
52 {
53 return true;
54 }
55 if (self.pd2 and arg.len >= self.name.len + 2 and
56 mem.startsWith(u8, arg, "--") and mem.eql(u8, arg[2..], self.name))
57 {
58 return true;
59 }
60 if (self.psl and arg.len >= self.name.len + 1 and
61 mem.startsWith(u8, arg, "/") and mem.eql(u8, arg[1..], self.name))
62 {
63 return true;
64 }
65 return false;
66 }
67
68 fn matchStartsWith(self: CliArg, arg: []const u8) usize {
69 if (self.pd1 and arg.len >= self.name.len + 1 and
70 mem.startsWith(u8, arg, "-") and mem.startsWith(u8, arg[1..], self.name))
71 {
72 return self.name.len + 1;
73 }
74 if (self.pd2 and arg.len >= self.name.len + 2 and
75 mem.startsWith(u8, arg, "--") and mem.startsWith(u8, arg[2..], self.name))
76 {
77 return self.name.len + 2;
78 }
79 if (self.psl and arg.len >= self.name.len + 1 and
80 mem.startsWith(u8, arg, "/") and mem.startsWith(u8, arg[1..], self.name))
81 {
82 return self.name.len + 1;
83 }
84 return 0;
85 }
86};
87
88/// Shortcut function for initializing a `CliArg`
89pub fn flagpd1(name: []const u8) CliArg {
90 return .{
91 .name = name,
92 .syntax = .flag,
93 .zig_equivalent = .other,
94 .pd1 = true,
95 };
96}
97
98/// Shortcut function for initializing a `CliArg`
99pub fn joinpd1(name: []const u8) CliArg {
100 return .{
101 .name = name,
102 .syntax = .joined,
103 .zig_equivalent = .other,
104 .pd1 = true,
105 };
106}
107
108/// Shortcut function for initializing a `CliArg`
109pub fn jspd1(name: []const u8) CliArg {
110 return .{
111 .name = name,
112 .syntax = .joined_or_separate,
113 .zig_equivalent = .other,
114 .pd1 = true,
115 };
116}
117
118/// Shortcut function for initializing a `CliArg`
119pub fn sepd1(name: []const u8) CliArg {
120 return .{
121 .name = name,
122 .syntax = .separate,
123 .zig_equivalent = .other,
124 .pd1 = true,
125 };
126}
src-self-hosted/clang_options_data.zig created+5632
...@@ -0,0 +1,5632 @@
1// This file is generated by tools/update_clang_options.zig.
2// zig fmt: off
3usingnamespace @import("clang_options.zig");
4pub const data = blk: { @setEvalBranchQuota(6000); break :blk &[_]CliArg{
5jspd1("A"),
6joinpd1("A-"),
7jspd1("B"),
8flagpd1("C"),
9flagpd1("CC"),
10jspd1("D"),
11flagpd1("E"),
12flagpd1("EB"),
13flagpd1("EL"),
14flagpd1("Eonly"),
15jspd1("F"),
16jspd1("G"),
17joinpd1("G="),
18flagpd1("H"),
19jspd1("I"),
20.{
21 .name = "<input>",
22 .syntax = .flag,
23 .zig_equivalent = .other,
24 .pd1 = false,
25 .pd2 = false,
26 .psl = false,
27},
28flagpd1("I-"),
29jspd1("J"),
30jspd1("L"),
31flagpd1("M"),
32flagpd1("MD"),
33jspd1("MF"),
34flagpd1("MG"),
35jspd1("MJ"),
36flagpd1("MM"),
37flagpd1("MMD"),
38flagpd1("MP"),
39jspd1("MQ"),
40jspd1("MT"),
41flagpd1("MV"),
42flagpd1("Mach"),
43joinpd1("O"),
44flagpd1("O0"),
45flagpd1("O4"),
46flagpd1("O"),
47flagpd1("ObjC"),
48flagpd1("ObjC++"),
49joinpd1("Ofast"),
50flagpd1("P"),
51flagpd1("Q"),
52flagpd1("Qn"),
53flagpd1("Qunused-arguments"),
54flagpd1("Qy"),
55joinpd1("R"),
56joinpd1("Rpass="),
57joinpd1("Rpass-analysis="),
58joinpd1("Rpass-missed="),
59flagpd1("S"),
60jspd1("T"),
61jspd1("Tbss"),
62jspd1("Tdata"),
63jspd1("Ttext"),
64jspd1("U"),
65.{
66 .name = "<unknown>",
67 .syntax = .flag,
68 .zig_equivalent = .other,
69 .pd1 = false,
70 .pd2 = false,
71 .psl = false,
72},
73jspd1("V"),
74flagpd1("WCL4"),
75joinpd1("W"),
76.{
77 .name = "Wa,",
78 .syntax = .comma_joined,
79 .zig_equivalent = .other,
80 .pd1 = true,
81 .pd2 = false,
82 .psl = false,
83},
84flagpd1("Wall"),
85flagpd1("Wdeprecated"),
86joinpd1("Wframe-larger-than="),
87.{
88 .name = "Wl,",
89 .syntax = .comma_joined,
90 .zig_equivalent = .other,
91 .pd1 = true,
92 .pd2 = false,
93 .psl = false,
94},
95joinpd1("Wlarge-by-value-copy="),
96flagpd1("Wlarge-by-value-copy"),
97joinpd1("Wlarger-than-"),
98joinpd1("Wlarger-than="),
99flagpd1("Wno-deprecated"),
100joinpd1("Wno-nonportable-cfstrings"),
101flagpd1("Wno-rewrite-macros"),
102flagpd1("Wno-write-strings"),
103joinpd1("Wnonportable-cfstrings"),
104.{
105 .name = "Wp,",
106 .syntax = .comma_joined,
107 .zig_equivalent = .other,
108 .pd1 = true,
109 .pd2 = false,
110 .psl = false,
111},
112flagpd1("Wwrite-strings"),
113flagpd1("X"),
114joinpd1("X"),
115sepd1("Xanalyzer"),
116.{
117 .name = "Xarch_",
118 .syntax = .joined_and_separate,
119 .zig_equivalent = .other,
120 .pd1 = true,
121 .pd2 = false,
122 .psl = false,
123},
124sepd1("Xassembler"),
125sepd1("Xclang"),
126sepd1("Xcuda-fatbinary"),
127sepd1("Xcuda-ptxas"),
128sepd1("Xlinker"),
129sepd1("Xopenmp-target"),
130.{
131 .name = "Xopenmp-target=",
132 .syntax = .joined_and_separate,
133 .zig_equivalent = .other,
134 .pd1 = true,
135 .pd2 = false,
136 .psl = false,
137},
138sepd1("Xpreprocessor"),
139flagpd1("Z"),
140joinpd1("Z"),
141flagpd1("Z-Xlinker-no-demangle"),
142flagpd1("Z-reserved-lib-cckext"),
143flagpd1("Z-reserved-lib-stdc++"),
144sepd1("Zlinker-input"),
145.{
146 .name = "CLASSPATH",
147 .syntax = .separate,
148 .zig_equivalent = .other,
149 .pd1 = false,
150 .pd2 = true,
151 .psl = false,
152},
153.{
154 .name = "CLASSPATH=",
155 .syntax = .joined,
156 .zig_equivalent = .other,
157 .pd1 = false,
158 .pd2 = true,
159 .psl = false,
160},
161flagpd1("###"),
162.{
163 .name = "AI",
164 .syntax = .joined_or_separate,
165 .zig_equivalent = .other,
166 .pd1 = true,
167 .pd2 = false,
168 .psl = true,
169},
170.{
171 .name = "Brepro",
172 .syntax = .flag,
173 .zig_equivalent = .other,
174 .pd1 = true,
175 .pd2 = false,
176 .psl = true,
177},
178.{
179 .name = "Brepro-",
180 .syntax = .flag,
181 .zig_equivalent = .other,
182 .pd1 = true,
183 .pd2 = false,
184 .psl = true,
185},
186.{
187 .name = "Bt",
188 .syntax = .flag,
189 .zig_equivalent = .other,
190 .pd1 = true,
191 .pd2 = false,
192 .psl = true,
193},
194.{
195 .name = "Bt+",
196 .syntax = .flag,
197 .zig_equivalent = .other,
198 .pd1 = true,
199 .pd2 = false,
200 .psl = true,
201},
202.{
203 .name = "C",
204 .syntax = .flag,
205 .zig_equivalent = .other,
206 .pd1 = true,
207 .pd2 = false,
208 .psl = true,
209},
210.{
211 .name = "D",
212 .syntax = .joined_or_separate,
213 .zig_equivalent = .other,
214 .pd1 = true,
215 .pd2 = false,
216 .psl = true,
217},
218.{
219 .name = "E",
220 .syntax = .flag,
221 .zig_equivalent = .other,
222 .pd1 = true,
223 .pd2 = false,
224 .psl = true,
225},
226.{
227 .name = "EH",
228 .syntax = .joined,
229 .zig_equivalent = .other,
230 .pd1 = true,
231 .pd2 = false,
232 .psl = true,
233},
234.{
235 .name = "EP",
236 .syntax = .flag,
237 .zig_equivalent = .other,
238 .pd1 = true,
239 .pd2 = false,
240 .psl = true,
241},
242.{
243 .name = "F",
244 .syntax = .joined_or_separate,
245 .zig_equivalent = .other,
246 .pd1 = true,
247 .pd2 = false,
248 .psl = true,
249},
250.{
251 .name = "FA",
252 .syntax = .flag,
253 .zig_equivalent = .other,
254 .pd1 = true,
255 .pd2 = false,
256 .psl = true,
257},
258.{
259 .name = "FA",
260 .syntax = .joined,
261 .zig_equivalent = .other,
262 .pd1 = true,
263 .pd2 = false,
264 .psl = true,
265},
266.{
267 .name = "FC",
268 .syntax = .flag,
269 .zig_equivalent = .other,
270 .pd1 = true,
271 .pd2 = false,
272 .psl = true,
273},
274.{
275 .name = "FI",
276 .syntax = .joined_or_separate,
277 .zig_equivalent = .other,
278 .pd1 = true,
279 .pd2 = false,
280 .psl = true,
281},
282.{
283 .name = "FR",
284 .syntax = .joined,
285 .zig_equivalent = .other,
286 .pd1 = true,
287 .pd2 = false,
288 .psl = true,
289},
290.{
291 .name = "FS",
292 .syntax = .flag,
293 .zig_equivalent = .other,
294 .pd1 = true,
295 .pd2 = false,
296 .psl = true,
297},
298.{
299 .name = "FU",
300 .syntax = .joined_or_separate,
301 .zig_equivalent = .other,
302 .pd1 = true,
303 .pd2 = false,
304 .psl = true,
305},
306.{
307 .name = "Fa",
308 .syntax = .joined,
309 .zig_equivalent = .other,
310 .pd1 = true,
311 .pd2 = false,
312 .psl = true,
313},
314.{
315 .name = "Fd",
316 .syntax = .joined,
317 .zig_equivalent = .other,
318 .pd1 = true,
319 .pd2 = false,
320 .psl = true,
321},
322.{
323 .name = "Fe",
324 .syntax = .joined,
325 .zig_equivalent = .other,
326 .pd1 = true,
327 .pd2 = false,
328 .psl = true,
329},
330.{
331 .name = "Fi",
332 .syntax = .joined,
333 .zig_equivalent = .other,
334 .pd1 = true,
335 .pd2 = false,
336 .psl = true,
337},
338.{
339 .name = "Fm",
340 .syntax = .joined,
341 .zig_equivalent = .other,
342 .pd1 = true,
343 .pd2 = false,
344 .psl = true,
345},
346.{
347 .name = "Fo",
348 .syntax = .joined,
349 .zig_equivalent = .other,
350 .pd1 = true,
351 .pd2 = false,
352 .psl = true,
353},
354.{
355 .name = "Fp",
356 .syntax = .joined,
357 .zig_equivalent = .other,
358 .pd1 = true,
359 .pd2 = false,
360 .psl = true,
361},
362.{
363 .name = "Fr",
364 .syntax = .joined,
365 .zig_equivalent = .other,
366 .pd1 = true,
367 .pd2 = false,
368 .psl = true,
369},
370.{
371 .name = "Fx",
372 .syntax = .flag,
373 .zig_equivalent = .other,
374 .pd1 = true,
375 .pd2 = false,
376 .psl = true,
377},
378.{
379 .name = "G1",
380 .syntax = .flag,
381 .zig_equivalent = .other,
382 .pd1 = true,
383 .pd2 = false,
384 .psl = true,
385},
386.{
387 .name = "G2",
388 .syntax = .flag,
389 .zig_equivalent = .other,
390 .pd1 = true,
391 .pd2 = false,
392 .psl = true,
393},
394.{
395 .name = "GA",
396 .syntax = .flag,
397 .zig_equivalent = .other,
398 .pd1 = true,
399 .pd2 = false,
400 .psl = true,
401},
402.{
403 .name = "GF",
404 .syntax = .flag,
405 .zig_equivalent = .other,
406 .pd1 = true,
407 .pd2 = false,
408 .psl = true,
409},
410.{
411 .name = "GF-",
412 .syntax = .flag,
413 .zig_equivalent = .other,
414 .pd1 = true,
415 .pd2 = false,
416 .psl = true,
417},
418.{
419 .name = "GH",
420 .syntax = .flag,
421 .zig_equivalent = .other,
422 .pd1 = true,
423 .pd2 = false,
424 .psl = true,
425},
426.{
427 .name = "GL",
428 .syntax = .flag,
429 .zig_equivalent = .other,
430 .pd1 = true,
431 .pd2 = false,
432 .psl = true,
433},
434.{
435 .name = "GL-",
436 .syntax = .flag,
437 .zig_equivalent = .other,
438 .pd1 = true,
439 .pd2 = false,
440 .psl = true,
441},
442.{
443 .name = "GR",
444 .syntax = .flag,
445 .zig_equivalent = .other,
446 .pd1 = true,
447 .pd2 = false,
448 .psl = true,
449},
450.{
451 .name = "GR-",
452 .syntax = .flag,
453 .zig_equivalent = .other,
454 .pd1 = true,
455 .pd2 = false,
456 .psl = true,
457},
458.{
459 .name = "GS",
460 .syntax = .flag,
461 .zig_equivalent = .other,
462 .pd1 = true,
463 .pd2 = false,
464 .psl = true,
465},
466.{
467 .name = "GS-",
468 .syntax = .flag,
469 .zig_equivalent = .other,
470 .pd1 = true,
471 .pd2 = false,
472 .psl = true,
473},
474.{
475 .name = "GT",
476 .syntax = .flag,
477 .zig_equivalent = .other,
478 .pd1 = true,
479 .pd2 = false,
480 .psl = true,
481},
482.{
483 .name = "GX",
484 .syntax = .flag,
485 .zig_equivalent = .other,
486 .pd1 = true,
487 .pd2 = false,
488 .psl = true,
489},
490.{
491 .name = "GX-",
492 .syntax = .flag,
493 .zig_equivalent = .other,
494 .pd1 = true,
495 .pd2 = false,
496 .psl = true,
497},
498.{
499 .name = "GZ",
500 .syntax = .flag,
501 .zig_equivalent = .other,
502 .pd1 = true,
503 .pd2 = false,
504 .psl = true,
505},
506.{
507 .name = "Gd",
508 .syntax = .flag,
509 .zig_equivalent = .other,
510 .pd1 = true,
511 .pd2 = false,
512 .psl = true,
513},
514.{
515 .name = "Ge",
516 .syntax = .flag,
517 .zig_equivalent = .other,
518 .pd1 = true,
519 .pd2 = false,
520 .psl = true,
521},
522.{
523 .name = "Gh",
524 .syntax = .flag,
525 .zig_equivalent = .other,
526 .pd1 = true,
527 .pd2 = false,
528 .psl = true,
529},
530.{
531 .name = "Gm",
532 .syntax = .flag,
533 .zig_equivalent = .other,
534 .pd1 = true,
535 .pd2 = false,
536 .psl = true,
537},
538.{
539 .name = "Gm-",
540 .syntax = .flag,
541 .zig_equivalent = .other,
542 .pd1 = true,
543 .pd2 = false,
544 .psl = true,
545},
546.{
547 .name = "Gr",
548 .syntax = .flag,
549 .zig_equivalent = .other,
550 .pd1 = true,
551 .pd2 = false,
552 .psl = true,
553},
554.{
555 .name = "Gregcall",
556 .syntax = .flag,
557 .zig_equivalent = .other,
558 .pd1 = true,
559 .pd2 = false,
560 .psl = true,
561},
562.{
563 .name = "Gs",
564 .syntax = .joined,
565 .zig_equivalent = .other,
566 .pd1 = true,
567 .pd2 = false,
568 .psl = true,
569},
570.{
571 .name = "Gv",
572 .syntax = .flag,
573 .zig_equivalent = .other,
574 .pd1 = true,
575 .pd2 = false,
576 .psl = true,
577},
578.{
579 .name = "Gw",
580 .syntax = .flag,
581 .zig_equivalent = .other,
582 .pd1 = true,
583 .pd2 = false,
584 .psl = true,
585},
586.{
587 .name = "Gw-",
588 .syntax = .flag,
589 .zig_equivalent = .other,
590 .pd1 = true,
591 .pd2 = false,
592 .psl = true,
593},
594.{
595 .name = "Gy",
596 .syntax = .flag,
597 .zig_equivalent = .other,
598 .pd1 = true,
599 .pd2 = false,
600 .psl = true,
601},
602.{
603 .name = "Gy-",
604 .syntax = .flag,
605 .zig_equivalent = .other,
606 .pd1 = true,
607 .pd2 = false,
608 .psl = true,
609},
610.{
611 .name = "Gz",
612 .syntax = .flag,
613 .zig_equivalent = .other,
614 .pd1 = true,
615 .pd2 = false,
616 .psl = true,
617},
618.{
619 .name = "H",
620 .syntax = .flag,
621 .zig_equivalent = .other,
622 .pd1 = true,
623 .pd2 = false,
624 .psl = true,
625},
626.{
627 .name = "HELP",
628 .syntax = .flag,
629 .zig_equivalent = .other,
630 .pd1 = true,
631 .pd2 = false,
632 .psl = true,
633},
634.{
635 .name = "I",
636 .syntax = .joined_or_separate,
637 .zig_equivalent = .other,
638 .pd1 = true,
639 .pd2 = false,
640 .psl = true,
641},
642.{
643 .name = "J",
644 .syntax = .flag,
645 .zig_equivalent = .other,
646 .pd1 = true,
647 .pd2 = false,
648 .psl = true,
649},
650.{
651 .name = "JMC",
652 .syntax = .flag,
653 .zig_equivalent = .other,
654 .pd1 = true,
655 .pd2 = false,
656 .psl = true,
657},
658.{
659 .name = "LD",
660 .syntax = .flag,
661 .zig_equivalent = .other,
662 .pd1 = true,
663 .pd2 = false,
664 .psl = true,
665},
666.{
667 .name = "LDd",
668 .syntax = .flag,
669 .zig_equivalent = .other,
670 .pd1 = true,
671 .pd2 = false,
672 .psl = true,
673},
674.{
675 .name = "LN",
676 .syntax = .flag,
677 .zig_equivalent = .other,
678 .pd1 = true,
679 .pd2 = false,
680 .psl = true,
681},
682.{
683 .name = "MD",
684 .syntax = .flag,
685 .zig_equivalent = .other,
686 .pd1 = true,
687 .pd2 = false,
688 .psl = true,
689},
690.{
691 .name = "MDd",
692 .syntax = .flag,
693 .zig_equivalent = .other,
694 .pd1 = true,
695 .pd2 = false,
696 .psl = true,
697},
698.{
699 .name = "MP",
700 .syntax = .joined,
701 .zig_equivalent = .other,
702 .pd1 = true,
703 .pd2 = false,
704 .psl = true,
705},
706.{
707 .name = "MT",
708 .syntax = .flag,
709 .zig_equivalent = .other,
710 .pd1 = true,
711 .pd2 = false,
712 .psl = true,
713},
714.{
715 .name = "MTd",
716 .syntax = .flag,
717 .zig_equivalent = .other,
718 .pd1 = true,
719 .pd2 = false,
720 .psl = true,
721},
722.{
723 .name = "O",
724 .syntax = .joined,
725 .zig_equivalent = .other,
726 .pd1 = true,
727 .pd2 = false,
728 .psl = true,
729},
730.{
731 .name = "P",
732 .syntax = .flag,
733 .zig_equivalent = .other,
734 .pd1 = true,
735 .pd2 = false,
736 .psl = true,
737},
738.{
739 .name = "QIfist",
740 .syntax = .flag,
741 .zig_equivalent = .other,
742 .pd1 = true,
743 .pd2 = false,
744 .psl = true,
745},
746.{
747 .name = "?",
748 .syntax = .flag,
749 .zig_equivalent = .other,
750 .pd1 = true,
751 .pd2 = false,
752 .psl = true,
753},
754.{
755 .name = "Qfast_transcendentals",
756 .syntax = .flag,
757 .zig_equivalent = .other,
758 .pd1 = true,
759 .pd2 = false,
760 .psl = true,
761},
762.{
763 .name = "Qimprecise_fwaits",
764 .syntax = .flag,
765 .zig_equivalent = .other,
766 .pd1 = true,
767 .pd2 = false,
768 .psl = true,
769},
770.{
771 .name = "Qpar",
772 .syntax = .flag,
773 .zig_equivalent = .other,
774 .pd1 = true,
775 .pd2 = false,
776 .psl = true,
777},
778.{
779 .name = "Qpar-report",
780 .syntax = .joined,
781 .zig_equivalent = .other,
782 .pd1 = true,
783 .pd2 = false,
784 .psl = true,
785},
786.{
787 .name = "Qsafe_fp_loads",
788 .syntax = .flag,
789 .zig_equivalent = .other,
790 .pd1 = true,
791 .pd2 = false,
792 .psl = true,
793},
794.{
795 .name = "Qspectre",
796 .syntax = .flag,
797 .zig_equivalent = .other,
798 .pd1 = true,
799 .pd2 = false,
800 .psl = true,
801},
802.{
803 .name = "Qvec",
804 .syntax = .flag,
805 .zig_equivalent = .other,
806 .pd1 = true,
807 .pd2 = false,
808 .psl = true,
809},
810.{
811 .name = "Qvec-",
812 .syntax = .flag,
813 .zig_equivalent = .other,
814 .pd1 = true,
815 .pd2 = false,
816 .psl = true,
817},
818.{
819 .name = "Qvec-report",
820 .syntax = .joined,
821 .zig_equivalent = .other,
822 .pd1 = true,
823 .pd2 = false,
824 .psl = true,
825},
826.{
827 .name = "RTC",
828 .syntax = .joined,
829 .zig_equivalent = .other,
830 .pd1 = true,
831 .pd2 = false,
832 .psl = true,
833},
834.{
835 .name = "TC",
836 .syntax = .flag,
837 .zig_equivalent = .other,
838 .pd1 = true,
839 .pd2 = false,
840 .psl = true,
841},
842.{
843 .name = "TP",
844 .syntax = .flag,
845 .zig_equivalent = .other,
846 .pd1 = true,
847 .pd2 = false,
848 .psl = true,
849},
850.{
851 .name = "Tc",
852 .syntax = .joined_or_separate,
853 .zig_equivalent = .other,
854 .pd1 = true,
855 .pd2 = false,
856 .psl = true,
857},
858.{
859 .name = "Tp",
860 .syntax = .joined_or_separate,
861 .zig_equivalent = .other,
862 .pd1 = true,
863 .pd2 = false,
864 .psl = true,
865},
866.{
867 .name = "U",
868 .syntax = .joined_or_separate,
869 .zig_equivalent = .other,
870 .pd1 = true,
871 .pd2 = false,
872 .psl = true,
873},
874.{
875 .name = "V",
876 .syntax = .flag,
877 .zig_equivalent = .other,
878 .pd1 = true,
879 .pd2 = false,
880 .psl = true,
881},
882.{
883 .name = "W0",
884 .syntax = .flag,
885 .zig_equivalent = .other,
886 .pd1 = true,
887 .pd2 = false,
888 .psl = true,
889},
890.{
891 .name = "W1",
892 .syntax = .flag,
893 .zig_equivalent = .other,
894 .pd1 = true,
895 .pd2 = false,
896 .psl = true,
897},
898.{
899 .name = "W2",
900 .syntax = .flag,
901 .zig_equivalent = .other,
902 .pd1 = true,
903 .pd2 = false,
904 .psl = true,
905},
906.{
907 .name = "W3",
908 .syntax = .flag,
909 .zig_equivalent = .other,
910 .pd1 = true,
911 .pd2 = false,
912 .psl = true,
913},
914.{
915 .name = "W4",
916 .syntax = .flag,
917 .zig_equivalent = .other,
918 .pd1 = true,
919 .pd2 = false,
920 .psl = true,
921},
922.{
923 .name = "WL",
924 .syntax = .flag,
925 .zig_equivalent = .other,
926 .pd1 = true,
927 .pd2 = false,
928 .psl = true,
929},
930.{
931 .name = "WX",
932 .syntax = .flag,
933 .zig_equivalent = .other,
934 .pd1 = true,
935 .pd2 = false,
936 .psl = true,
937},
938.{
939 .name = "WX-",
940 .syntax = .flag,
941 .zig_equivalent = .other,
942 .pd1 = true,
943 .pd2 = false,
944 .psl = true,
945},
946.{
947 .name = "Wall",
948 .syntax = .flag,
949 .zig_equivalent = .other,
950 .pd1 = true,
951 .pd2 = false,
952 .psl = true,
953},
954.{
955 .name = "Wp64",
956 .syntax = .flag,
957 .zig_equivalent = .other,
958 .pd1 = true,
959 .pd2 = false,
960 .psl = true,
961},
962.{
963 .name = "X",
964 .syntax = .flag,
965 .zig_equivalent = .other,
966 .pd1 = true,
967 .pd2 = false,
968 .psl = true,
969},
970.{
971 .name = "Y-",
972 .syntax = .flag,
973 .zig_equivalent = .other,
974 .pd1 = true,
975 .pd2 = false,
976 .psl = true,
977},
978.{
979 .name = "Yc",
980 .syntax = .joined,
981 .zig_equivalent = .other,
982 .pd1 = true,
983 .pd2 = false,
984 .psl = true,
985},
986.{
987 .name = "Yd",
988 .syntax = .flag,
989 .zig_equivalent = .other,
990 .pd1 = true,
991 .pd2 = false,
992 .psl = true,
993},
994.{
995 .name = "Yl",
996 .syntax = .joined,
997 .zig_equivalent = .other,
998 .pd1 = true,
999 .pd2 = false,
1000 .psl = true,
1001},
1002.{
1003 .name = "Yu",
1004 .syntax = .joined,
1005 .zig_equivalent = .other,
1006 .pd1 = true,
1007 .pd2 = false,
1008 .psl = true,
1009},
1010.{
1011 .name = "Z7",
1012 .syntax = .flag,
1013 .zig_equivalent = .other,
1014 .pd1 = true,
1015 .pd2 = false,
1016 .psl = true,
1017},
1018.{
1019 .name = "ZH:MD5",
1020 .syntax = .flag,
1021 .zig_equivalent = .other,
1022 .pd1 = true,
1023 .pd2 = false,
1024 .psl = true,
1025},
1026.{
1027 .name = "ZH:SHA1",
1028 .syntax = .flag,
1029 .zig_equivalent = .other,
1030 .pd1 = true,
1031 .pd2 = false,
1032 .psl = true,
1033},
1034.{
1035 .name = "ZH:SHA_256",
1036 .syntax = .flag,
1037 .zig_equivalent = .other,
1038 .pd1 = true,
1039 .pd2 = false,
1040 .psl = true,
1041},
1042.{
1043 .name = "ZI",
1044 .syntax = .flag,
1045 .zig_equivalent = .other,
1046 .pd1 = true,
1047 .pd2 = false,
1048 .psl = true,
1049},
1050.{
1051 .name = "ZW",
1052 .syntax = .joined,
1053 .zig_equivalent = .other,
1054 .pd1 = true,
1055 .pd2 = false,
1056 .psl = true,
1057},
1058.{
1059 .name = "Za",
1060 .syntax = .flag,
1061 .zig_equivalent = .other,
1062 .pd1 = true,
1063 .pd2 = false,
1064 .psl = true,
1065},
1066.{
1067 .name = "Zc:",
1068 .syntax = .joined,
1069 .zig_equivalent = .other,
1070 .pd1 = true,
1071 .pd2 = false,
1072 .psl = true,
1073},
1074.{
1075 .name = "Zc:__cplusplus",
1076 .syntax = .flag,
1077 .zig_equivalent = .other,
1078 .pd1 = true,
1079 .pd2 = false,
1080 .psl = true,
1081},
1082.{
1083 .name = "Zc:alignedNew",
1084 .syntax = .flag,
1085 .zig_equivalent = .other,
1086 .pd1 = true,
1087 .pd2 = false,
1088 .psl = true,
1089},
1090.{
1091 .name = "Zc:alignedNew-",
1092 .syntax = .flag,
1093 .zig_equivalent = .other,
1094 .pd1 = true,
1095 .pd2 = false,
1096 .psl = true,
1097},
1098.{
1099 .name = "Zc:auto",
1100 .syntax = .flag,
1101 .zig_equivalent = .other,
1102 .pd1 = true,
1103 .pd2 = false,
1104 .psl = true,
1105},
1106.{
1107 .name = "Zc:char8_t",
1108 .syntax = .flag,
1109 .zig_equivalent = .other,
1110 .pd1 = true,
1111 .pd2 = false,
1112 .psl = true,
1113},
1114.{
1115 .name = "Zc:char8_t-",
1116 .syntax = .flag,
1117 .zig_equivalent = .other,
1118 .pd1 = true,
1119 .pd2 = false,
1120 .psl = true,
1121},
1122.{
1123 .name = "Zc:dllexportInlines",
1124 .syntax = .flag,
1125 .zig_equivalent = .other,
1126 .pd1 = true,
1127 .pd2 = false,
1128 .psl = true,
1129},
1130.{
1131 .name = "Zc:dllexportInlines-",
1132 .syntax = .flag,
1133 .zig_equivalent = .other,
1134 .pd1 = true,
1135 .pd2 = false,
1136 .psl = true,
1137},
1138.{
1139 .name = "Zc:forScope",
1140 .syntax = .flag,
1141 .zig_equivalent = .other,
1142 .pd1 = true,
1143 .pd2 = false,
1144 .psl = true,
1145},
1146.{
1147 .name = "Zc:inline",
1148 .syntax = .flag,
1149 .zig_equivalent = .other,
1150 .pd1 = true,
1151 .pd2 = false,
1152 .psl = true,
1153},
1154.{
1155 .name = "Zc:rvalueCast",
1156 .syntax = .flag,
1157 .zig_equivalent = .other,
1158 .pd1 = true,
1159 .pd2 = false,
1160 .psl = true,
1161},
1162.{
1163 .name = "Zc:sizedDealloc",
1164 .syntax = .flag,
1165 .zig_equivalent = .other,
1166 .pd1 = true,
1167 .pd2 = false,
1168 .psl = true,
1169},
1170.{
1171 .name = "Zc:sizedDealloc-",
1172 .syntax = .flag,
1173 .zig_equivalent = .other,
1174 .pd1 = true,
1175 .pd2 = false,
1176 .psl = true,
1177},
1178.{
1179 .name = "Zc:strictStrings",
1180 .syntax = .flag,
1181 .zig_equivalent = .other,
1182 .pd1 = true,
1183 .pd2 = false,
1184 .psl = true,
1185},
1186.{
1187 .name = "Zc:ternary",
1188 .syntax = .flag,
1189 .zig_equivalent = .other,
1190 .pd1 = true,
1191 .pd2 = false,
1192 .psl = true,
1193},
1194.{
1195 .name = "Zc:threadSafeInit",
1196 .syntax = .flag,
1197 .zig_equivalent = .other,
1198 .pd1 = true,
1199 .pd2 = false,
1200 .psl = true,
1201},
1202.{
1203 .name = "Zc:threadSafeInit-",
1204 .syntax = .flag,
1205 .zig_equivalent = .other,
1206 .pd1 = true,
1207 .pd2 = false,
1208 .psl = true,
1209},
1210.{
1211 .name = "Zc:trigraphs",
1212 .syntax = .flag,
1213 .zig_equivalent = .other,
1214 .pd1 = true,
1215 .pd2 = false,
1216 .psl = true,
1217},
1218.{
1219 .name = "Zc:trigraphs-",
1220 .syntax = .flag,
1221 .zig_equivalent = .other,
1222 .pd1 = true,
1223 .pd2 = false,
1224 .psl = true,
1225},
1226.{
1227 .name = "Zc:twoPhase",
1228 .syntax = .flag,
1229 .zig_equivalent = .other,
1230 .pd1 = true,
1231 .pd2 = false,
1232 .psl = true,
1233},
1234.{
1235 .name = "Zc:twoPhase-",
1236 .syntax = .flag,
1237 .zig_equivalent = .other,
1238 .pd1 = true,
1239 .pd2 = false,
1240 .psl = true,
1241},
1242.{
1243 .name = "Zc:wchar_t",
1244 .syntax = .flag,
1245 .zig_equivalent = .other,
1246 .pd1 = true,
1247 .pd2 = false,
1248 .psl = true,
1249},
1250.{
1251 .name = "Zd",
1252 .syntax = .flag,
1253 .zig_equivalent = .other,
1254 .pd1 = true,
1255 .pd2 = false,
1256 .psl = true,
1257},
1258.{
1259 .name = "Ze",
1260 .syntax = .flag,
1261 .zig_equivalent = .other,
1262 .pd1 = true,
1263 .pd2 = false,
1264 .psl = true,
1265},
1266.{
1267 .name = "Zg",
1268 .syntax = .flag,
1269 .zig_equivalent = .other,
1270 .pd1 = true,
1271 .pd2 = false,
1272 .psl = true,
1273},
1274.{
1275 .name = "Zi",
1276 .syntax = .flag,
1277 .zig_equivalent = .other,
1278 .pd1 = true,
1279 .pd2 = false,
1280 .psl = true,
1281},
1282.{
1283 .name = "Zl",
1284 .syntax = .flag,
1285 .zig_equivalent = .other,
1286 .pd1 = true,
1287 .pd2 = false,
1288 .psl = true,
1289},
1290.{
1291 .name = "Zm",
1292 .syntax = .joined,
1293 .zig_equivalent = .other,
1294 .pd1 = true,
1295 .pd2 = false,
1296 .psl = true,
1297},
1298.{
1299 .name = "Zo",
1300 .syntax = .flag,
1301 .zig_equivalent = .other,
1302 .pd1 = true,
1303 .pd2 = false,
1304 .psl = true,
1305},
1306.{
1307 .name = "Zo-",
1308 .syntax = .flag,
1309 .zig_equivalent = .other,
1310 .pd1 = true,
1311 .pd2 = false,
1312 .psl = true,
1313},
1314.{
1315 .name = "Zp",
1316 .syntax = .joined,
1317 .zig_equivalent = .other,
1318 .pd1 = true,
1319 .pd2 = false,
1320 .psl = true,
1321},
1322.{
1323 .name = "Zp",
1324 .syntax = .flag,
1325 .zig_equivalent = .other,
1326 .pd1 = true,
1327 .pd2 = false,
1328 .psl = true,
1329},
1330.{
1331 .name = "Zs",
1332 .syntax = .flag,
1333 .zig_equivalent = .other,
1334 .pd1 = true,
1335 .pd2 = false,
1336 .psl = true,
1337},
1338.{
1339 .name = "analyze-",
1340 .syntax = .flag,
1341 .zig_equivalent = .other,
1342 .pd1 = true,
1343 .pd2 = false,
1344 .psl = true,
1345},
1346.{
1347 .name = "arch:",
1348 .syntax = .joined,
1349 .zig_equivalent = .other,
1350 .pd1 = true,
1351 .pd2 = false,
1352 .psl = true,
1353},
1354.{
1355 .name = "await",
1356 .syntax = .flag,
1357 .zig_equivalent = .other,
1358 .pd1 = true,
1359 .pd2 = false,
1360 .psl = true,
1361},
1362.{
1363 .name = "bigobj",
1364 .syntax = .flag,
1365 .zig_equivalent = .other,
1366 .pd1 = true,
1367 .pd2 = false,
1368 .psl = true,
1369},
1370.{
1371 .name = "c",
1372 .syntax = .flag,
1373 .zig_equivalent = .c,
1374 .pd1 = true,
1375 .pd2 = false,
1376 .psl = true,
1377},
1378.{
1379 .name = "cgthreads",
1380 .syntax = .joined,
1381 .zig_equivalent = .other,
1382 .pd1 = true,
1383 .pd2 = false,
1384 .psl = true,
1385},
1386.{
1387 .name = "clang:",
1388 .syntax = .joined,
1389 .zig_equivalent = .other,
1390 .pd1 = true,
1391 .pd2 = false,
1392 .psl = true,
1393},
1394.{
1395 .name = "clr",
1396 .syntax = .joined,
1397 .zig_equivalent = .other,
1398 .pd1 = true,
1399 .pd2 = false,
1400 .psl = true,
1401},
1402.{
1403 .name = "constexpr:",
1404 .syntax = .joined,
1405 .zig_equivalent = .other,
1406 .pd1 = true,
1407 .pd2 = false,
1408 .psl = true,
1409},
1410.{
1411 .name = "d1PP",
1412 .syntax = .flag,
1413 .zig_equivalent = .other,
1414 .pd1 = true,
1415 .pd2 = false,
1416 .psl = true,
1417},
1418.{
1419 .name = "d1reportAllClassLayout",
1420 .syntax = .flag,
1421 .zig_equivalent = .other,
1422 .pd1 = true,
1423 .pd2 = false,
1424 .psl = true,
1425},
1426.{
1427 .name = "d2",
1428 .syntax = .joined,
1429 .zig_equivalent = .other,
1430 .pd1 = true,
1431 .pd2 = false,
1432 .psl = true,
1433},
1434.{
1435 .name = "d2FastFail",
1436 .syntax = .flag,
1437 .zig_equivalent = .other,
1438 .pd1 = true,
1439 .pd2 = false,
1440 .psl = true,
1441},
1442.{
1443 .name = "d2Zi+",
1444 .syntax = .flag,
1445 .zig_equivalent = .other,
1446 .pd1 = true,
1447 .pd2 = false,
1448 .psl = true,
1449},
1450.{
1451 .name = "diagnostics:caret",
1452 .syntax = .flag,
1453 .zig_equivalent = .other,
1454 .pd1 = true,
1455 .pd2 = false,
1456 .psl = true,
1457},
1458.{
1459 .name = "diagnostics:classic",
1460 .syntax = .flag,
1461 .zig_equivalent = .other,
1462 .pd1 = true,
1463 .pd2 = false,
1464 .psl = true,
1465},
1466.{
1467 .name = "diagnostics:column",
1468 .syntax = .flag,
1469 .zig_equivalent = .other,
1470 .pd1 = true,
1471 .pd2 = false,
1472 .psl = true,
1473},
1474.{
1475 .name = "doc",
1476 .syntax = .joined,
1477 .zig_equivalent = .other,
1478 .pd1 = true,
1479 .pd2 = false,
1480 .psl = true,
1481},
1482.{
1483 .name = "errorReport",
1484 .syntax = .joined,
1485 .zig_equivalent = .other,
1486 .pd1 = true,
1487 .pd2 = false,
1488 .psl = true,
1489},
1490.{
1491 .name = "execution-charset:",
1492 .syntax = .joined,
1493 .zig_equivalent = .other,
1494 .pd1 = true,
1495 .pd2 = false,
1496 .psl = true,
1497},
1498.{
1499 .name = "fallback",
1500 .syntax = .flag,
1501 .zig_equivalent = .other,
1502 .pd1 = true,
1503 .pd2 = false,
1504 .psl = true,
1505},
1506.{
1507 .name = "favor",
1508 .syntax = .joined,
1509 .zig_equivalent = .other,
1510 .pd1 = true,
1511 .pd2 = false,
1512 .psl = true,
1513},
1514.{
1515 .name = "fp:except",
1516 .syntax = .flag,
1517 .zig_equivalent = .other,
1518 .pd1 = true,
1519 .pd2 = false,
1520 .psl = true,
1521},
1522.{
1523 .name = "fp:except-",
1524 .syntax = .flag,
1525 .zig_equivalent = .other,
1526 .pd1 = true,
1527 .pd2 = false,
1528 .psl = true,
1529},
1530.{
1531 .name = "fp:fast",
1532 .syntax = .flag,
1533 .zig_equivalent = .other,
1534 .pd1 = true,
1535 .pd2 = false,
1536 .psl = true,
1537},
1538.{
1539 .name = "fp:precise",
1540 .syntax = .flag,
1541 .zig_equivalent = .other,
1542 .pd1 = true,
1543 .pd2 = false,
1544 .psl = true,
1545},
1546.{
1547 .name = "fp:strict",
1548 .syntax = .flag,
1549 .zig_equivalent = .other,
1550 .pd1 = true,
1551 .pd2 = false,
1552 .psl = true,
1553},
1554.{
1555 .name = "guard:",
1556 .syntax = .joined,
1557 .zig_equivalent = .other,
1558 .pd1 = true,
1559 .pd2 = false,
1560 .psl = true,
1561},
1562.{
1563 .name = "help",
1564 .syntax = .flag,
1565 .zig_equivalent = .other,
1566 .pd1 = true,
1567 .pd2 = false,
1568 .psl = true,
1569},
1570.{
1571 .name = "homeparams",
1572 .syntax = .flag,
1573 .zig_equivalent = .other,
1574 .pd1 = true,
1575 .pd2 = false,
1576 .psl = true,
1577},
1578.{
1579 .name = "hotpatch",
1580 .syntax = .flag,
1581 .zig_equivalent = .other,
1582 .pd1 = true,
1583 .pd2 = false,
1584 .psl = true,
1585},
1586.{
1587 .name = "imsvc",
1588 .syntax = .joined_or_separate,
1589 .zig_equivalent = .other,
1590 .pd1 = true,
1591 .pd2 = false,
1592 .psl = true,
1593},
1594.{
1595 .name = "kernel",
1596 .syntax = .flag,
1597 .zig_equivalent = .other,
1598 .pd1 = true,
1599 .pd2 = false,
1600 .psl = true,
1601},
1602.{
1603 .name = "kernel-",
1604 .syntax = .flag,
1605 .zig_equivalent = .other,
1606 .pd1 = true,
1607 .pd2 = false,
1608 .psl = true,
1609},
1610.{
1611 .name = "link",
1612 .syntax = .remaining_args_joined,
1613 .zig_equivalent = .other,
1614 .pd1 = true,
1615 .pd2 = false,
1616 .psl = true,
1617},
1618.{
1619 .name = "nologo",
1620 .syntax = .flag,
1621 .zig_equivalent = .other,
1622 .pd1 = true,
1623 .pd2 = false,
1624 .psl = true,
1625},
1626.{
1627 .name = "o",
1628 .syntax = .joined_or_separate,
1629 .zig_equivalent = .o,
1630 .pd1 = true,
1631 .pd2 = false,
1632 .psl = true,
1633},
1634.{
1635 .name = "openmp",
1636 .syntax = .flag,
1637 .zig_equivalent = .other,
1638 .pd1 = true,
1639 .pd2 = false,
1640 .psl = true,
1641},
1642.{
1643 .name = "openmp-",
1644 .syntax = .flag,
1645 .zig_equivalent = .other,
1646 .pd1 = true,
1647 .pd2 = false,
1648 .psl = true,
1649},
1650.{
1651 .name = "openmp:experimental",
1652 .syntax = .flag,
1653 .zig_equivalent = .other,
1654 .pd1 = true,
1655 .pd2 = false,
1656 .psl = true,
1657},
1658.{
1659 .name = "permissive-",
1660 .syntax = .flag,
1661 .zig_equivalent = .other,
1662 .pd1 = true,
1663 .pd2 = false,
1664 .psl = true,
1665},
1666.{
1667 .name = "sdl",
1668 .syntax = .flag,
1669 .zig_equivalent = .other,
1670 .pd1 = true,
1671 .pd2 = false,
1672 .psl = true,
1673},
1674.{
1675 .name = "sdl-",
1676 .syntax = .flag,
1677 .zig_equivalent = .other,
1678 .pd1 = true,
1679 .pd2 = false,
1680 .psl = true,
1681},
1682.{
1683 .name = "showFilenames",
1684 .syntax = .flag,
1685 .zig_equivalent = .other,
1686 .pd1 = true,
1687 .pd2 = false,
1688 .psl = true,
1689},
1690.{
1691 .name = "showFilenames-",
1692 .syntax = .flag,
1693 .zig_equivalent = .other,
1694 .pd1 = true,
1695 .pd2 = false,
1696 .psl = true,
1697},
1698.{
1699 .name = "showIncludes",
1700 .syntax = .flag,
1701 .zig_equivalent = .other,
1702 .pd1 = true,
1703 .pd2 = false,
1704 .psl = true,
1705},
1706.{
1707 .name = "source-charset:",
1708 .syntax = .joined,
1709 .zig_equivalent = .other,
1710 .pd1 = true,
1711 .pd2 = false,
1712 .psl = true,
1713},
1714.{
1715 .name = "std:",
1716 .syntax = .joined,
1717 .zig_equivalent = .other,
1718 .pd1 = true,
1719 .pd2 = false,
1720 .psl = true,
1721},
1722.{
1723 .name = "u",
1724 .syntax = .flag,
1725 .zig_equivalent = .other,
1726 .pd1 = true,
1727 .pd2 = false,
1728 .psl = true,
1729},
1730.{
1731 .name = "utf-8",
1732 .syntax = .flag,
1733 .zig_equivalent = .other,
1734 .pd1 = true,
1735 .pd2 = false,
1736 .psl = true,
1737},
1738.{
1739 .name = "validate-charset",
1740 .syntax = .flag,
1741 .zig_equivalent = .other,
1742 .pd1 = true,
1743 .pd2 = false,
1744 .psl = true,
1745},
1746.{
1747 .name = "validate-charset-",
1748 .syntax = .flag,
1749 .zig_equivalent = .other,
1750 .pd1 = true,
1751 .pd2 = false,
1752 .psl = true,
1753},
1754.{
1755 .name = "vd",
1756 .syntax = .joined,
1757 .zig_equivalent = .other,
1758 .pd1 = true,
1759 .pd2 = false,
1760 .psl = true,
1761},
1762.{
1763 .name = "vmb",
1764 .syntax = .flag,
1765 .zig_equivalent = .other,
1766 .pd1 = true,
1767 .pd2 = false,
1768 .psl = true,
1769},
1770.{
1771 .name = "vmg",
1772 .syntax = .flag,
1773 .zig_equivalent = .other,
1774 .pd1 = true,
1775 .pd2 = false,
1776 .psl = true,
1777},
1778.{
1779 .name = "vmm",
1780 .syntax = .flag,
1781 .zig_equivalent = .other,
1782 .pd1 = true,
1783 .pd2 = false,
1784 .psl = true,
1785},
1786.{
1787 .name = "vms",
1788 .syntax = .flag,
1789 .zig_equivalent = .other,
1790 .pd1 = true,
1791 .pd2 = false,
1792 .psl = true,
1793},
1794.{
1795 .name = "vmv",
1796 .syntax = .flag,
1797 .zig_equivalent = .other,
1798 .pd1 = true,
1799 .pd2 = false,
1800 .psl = true,
1801},
1802.{
1803 .name = "volatile:iso",
1804 .syntax = .flag,
1805 .zig_equivalent = .other,
1806 .pd1 = true,
1807 .pd2 = false,
1808 .psl = true,
1809},
1810.{
1811 .name = "volatile:ms",
1812 .syntax = .flag,
1813 .zig_equivalent = .other,
1814 .pd1 = true,
1815 .pd2 = false,
1816 .psl = true,
1817},
1818.{
1819 .name = "w",
1820 .syntax = .joined,
1821 .zig_equivalent = .other,
1822 .pd1 = true,
1823 .pd2 = false,
1824 .psl = true,
1825},
1826.{
1827 .name = "w",
1828 .syntax = .flag,
1829 .zig_equivalent = .other,
1830 .pd1 = true,
1831 .pd2 = false,
1832 .psl = true,
1833},
1834.{
1835 .name = "wd4005",
1836 .syntax = .flag,
1837 .zig_equivalent = .other,
1838 .pd1 = true,
1839 .pd2 = false,
1840 .psl = true,
1841},
1842.{
1843 .name = "wd4018",
1844 .syntax = .flag,
1845 .zig_equivalent = .other,
1846 .pd1 = true,
1847 .pd2 = false,
1848 .psl = true,
1849},
1850.{
1851 .name = "wd4100",
1852 .syntax = .flag,
1853 .zig_equivalent = .other,
1854 .pd1 = true,
1855 .pd2 = false,
1856 .psl = true,
1857},
1858.{
1859 .name = "wd4910",
1860 .syntax = .flag,
1861 .zig_equivalent = .other,
1862 .pd1 = true,
1863 .pd2 = false,
1864 .psl = true,
1865},
1866.{
1867 .name = "wd4996",
1868 .syntax = .flag,
1869 .zig_equivalent = .other,
1870 .pd1 = true,
1871 .pd2 = false,
1872 .psl = true,
1873},
1874.{
1875 .name = "all-warnings",
1876 .syntax = .flag,
1877 .zig_equivalent = .other,
1878 .pd1 = false,
1879 .pd2 = true,
1880 .psl = false,
1881},
1882.{
1883 .name = "analyze",
1884 .syntax = .flag,
1885 .zig_equivalent = .other,
1886 .pd1 = false,
1887 .pd2 = true,
1888 .psl = false,
1889},
1890.{
1891 .name = "analyzer-no-default-checks",
1892 .syntax = .flag,
1893 .zig_equivalent = .other,
1894 .pd1 = false,
1895 .pd2 = true,
1896 .psl = false,
1897},
1898.{
1899 .name = "analyzer-output",
1900 .syntax = .joined_or_separate,
1901 .zig_equivalent = .other,
1902 .pd1 = false,
1903 .pd2 = true,
1904 .psl = false,
1905},
1906.{
1907 .name = "assemble",
1908 .syntax = .flag,
1909 .zig_equivalent = .other,
1910 .pd1 = false,
1911 .pd2 = true,
1912 .psl = false,
1913},
1914.{
1915 .name = "assert",
1916 .syntax = .separate,
1917 .zig_equivalent = .other,
1918 .pd1 = false,
1919 .pd2 = true,
1920 .psl = false,
1921},
1922.{
1923 .name = "assert=",
1924 .syntax = .joined,
1925 .zig_equivalent = .other,
1926 .pd1 = false,
1927 .pd2 = true,
1928 .psl = false,
1929},
1930.{
1931 .name = "bootclasspath",
1932 .syntax = .separate,
1933 .zig_equivalent = .other,
1934 .pd1 = false,
1935 .pd2 = true,
1936 .psl = false,
1937},
1938.{
1939 .name = "bootclasspath=",
1940 .syntax = .joined,
1941 .zig_equivalent = .other,
1942 .pd1 = false,
1943 .pd2 = true,
1944 .psl = false,
1945},
1946.{
1947 .name = "classpath",
1948 .syntax = .separate,
1949 .zig_equivalent = .other,
1950 .pd1 = false,
1951 .pd2 = true,
1952 .psl = false,
1953},
1954.{
1955 .name = "classpath=",
1956 .syntax = .joined,
1957 .zig_equivalent = .other,
1958 .pd1 = false,
1959 .pd2 = true,
1960 .psl = false,
1961},
1962.{
1963 .name = "comments",
1964 .syntax = .flag,
1965 .zig_equivalent = .other,
1966 .pd1 = false,
1967 .pd2 = true,
1968 .psl = false,
1969},
1970.{
1971 .name = "comments-in-macros",
1972 .syntax = .flag,
1973 .zig_equivalent = .other,
1974 .pd1 = false,
1975 .pd2 = true,
1976 .psl = false,
1977},
1978.{
1979 .name = "compile",
1980 .syntax = .flag,
1981 .zig_equivalent = .other,
1982 .pd1 = false,
1983 .pd2 = true,
1984 .psl = false,
1985},
1986.{
1987 .name = "constant-cfstrings",
1988 .syntax = .flag,
1989 .zig_equivalent = .other,
1990 .pd1 = false,
1991 .pd2 = true,
1992 .psl = false,
1993},
1994.{
1995 .name = "debug",
1996 .syntax = .flag,
1997 .zig_equivalent = .other,
1998 .pd1 = false,
1999 .pd2 = true,
2000 .psl = false,
2001},
2002.{
2003 .name = "debug=",
2004 .syntax = .joined,
2005 .zig_equivalent = .other,
2006 .pd1 = false,
2007 .pd2 = true,
2008 .psl = false,
2009},
2010.{
2011 .name = "define-macro",
2012 .syntax = .separate,
2013 .zig_equivalent = .other,
2014 .pd1 = false,
2015 .pd2 = true,
2016 .psl = false,
2017},
2018.{
2019 .name = "define-macro=",
2020 .syntax = .joined,
2021 .zig_equivalent = .other,
2022 .pd1 = false,
2023 .pd2 = true,
2024 .psl = false,
2025},
2026.{
2027 .name = "dependencies",
2028 .syntax = .flag,
2029 .zig_equivalent = .other,
2030 .pd1 = false,
2031 .pd2 = true,
2032 .psl = false,
2033},
2034.{
2035 .name = "dyld-prefix",
2036 .syntax = .separate,
2037 .zig_equivalent = .other,
2038 .pd1 = false,
2039 .pd2 = true,
2040 .psl = false,
2041},
2042.{
2043 .name = "dyld-prefix=",
2044 .syntax = .joined,
2045 .zig_equivalent = .other,
2046 .pd1 = false,
2047 .pd2 = true,
2048 .psl = false,
2049},
2050.{
2051 .name = "encoding",
2052 .syntax = .separate,
2053 .zig_equivalent = .other,
2054 .pd1 = false,
2055 .pd2 = true,
2056 .psl = false,
2057},
2058.{
2059 .name = "encoding=",
2060 .syntax = .joined,
2061 .zig_equivalent = .other,
2062 .pd1 = false,
2063 .pd2 = true,
2064 .psl = false,
2065},
2066.{
2067 .name = "entry",
2068 .syntax = .flag,
2069 .zig_equivalent = .other,
2070 .pd1 = false,
2071 .pd2 = true,
2072 .psl = false,
2073},
2074.{
2075 .name = "extdirs",
2076 .syntax = .separate,
2077 .zig_equivalent = .other,
2078 .pd1 = false,
2079 .pd2 = true,
2080 .psl = false,
2081},
2082.{
2083 .name = "extdirs=",
2084 .syntax = .joined,
2085 .zig_equivalent = .other,
2086 .pd1 = false,
2087 .pd2 = true,
2088 .psl = false,
2089},
2090.{
2091 .name = "extra-warnings",
2092 .syntax = .flag,
2093 .zig_equivalent = .other,
2094 .pd1 = false,
2095 .pd2 = true,
2096 .psl = false,
2097},
2098.{
2099 .name = "for-linker",
2100 .syntax = .separate,
2101 .zig_equivalent = .other,
2102 .pd1 = false,
2103 .pd2 = true,
2104 .psl = false,
2105},
2106.{
2107 .name = "for-linker=",
2108 .syntax = .joined,
2109 .zig_equivalent = .other,
2110 .pd1 = false,
2111 .pd2 = true,
2112 .psl = false,
2113},
2114.{
2115 .name = "force-link",
2116 .syntax = .separate,
2117 .zig_equivalent = .other,
2118 .pd1 = false,
2119 .pd2 = true,
2120 .psl = false,
2121},
2122.{
2123 .name = "force-link=",
2124 .syntax = .joined,
2125 .zig_equivalent = .other,
2126 .pd1 = false,
2127 .pd2 = true,
2128 .psl = false,
2129},
2130.{
2131 .name = "help-hidden",
2132 .syntax = .flag,
2133 .zig_equivalent = .other,
2134 .pd1 = false,
2135 .pd2 = true,
2136 .psl = false,
2137},
2138.{
2139 .name = "imacros=",
2140 .syntax = .joined,
2141 .zig_equivalent = .other,
2142 .pd1 = false,
2143 .pd2 = true,
2144 .psl = false,
2145},
2146.{
2147 .name = "include=",
2148 .syntax = .joined,
2149 .zig_equivalent = .other,
2150 .pd1 = false,
2151 .pd2 = true,
2152 .psl = false,
2153},
2154.{
2155 .name = "include-barrier",
2156 .syntax = .flag,
2157 .zig_equivalent = .other,
2158 .pd1 = false,
2159 .pd2 = true,
2160 .psl = false,
2161},
2162.{
2163 .name = "include-directory",
2164 .syntax = .separate,
2165 .zig_equivalent = .other,
2166 .pd1 = false,
2167 .pd2 = true,
2168 .psl = false,
2169},
2170.{
2171 .name = "include-directory=",
2172 .syntax = .joined,
2173 .zig_equivalent = .other,
2174 .pd1 = false,
2175 .pd2 = true,
2176 .psl = false,
2177},
2178.{
2179 .name = "include-directory-after",
2180 .syntax = .separate,
2181 .zig_equivalent = .other,
2182 .pd1 = false,
2183 .pd2 = true,
2184 .psl = false,
2185},
2186.{
2187 .name = "include-directory-after=",
2188 .syntax = .joined,
2189 .zig_equivalent = .other,
2190 .pd1 = false,
2191 .pd2 = true,
2192 .psl = false,
2193},
2194.{
2195 .name = "include-prefix",
2196 .syntax = .separate,
2197 .zig_equivalent = .other,
2198 .pd1 = false,
2199 .pd2 = true,
2200 .psl = false,
2201},
2202.{
2203 .name = "include-prefix=",
2204 .syntax = .joined,
2205 .zig_equivalent = .other,
2206 .pd1 = false,
2207 .pd2 = true,
2208 .psl = false,
2209},
2210.{
2211 .name = "include-with-prefix",
2212 .syntax = .separate,
2213 .zig_equivalent = .other,
2214 .pd1 = false,
2215 .pd2 = true,
2216 .psl = false,
2217},
2218.{
2219 .name = "include-with-prefix=",
2220 .syntax = .joined,
2221 .zig_equivalent = .other,
2222 .pd1 = false,
2223 .pd2 = true,
2224 .psl = false,
2225},
2226.{
2227 .name = "include-with-prefix-after",
2228 .syntax = .separate,
2229 .zig_equivalent = .other,
2230 .pd1 = false,
2231 .pd2 = true,
2232 .psl = false,
2233},
2234.{
2235 .name = "include-with-prefix-after=",
2236 .syntax = .joined,
2237 .zig_equivalent = .other,
2238 .pd1 = false,
2239 .pd2 = true,
2240 .psl = false,
2241},
2242.{
2243 .name = "include-with-prefix-before",
2244 .syntax = .separate,
2245 .zig_equivalent = .other,
2246 .pd1 = false,
2247 .pd2 = true,
2248 .psl = false,
2249},
2250.{
2251 .name = "include-with-prefix-before=",
2252 .syntax = .joined,
2253 .zig_equivalent = .other,
2254 .pd1 = false,
2255 .pd2 = true,
2256 .psl = false,
2257},
2258.{
2259 .name = "language",
2260 .syntax = .separate,
2261 .zig_equivalent = .other,
2262 .pd1 = false,
2263 .pd2 = true,
2264 .psl = false,
2265},
2266.{
2267 .name = "language=",
2268 .syntax = .joined,
2269 .zig_equivalent = .other,
2270 .pd1 = false,
2271 .pd2 = true,
2272 .psl = false,
2273},
2274.{
2275 .name = "library-directory",
2276 .syntax = .separate,
2277 .zig_equivalent = .other,
2278 .pd1 = false,
2279 .pd2 = true,
2280 .psl = false,
2281},
2282.{
2283 .name = "library-directory=",
2284 .syntax = .joined,
2285 .zig_equivalent = .other,
2286 .pd1 = false,
2287 .pd2 = true,
2288 .psl = false,
2289},
2290.{
2291 .name = "mhwdiv",
2292 .syntax = .separate,
2293 .zig_equivalent = .other,
2294 .pd1 = false,
2295 .pd2 = true,
2296 .psl = false,
2297},
2298.{
2299 .name = "mhwdiv=",
2300 .syntax = .joined,
2301 .zig_equivalent = .other,
2302 .pd1 = false,
2303 .pd2 = true,
2304 .psl = false,
2305},
2306.{
2307 .name = "migrate",
2308 .syntax = .flag,
2309 .zig_equivalent = .other,
2310 .pd1 = false,
2311 .pd2 = true,
2312 .psl = false,
2313},
2314.{
2315 .name = "no-line-commands",
2316 .syntax = .flag,
2317 .zig_equivalent = .other,
2318 .pd1 = false,
2319 .pd2 = true,
2320 .psl = false,
2321},
2322.{
2323 .name = "no-standard-includes",
2324 .syntax = .flag,
2325 .zig_equivalent = .other,
2326 .pd1 = false,
2327 .pd2 = true,
2328 .psl = false,
2329},
2330.{
2331 .name = "no-standard-libraries",
2332 .syntax = .flag,
2333 .zig_equivalent = .other,
2334 .pd1 = false,
2335 .pd2 = true,
2336 .psl = false,
2337},
2338.{
2339 .name = "no-undefined",
2340 .syntax = .flag,
2341 .zig_equivalent = .other,
2342 .pd1 = false,
2343 .pd2 = true,
2344 .psl = false,
2345},
2346.{
2347 .name = "no-warnings",
2348 .syntax = .flag,
2349 .zig_equivalent = .other,
2350 .pd1 = false,
2351 .pd2 = true,
2352 .psl = false,
2353},
2354.{
2355 .name = "optimize",
2356 .syntax = .flag,
2357 .zig_equivalent = .other,
2358 .pd1 = false,
2359 .pd2 = true,
2360 .psl = false,
2361},
2362.{
2363 .name = "optimize=",
2364 .syntax = .joined,
2365 .zig_equivalent = .other,
2366 .pd1 = false,
2367 .pd2 = true,
2368 .psl = false,
2369},
2370.{
2371 .name = "output",
2372 .syntax = .separate,
2373 .zig_equivalent = .other,
2374 .pd1 = false,
2375 .pd2 = true,
2376 .psl = false,
2377},
2378.{
2379 .name = "output=",
2380 .syntax = .joined,
2381 .zig_equivalent = .other,
2382 .pd1 = false,
2383 .pd2 = true,
2384 .psl = false,
2385},
2386.{
2387 .name = "output-class-directory",
2388 .syntax = .separate,
2389 .zig_equivalent = .other,
2390 .pd1 = false,
2391 .pd2 = true,
2392 .psl = false,
2393},
2394.{
2395 .name = "output-class-directory=",
2396 .syntax = .joined,
2397 .zig_equivalent = .other,
2398 .pd1 = false,
2399 .pd2 = true,
2400 .psl = false,
2401},
2402.{
2403 .name = "param",
2404 .syntax = .separate,
2405 .zig_equivalent = .other,
2406 .pd1 = false,
2407 .pd2 = true,
2408 .psl = false,
2409},
2410.{
2411 .name = "param=",
2412 .syntax = .joined,
2413 .zig_equivalent = .other,
2414 .pd1 = false,
2415 .pd2 = true,
2416 .psl = false,
2417},
2418.{
2419 .name = "precompile",
2420 .syntax = .flag,
2421 .zig_equivalent = .other,
2422 .pd1 = false,
2423 .pd2 = true,
2424 .psl = false,
2425},
2426.{
2427 .name = "prefix",
2428 .syntax = .separate,
2429 .zig_equivalent = .other,
2430 .pd1 = false,
2431 .pd2 = true,
2432 .psl = false,
2433},
2434.{
2435 .name = "prefix=",
2436 .syntax = .joined,
2437 .zig_equivalent = .other,
2438 .pd1 = false,
2439 .pd2 = true,
2440 .psl = false,
2441},
2442.{
2443 .name = "preprocess",
2444 .syntax = .flag,
2445 .zig_equivalent = .other,
2446 .pd1 = false,
2447 .pd2 = true,
2448 .psl = false,
2449},
2450.{
2451 .name = "print-diagnostic-categories",
2452 .syntax = .flag,
2453 .zig_equivalent = .other,
2454 .pd1 = false,
2455 .pd2 = true,
2456 .psl = false,
2457},
2458.{
2459 .name = "print-file-name",
2460 .syntax = .separate,
2461 .zig_equivalent = .other,
2462 .pd1 = false,
2463 .pd2 = true,
2464 .psl = false,
2465},
2466.{
2467 .name = "print-missing-file-dependencies",
2468 .syntax = .flag,
2469 .zig_equivalent = .other,
2470 .pd1 = false,
2471 .pd2 = true,
2472 .psl = false,
2473},
2474.{
2475 .name = "print-prog-name",
2476 .syntax = .separate,
2477 .zig_equivalent = .other,
2478 .pd1 = false,
2479 .pd2 = true,
2480 .psl = false,
2481},
2482.{
2483 .name = "profile",
2484 .syntax = .flag,
2485 .zig_equivalent = .other,
2486 .pd1 = false,
2487 .pd2 = true,
2488 .psl = false,
2489},
2490.{
2491 .name = "profile-blocks",
2492 .syntax = .flag,
2493 .zig_equivalent = .other,
2494 .pd1 = false,
2495 .pd2 = true,
2496 .psl = false,
2497},
2498.{
2499 .name = "resource",
2500 .syntax = .separate,
2501 .zig_equivalent = .other,
2502 .pd1 = false,
2503 .pd2 = true,
2504 .psl = false,
2505},
2506.{
2507 .name = "resource=",
2508 .syntax = .joined,
2509 .zig_equivalent = .other,
2510 .pd1 = false,
2511 .pd2 = true,
2512 .psl = false,
2513},
2514.{
2515 .name = "rtlib",
2516 .syntax = .separate,
2517 .zig_equivalent = .other,
2518 .pd1 = false,
2519 .pd2 = true,
2520 .psl = false,
2521},
2522.{
2523 .name = "serialize-diagnostics",
2524 .syntax = .separate,
2525 .zig_equivalent = .other,
2526 .pd1 = true,
2527 .pd2 = true,
2528 .psl = false,
2529},
2530.{
2531 .name = "signed-char",
2532 .syntax = .flag,
2533 .zig_equivalent = .other,
2534 .pd1 = false,
2535 .pd2 = true,
2536 .psl = false,
2537},
2538.{
2539 .name = "std",
2540 .syntax = .separate,
2541 .zig_equivalent = .other,
2542 .pd1 = false,
2543 .pd2 = true,
2544 .psl = false,
2545},
2546.{
2547 .name = "stdlib",
2548 .syntax = .separate,
2549 .zig_equivalent = .other,
2550 .pd1 = false,
2551 .pd2 = true,
2552 .psl = false,
2553},
2554.{
2555 .name = "sysroot",
2556 .syntax = .separate,
2557 .zig_equivalent = .other,
2558 .pd1 = false,
2559 .pd2 = true,
2560 .psl = false,
2561},
2562.{
2563 .name = "sysroot=",
2564 .syntax = .joined,
2565 .zig_equivalent = .other,
2566 .pd1 = false,
2567 .pd2 = true,
2568 .psl = false,
2569},
2570.{
2571 .name = "target-help",
2572 .syntax = .flag,
2573 .zig_equivalent = .other,
2574 .pd1 = false,
2575 .pd2 = true,
2576 .psl = false,
2577},
2578.{
2579 .name = "trace-includes",
2580 .syntax = .flag,
2581 .zig_equivalent = .other,
2582 .pd1 = false,
2583 .pd2 = true,
2584 .psl = false,
2585},
2586.{
2587 .name = "undefine-macro",
2588 .syntax = .separate,
2589 .zig_equivalent = .other,
2590 .pd1 = false,
2591 .pd2 = true,
2592 .psl = false,
2593},
2594.{
2595 .name = "undefine-macro=",
2596 .syntax = .joined,
2597 .zig_equivalent = .other,
2598 .pd1 = false,
2599 .pd2 = true,
2600 .psl = false,
2601},
2602.{
2603 .name = "unsigned-char",
2604 .syntax = .flag,
2605 .zig_equivalent = .other,
2606 .pd1 = false,
2607 .pd2 = true,
2608 .psl = false,
2609},
2610.{
2611 .name = "user-dependencies",
2612 .syntax = .flag,
2613 .zig_equivalent = .other,
2614 .pd1 = false,
2615 .pd2 = true,
2616 .psl = false,
2617},
2618.{
2619 .name = "verbose",
2620 .syntax = .flag,
2621 .zig_equivalent = .other,
2622 .pd1 = false,
2623 .pd2 = true,
2624 .psl = false,
2625},
2626.{
2627 .name = "version",
2628 .syntax = .flag,
2629 .zig_equivalent = .other,
2630 .pd1 = false,
2631 .pd2 = true,
2632 .psl = false,
2633},
2634.{
2635 .name = "warn-",
2636 .syntax = .joined,
2637 .zig_equivalent = .other,
2638 .pd1 = false,
2639 .pd2 = true,
2640 .psl = false,
2641},
2642.{
2643 .name = "warn-=",
2644 .syntax = .joined,
2645 .zig_equivalent = .other,
2646 .pd1 = false,
2647 .pd2 = true,
2648 .psl = false,
2649},
2650.{
2651 .name = "write-dependencies",
2652 .syntax = .flag,
2653 .zig_equivalent = .other,
2654 .pd1 = false,
2655 .pd2 = true,
2656 .psl = false,
2657},
2658.{
2659 .name = "write-user-dependencies",
2660 .syntax = .flag,
2661 .zig_equivalent = .other,
2662 .pd1 = false,
2663 .pd2 = true,
2664 .psl = false,
2665},
2666joinpd1("a"),
2667sepd1("add-plugin"),
2668flagpd1("faggressive-function-elimination"),
2669flagpd1("fno-aggressive-function-elimination"),
2670flagpd1("falign-commons"),
2671flagpd1("fno-align-commons"),
2672flagpd1("falign-jumps"),
2673flagpd1("fno-align-jumps"),
2674flagpd1("falign-labels"),
2675flagpd1("fno-align-labels"),
2676flagpd1("falign-loops"),
2677flagpd1("fno-align-loops"),
2678flagpd1("faligned-alloc-unavailable"),
2679flagpd1("all_load"),
2680flagpd1("fall-intrinsics"),
2681flagpd1("fno-all-intrinsics"),
2682sepd1("allowable_client"),
2683flagpd1("cfg-add-implicit-dtors"),
2684flagpd1("unoptimized-cfg"),
2685flagpd1("analyze"),
2686sepd1("analyze-function"),
2687joinpd1("analyze-function="),
2688sepd1("analyzer-checker"),
2689joinpd1("analyzer-checker="),
2690flagpd1("analyzer-checker-help"),
2691flagpd1("analyzer-checker-help-alpha"),
2692flagpd1("analyzer-checker-help-developer"),
2693flagpd1("analyzer-checker-option-help"),
2694flagpd1("analyzer-checker-option-help-alpha"),
2695flagpd1("analyzer-checker-option-help-developer"),
2696sepd1("analyzer-config"),
2697sepd1("analyzer-config-compatibility-mode"),
2698joinpd1("analyzer-config-compatibility-mode="),
2699flagpd1("analyzer-config-help"),
2700sepd1("analyzer-constraints"),
2701joinpd1("analyzer-constraints="),
2702flagpd1("analyzer-disable-all-checks"),
2703sepd1("analyzer-disable-checker"),
2704joinpd1("analyzer-disable-checker="),
2705flagpd1("analyzer-disable-retry-exhausted"),
2706flagpd1("analyzer-display-progress"),
2707sepd1("analyzer-dump-egraph"),
2708joinpd1("analyzer-dump-egraph="),
2709sepd1("analyzer-inline-max-stack-depth"),
2710joinpd1("analyzer-inline-max-stack-depth="),
2711sepd1("analyzer-inlining-mode"),
2712joinpd1("analyzer-inlining-mode="),
2713flagpd1("analyzer-list-enabled-checkers"),
2714sepd1("analyzer-max-loop"),
2715flagpd1("analyzer-opt-analyze-headers"),
2716flagpd1("analyzer-opt-analyze-nested-blocks"),
2717sepd1("analyzer-output"),
2718joinpd1("analyzer-output="),
2719sepd1("analyzer-purge"),
2720joinpd1("analyzer-purge="),
2721flagpd1("analyzer-stats"),
2722sepd1("analyzer-store"),
2723joinpd1("analyzer-store="),
2724flagpd1("analyzer-viz-egraph-graphviz"),
2725flagpd1("analyzer-werror"),
2726flagpd1("fslp-vectorize-aggressive"),
2727flagpd1("fno-slp-vectorize-aggressive"),
2728flagpd1("fexpensive-optimizations"),
2729flagpd1("fno-expensive-optimizations"),
2730flagpd1("fdefer-pop"),
2731flagpd1("fno-defer-pop"),
2732flagpd1("fextended-identifiers"),
2733flagpd1("fno-extended-identifiers"),
2734flagpd1("fhonor-infinites"),
2735flagpd1("fno-honor-infinites"),
2736flagpd1("findirect-virtual-calls"),
2737sepd1("fnew-alignment"),
2738joinpd1("objcmt-white-list-dir-path="),
2739flagpd1("faligned-new"),
2740flagpd1("fno-aligned-new"),
2741flagpd1("fsched-interblock"),
2742flagpd1("ftree-vectorize"),
2743flagpd1("fno-tree-vectorize"),
2744flagpd1("ftree-slp-vectorize"),
2745flagpd1("fno-tree-slp-vectorize"),
2746flagpd1("fterminated-vtables"),
2747flagpd1("grecord-gcc-switches"),
2748flagpd1("gno-record-gcc-switches"),
2749flagpd1("fident"),
2750flagpd1("nocudalib"),
2751.{
2752 .name = "system-header-prefix",
2753 .syntax = .separate,
2754 .zig_equivalent = .other,
2755 .pd1 = false,
2756 .pd2 = true,
2757 .psl = false,
2758},
2759.{
2760 .name = "no-system-header-prefix",
2761 .syntax = .separate,
2762 .zig_equivalent = .other,
2763 .pd1 = false,
2764 .pd2 = true,
2765 .psl = false,
2766},
2767flagpd1("integrated-as"),
2768flagpd1("no-integrated-as"),
2769flagpd1("fkeep-inline-functions"),
2770flagpd1("fno-keep-inline-functions"),
2771flagpd1("fno-semantic-interposition"),
2772.{
2773 .name = "Gs",
2774 .syntax = .flag,
2775 .zig_equivalent = .other,
2776 .pd1 = true,
2777 .pd2 = false,
2778 .psl = true,
2779},
2780.{
2781 .name = "O1",
2782 .syntax = .flag,
2783 .zig_equivalent = .other,
2784 .pd1 = true,
2785 .pd2 = false,
2786 .psl = true,
2787},
2788.{
2789 .name = "O2",
2790 .syntax = .flag,
2791 .zig_equivalent = .other,
2792 .pd1 = true,
2793 .pd2 = false,
2794 .psl = true,
2795},
2796flagpd1("fno-ident"),
2797.{
2798 .name = "Ob0",
2799 .syntax = .flag,
2800 .zig_equivalent = .other,
2801 .pd1 = true,
2802 .pd2 = false,
2803 .psl = true,
2804},
2805.{
2806 .name = "Ob1",
2807 .syntax = .flag,
2808 .zig_equivalent = .other,
2809 .pd1 = true,
2810 .pd2 = false,
2811 .psl = true,
2812},
2813.{
2814 .name = "Ob2",
2815 .syntax = .flag,
2816 .zig_equivalent = .other,
2817 .pd1 = true,
2818 .pd2 = false,
2819 .psl = true,
2820},
2821.{
2822 .name = "Od",
2823 .syntax = .flag,
2824 .zig_equivalent = .other,
2825 .pd1 = true,
2826 .pd2 = false,
2827 .psl = true,
2828},
2829.{
2830 .name = "Og",
2831 .syntax = .flag,
2832 .zig_equivalent = .other,
2833 .pd1 = true,
2834 .pd2 = false,
2835 .psl = true,
2836},
2837.{
2838 .name = "Oi",
2839 .syntax = .flag,
2840 .zig_equivalent = .other,
2841 .pd1 = true,
2842 .pd2 = false,
2843 .psl = true,
2844},
2845.{
2846 .name = "Oi-",
2847 .syntax = .flag,
2848 .zig_equivalent = .other,
2849 .pd1 = true,
2850 .pd2 = false,
2851 .psl = true,
2852},
2853.{
2854 .name = "Os",
2855 .syntax = .flag,
2856 .zig_equivalent = .other,
2857 .pd1 = true,
2858 .pd2 = false,
2859 .psl = true,
2860},
2861.{
2862 .name = "Ot",
2863 .syntax = .flag,
2864 .zig_equivalent = .other,
2865 .pd1 = true,
2866 .pd2 = false,
2867 .psl = true,
2868},
2869.{
2870 .name = "Ox",
2871 .syntax = .flag,
2872 .zig_equivalent = .other,
2873 .pd1 = true,
2874 .pd2 = false,
2875 .psl = true,
2876},
2877flagpd1("fcuda-rdc"),
2878.{
2879 .name = "Oy",
2880 .syntax = .flag,
2881 .zig_equivalent = .other,
2882 .pd1 = true,
2883 .pd2 = false,
2884 .psl = true,
2885},
2886.{
2887 .name = "Oy-",
2888 .syntax = .flag,
2889 .zig_equivalent = .other,
2890 .pd1 = true,
2891 .pd2 = false,
2892 .psl = true,
2893},
2894flagpd1("fno-cuda-rdc"),
2895flagpd1("shared-libasan"),
2896flagpd1("frecord-gcc-switches"),
2897flagpd1("fno-record-gcc-switches"),
2898.{
2899 .name = "ansi",
2900 .syntax = .flag,
2901 .zig_equivalent = .other,
2902 .pd1 = true,
2903 .pd2 = true,
2904 .psl = false,
2905},
2906sepd1("arch"),
2907flagpd1("arch_errors_fatal"),
2908sepd1("arch_only"),
2909flagpd1("arcmt-check"),
2910flagpd1("arcmt-migrate"),
2911flagpd1("arcmt-migrate-emit-errors"),
2912sepd1("arcmt-migrate-report-output"),
2913flagpd1("arcmt-modify"),
2914flagpd1("ast-dump"),
2915joinpd1("ast-dump="),
2916flagpd1("ast-dump-all"),
2917joinpd1("ast-dump-all="),
2918sepd1("ast-dump-filter"),
2919flagpd1("ast-dump-lookups"),
2920flagpd1("ast-list"),
2921sepd1("ast-merge"),
2922flagpd1("ast-print"),
2923flagpd1("ast-view"),
2924.{
2925 .name = "autocomplete=",
2926 .syntax = .joined,
2927 .zig_equivalent = .other,
2928 .pd1 = false,
2929 .pd2 = true,
2930 .psl = false,
2931},
2932flagpd1("fautomatic"),
2933flagpd1("fno-automatic"),
2934sepd1("aux-triple"),
2935jspd1("b"),
2936flagpd1("fbackslash"),
2937flagpd1("fno-backslash"),
2938flagpd1("fbacktrace"),
2939flagpd1("fno-backtrace"),
2940flagpd1("bind_at_load"),
2941flagpd1("fbounds-check"),
2942flagpd1("fno-bounds-check"),
2943flagpd1("fbranch-count-reg"),
2944flagpd1("fno-branch-count-reg"),
2945flagpd1("building-pch-with-obj"),
2946flagpd1("bundle"),
2947sepd1("bundle_loader"),
2948.{
2949 .name = "c",
2950 .syntax = .flag,
2951 .zig_equivalent = .c,
2952 .pd1 = true,
2953 .pd2 = false,
2954 .psl = false,
2955},
2956jspd1("c-isystem"),
2957flagpd1("fcaller-saves"),
2958flagpd1("fno-caller-saves"),
2959flagpd1("cc1"),
2960flagpd1("cc1as"),
2961joinpd1("ccc-"),
2962flagpd1("ccc-arcmt-check"),
2963sepd1("ccc-arcmt-migrate"),
2964flagpd1("ccc-arcmt-modify"),
2965sepd1("ccc-gcc-name"),
2966sepd1("ccc-install-dir"),
2967sepd1("ccc-objcmt-migrate"),
2968flagpd1("ccc-print-bindings"),
2969flagpd1("ccc-print-phases"),
2970flagpd1("cfguard"),
2971flagpd1("cfguard-no-checks"),
2972sepd1("chain-include"),
2973flagpd1("fcheck-array-temporaries"),
2974flagpd1("fno-check-array-temporaries"),
2975flagpd1("cl-denorms-are-zero"),
2976.{
2977 .name = "cl-ext=",
2978 .syntax = .comma_joined,
2979 .zig_equivalent = .other,
2980 .pd1 = true,
2981 .pd2 = false,
2982 .psl = false,
2983},
2984flagpd1("cl-fast-relaxed-math"),
2985flagpd1("cl-finite-math-only"),
2986flagpd1("cl-fp32-correctly-rounded-divide-sqrt"),
2987flagpd1("cl-kernel-arg-info"),
2988flagpd1("cl-mad-enable"),
2989flagpd1("cl-no-signed-zeros"),
2990flagpd1("cl-opt-disable"),
2991flagpd1("cl-single-precision-constant"),
2992joinpd1("cl-std="),
2993flagpd1("cl-strict-aliasing"),
2994flagpd1("cl-uniform-work-group-size"),
2995flagpd1("cl-unsafe-math-optimizations"),
2996jspd1("client_name"),
2997sepd1("code-completion-at"),
2998joinpd1("code-completion-at="),
2999flagpd1("code-completion-brief-comments"),
3000flagpd1("code-completion-macros"),
3001flagpd1("code-completion-patterns"),
3002flagpd1("code-completion-with-fixits"),
3003.{
3004 .name = "combine",
3005 .syntax = .flag,
3006 .zig_equivalent = .other,
3007 .pd1 = true,
3008 .pd2 = true,
3009 .psl = false,
3010},
3011jspd1("compatibility_version"),
3012flagpd1("compiler-options-dump"),
3013.{
3014 .name = "compress-debug-sections",
3015 .syntax = .flag,
3016 .zig_equivalent = .other,
3017 .pd1 = true,
3018 .pd2 = true,
3019 .psl = false,
3020},
3021.{
3022 .name = "compress-debug-sections=",
3023 .syntax = .joined,
3024 .zig_equivalent = .other,
3025 .pd1 = true,
3026 .pd2 = true,
3027 .psl = false,
3028},
3029.{
3030 .name = "config",
3031 .syntax = .separate,
3032 .zig_equivalent = .other,
3033 .pd1 = false,
3034 .pd2 = true,
3035 .psl = false,
3036},
3037.{
3038 .name = "config-system-dir=",
3039 .syntax = .joined,
3040 .zig_equivalent = .other,
3041 .pd1 = false,
3042 .pd2 = true,
3043 .psl = false,
3044},
3045.{
3046 .name = "config-user-dir=",
3047 .syntax = .joined,
3048 .zig_equivalent = .other,
3049 .pd1 = false,
3050 .pd2 = true,
3051 .psl = false,
3052},
3053.{
3054 .name = "coverage",
3055 .syntax = .flag,
3056 .zig_equivalent = .other,
3057 .pd1 = true,
3058 .pd2 = true,
3059 .psl = false,
3060},
3061flagpd1("coverage-cfg-checksum"),
3062sepd1("coverage-data-file"),
3063joinpd1("coverage-data-file="),
3064flagpd1("coverage-exit-block-before-body"),
3065flagpd1("coverage-no-function-names-in-data"),
3066sepd1("coverage-notes-file"),
3067joinpd1("coverage-notes-file="),
3068joinpd1("coverage-version="),
3069flagpd1("cpp"),
3070flagpd1("cpp-precomp"),
3071flagpd1("fcray-pointer"),
3072flagpd1("fno-cray-pointer"),
3073.{
3074 .name = "cuda-compile-host-device",
3075 .syntax = .flag,
3076 .zig_equivalent = .other,
3077 .pd1 = false,
3078 .pd2 = true,
3079 .psl = false,
3080},
3081.{
3082 .name = "cuda-device-only",
3083 .syntax = .flag,
3084 .zig_equivalent = .other,
3085 .pd1 = false,
3086 .pd2 = true,
3087 .psl = false,
3088},
3089.{
3090 .name = "cuda-gpu-arch=",
3091 .syntax = .joined,
3092 .zig_equivalent = .other,
3093 .pd1 = false,
3094 .pd2 = true,
3095 .psl = false,
3096},
3097.{
3098 .name = "cuda-host-only",
3099 .syntax = .flag,
3100 .zig_equivalent = .other,
3101 .pd1 = false,
3102 .pd2 = true,
3103 .psl = false,
3104},
3105.{
3106 .name = "cuda-include-ptx=",
3107 .syntax = .joined,
3108 .zig_equivalent = .other,
3109 .pd1 = false,
3110 .pd2 = true,
3111 .psl = false,
3112},
3113.{
3114 .name = "cuda-noopt-device-debug",
3115 .syntax = .flag,
3116 .zig_equivalent = .other,
3117 .pd1 = false,
3118 .pd2 = true,
3119 .psl = false,
3120},
3121.{
3122 .name = "cuda-path=",
3123 .syntax = .joined,
3124 .zig_equivalent = .other,
3125 .pd1 = false,
3126 .pd2 = true,
3127 .psl = false,
3128},
3129.{
3130 .name = "cuda-path-ignore-env",
3131 .syntax = .flag,
3132 .zig_equivalent = .other,
3133 .pd1 = false,
3134 .pd2 = true,
3135 .psl = false,
3136},
3137jspd1("current_version"),
3138jspd1("cxx-isystem"),
3139flagpd1("dA"),
3140flagpd1("dD"),
3141flagpd1("dI"),
3142flagpd1("dM"),
3143flagpd1("d"),
3144joinpd1("d"),
3145flagpd1("fd-lines-as-code"),
3146flagpd1("fno-d-lines-as-code"),
3147flagpd1("fd-lines-as-comments"),
3148flagpd1("fno-d-lines-as-comments"),
3149flagpd1("dead_strip"),
3150flagpd1("debug-forward-template-params"),
3151joinpd1("debug-info-kind="),
3152flagpd1("debug-info-macro"),
3153joinpd1("debugger-tuning="),
3154flagpd1("fdefault-double-8"),
3155flagpd1("fno-default-double-8"),
3156sepd1("default-function-attr"),
3157flagpd1("fdefault-inline"),
3158flagpd1("fno-default-inline"),
3159flagpd1("fdefault-integer-8"),
3160flagpd1("fno-default-integer-8"),
3161flagpd1("fdefault-real-8"),
3162flagpd1("fno-default-real-8"),
3163sepd1("defsym"),
3164sepd1("dependency-dot"),
3165sepd1("dependency-file"),
3166.{
3167 .name = "dependent-lib=",
3168 .syntax = .joined,
3169 .zig_equivalent = .other,
3170 .pd1 = false,
3171 .pd2 = true,
3172 .psl = false,
3173},
3174flagpd1("detailed-preprocessing-record"),
3175flagpd1("fdevirtualize"),
3176flagpd1("fno-devirtualize"),
3177flagpd1("fdevirtualize-speculatively"),
3178flagpd1("fno-devirtualize-speculatively"),
3179sepd1("diagnostic-log-file"),
3180sepd1("serialize-diagnostic-file"),
3181flagpd1("disable-O0-optnone"),
3182flagpd1("disable-free"),
3183flagpd1("disable-lifetime-markers"),
3184flagpd1("disable-llvm-optzns"),
3185flagpd1("disable-llvm-passes"),
3186flagpd1("disable-llvm-verifier"),
3187flagpd1("disable-objc-default-synthesize-properties"),
3188flagpd1("disable-pragma-debug-crash"),
3189flagpd1("disable-red-zone"),
3190flagpd1("discard-value-names"),
3191flagpd1("fdollar-ok"),
3192flagpd1("fno-dollar-ok"),
3193.{
3194 .name = "driver-mode=",
3195 .syntax = .joined,
3196 .zig_equivalent = .other,
3197 .pd1 = false,
3198 .pd2 = true,
3199 .psl = false,
3200},
3201flagpd1("dump-coverage-mapping"),
3202flagpd1("dump-deserialized-decls"),
3203flagpd1("fdump-fortran-optimized"),
3204flagpd1("fno-dump-fortran-optimized"),
3205flagpd1("fdump-fortran-original"),
3206flagpd1("fno-dump-fortran-original"),
3207flagpd1("fdump-parse-tree"),
3208flagpd1("fno-dump-parse-tree"),
3209flagpd1("dump-raw-tokens"),
3210flagpd1("dump-tokens"),
3211flagpd1("dumpmachine"),
3212flagpd1("dumpspecs"),
3213flagpd1("dumpversion"),
3214flagpd1("dwarf-column-info"),
3215sepd1("dwarf-debug-flags"),
3216sepd1("dwarf-debug-producer"),
3217flagpd1("dwarf-explicit-import"),
3218flagpd1("dwarf-ext-refs"),
3219joinpd1("dwarf-version="),
3220sepd1("dylib_file"),
3221flagpd1("dylinker"),
3222jspd1("dylinker_install_name"),
3223flagpd1("dynamic"),
3224flagpd1("dynamiclib"),
3225jspd1("e"),
3226flagpd1("feliminate-unused-debug-types"),
3227flagpd1("fno-eliminate-unused-debug-types"),
3228flagpd1("emit-ast"),
3229flagpd1("emit-codegen-only"),
3230flagpd1("emit-header-module"),
3231flagpd1("emit-html"),
3232flagpd1("emit-interface-stubs"),
3233flagpd1("emit-llvm"),
3234flagpd1("emit-llvm-bc"),
3235flagpd1("emit-llvm-only"),
3236flagpd1("emit-llvm-uselists"),
3237flagpd1("emit-merged-ifs"),
3238flagpd1("emit-module"),
3239flagpd1("emit-module-interface"),
3240flagpd1("emit-obj"),
3241flagpd1("emit-pch"),
3242flagpd1("enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang"),
3243sepd1("error-on-deserialized-decl"),
3244joinpd1("error-on-deserialized-decl="),
3245sepd1("exported_symbols_list"),
3246flagpd1("fexternal-blas"),
3247flagpd1("fno-external-blas"),
3248flagpd1("ff2c"),
3249flagpd1("fno-f2c"),
3250flagpd1("fPIC"),
3251flagpd1("fPIE"),
3252flagpd1("faccess-control"),
3253joinpd1("faddress-space-map-mangling="),
3254flagpd1("faddrsig"),
3255flagpd1("falign-functions"),
3256joinpd1("falign-functions="),
3257joinpd1("falign-jumps="),
3258joinpd1("falign-labels="),
3259joinpd1("falign-loops="),
3260flagpd1("faligned-allocation"),
3261joinpd1("faligned-new="),
3262flagpd1("fallow-editor-placeholders"),
3263flagpd1("fallow-half-arguments-and-returns"),
3264flagpd1("fallow-pch-with-compiler-errors"),
3265flagpd1("fallow-unsupported"),
3266flagpd1("faltivec"),
3267flagpd1("fansi-escape-codes"),
3268flagpd1("fapple-kext"),
3269flagpd1("fapple-link-rtlib"),
3270flagpd1("fapple-pragma-pack"),
3271flagpd1("fapplication-extension"),
3272flagpd1("fapply-global-visibility-to-externs"),
3273flagpd1("fasm"),
3274flagpd1("fasm-blocks"),
3275flagpd1("fassociative-math"),
3276flagpd1("fassume-sane-operator-new"),
3277flagpd1("fast"),
3278flagpd1("fastcp"),
3279flagpd1("fastf"),
3280flagpd1("fasynchronous-unwind-tables"),
3281flagpd1("ffat-lto-objects"),
3282flagpd1("fno-fat-lto-objects"),
3283flagpd1("fauto-profile"),
3284joinpd1("fauto-profile="),
3285flagpd1("fauto-profile-accurate"),
3286flagpd1("fautolink"),
3287joinpd1("fblas-matmul-limit="),
3288flagpd1("fblocks"),
3289flagpd1("fblocks-runtime-optional"),
3290joinpd1("fbootclasspath="),
3291flagpd1("fborland-extensions"),
3292sepd1("fbracket-depth"),
3293joinpd1("fbracket-depth="),
3294joinpd1("fbuild-session-file="),
3295joinpd1("fbuild-session-timestamp="),
3296flagpd1("fbuiltin"),
3297flagpd1("fbuiltin-module-map"),
3298flagpd1("fcall-saved-x10"),
3299flagpd1("fcall-saved-x11"),
3300flagpd1("fcall-saved-x12"),
3301flagpd1("fcall-saved-x13"),
3302flagpd1("fcall-saved-x14"),
3303flagpd1("fcall-saved-x15"),
3304flagpd1("fcall-saved-x18"),
3305flagpd1("fcall-saved-x8"),
3306flagpd1("fcall-saved-x9"),
3307flagpd1("fcaret-diagnostics"),
3308sepd1("fcaret-diagnostics-max-lines"),
3309flagpd1("fcf-protection"),
3310joinpd1("fcf-protection="),
3311joinpd1("fcf-runtime-abi="),
3312flagpd1("fchar8_t"),
3313joinpd1("fcheck="),
3314flagpd1("fcheck-new"),
3315flagpd1("fno-check-new"),
3316joinpd1("fclang-abi-compat="),
3317joinpd1("fclasspath="),
3318joinpd1("fcoarray="),
3319flagpd1("fcolor-diagnostics"),
3320.{
3321 .name = "fcomment-block-commands=",
3322 .syntax = .comma_joined,
3323 .zig_equivalent = .other,
3324 .pd1 = true,
3325 .pd2 = false,
3326 .psl = false,
3327},
3328flagpd1("fcommon"),
3329joinpd1("fcompile-resource="),
3330flagpd1("fcomplete-member-pointers"),
3331flagpd1("fconcepts-ts"),
3332flagpd1("fconst-strings"),
3333flagpd1("fconstant-cfstrings"),
3334sepd1("fconstant-string-class"),
3335joinpd1("fconstant-string-class="),
3336sepd1("fconstexpr-backtrace-limit"),
3337joinpd1("fconstexpr-backtrace-limit="),
3338sepd1("fconstexpr-depth"),
3339joinpd1("fconstexpr-depth="),
3340sepd1("fconstexpr-steps"),
3341joinpd1("fconstexpr-steps="),
3342flagpd1("fconvergent-functions"),
3343joinpd1("fconvert="),
3344flagpd1("fcoroutines-ts"),
3345flagpd1("fcoverage-mapping"),
3346joinpd1("fcrash-diagnostics-dir="),
3347flagpd1("fcreate-profile"),
3348flagpd1("fcs-profile-generate"),
3349joinpd1("fcs-profile-generate="),
3350flagpd1("fcuda-allow-variadic-functions"),
3351flagpd1("fcuda-approx-transcendentals"),
3352flagpd1("fcuda-flush-denormals-to-zero"),
3353sepd1("fcuda-include-gpubinary"),
3354flagpd1("fcuda-is-device"),
3355flagpd1("fcuda-short-ptr"),
3356flagpd1("fcxx-exceptions"),
3357flagpd1("fcxx-modules"),
3358flagpd1("fc++-static-destructors"),
3359flagpd1("fdata-sections"),
3360sepd1("fdebug-compilation-dir"),
3361joinpd1("fdebug-compilation-dir="),
3362joinpd1("fdebug-default-version="),
3363flagpd1("fdebug-info-for-profiling"),
3364flagpd1("fdebug-macro"),
3365flagpd1("fdebug-pass-arguments"),
3366flagpd1("fdebug-pass-manager"),
3367flagpd1("fdebug-pass-structure"),
3368joinpd1("fdebug-prefix-map="),
3369flagpd1("fdebug-ranges-base-address"),
3370flagpd1("fdebug-types-section"),
3371flagpd1("fdebugger-cast-result-to-id"),
3372flagpd1("fdebugger-objc-literal"),
3373flagpd1("fdebugger-support"),
3374flagpd1("fdeclare-opencl-builtins"),
3375flagpd1("fdeclspec"),
3376joinpd1("fdefault-calling-conv="),
3377flagpd1("fdelayed-template-parsing"),
3378flagpd1("fdelete-null-pointer-checks"),
3379joinpd1("fdenormal-fp-math="),
3380joinpd1("fdepfile-entry="),
3381flagpd1("fdeprecated-macro"),
3382flagpd1("fdiagnostics-absolute-paths"),
3383flagpd1("fdiagnostics-color"),
3384joinpd1("fdiagnostics-color="),
3385flagpd1("fdiagnostics-fixit-info"),
3386sepd1("fdiagnostics-format"),
3387joinpd1("fdiagnostics-format="),
3388joinpd1("fdiagnostics-hotness-threshold="),
3389flagpd1("fdiagnostics-parseable-fixits"),
3390flagpd1("fdiagnostics-print-source-range-info"),
3391sepd1("fdiagnostics-show-category"),
3392joinpd1("fdiagnostics-show-category="),
3393flagpd1("fdiagnostics-show-hotness"),
3394joinpd1("fdiagnostics-show-location="),
3395flagpd1("fdiagnostics-show-note-include-stack"),
3396flagpd1("fdiagnostics-show-option"),
3397flagpd1("fdiagnostics-show-template-tree"),
3398flagpd1("fdigraphs"),
3399flagpd1("fdisable-module-hash"),
3400flagpd1("fdiscard-value-names"),
3401flagpd1("fdollars-in-identifiers"),
3402flagpd1("fdouble-square-bracket-attributes"),
3403flagpd1("fdump-record-layouts"),
3404flagpd1("fdump-record-layouts-simple"),
3405flagpd1("fdump-vtable-layouts"),
3406flagpd1("fdwarf2-cfi-asm"),
3407flagpd1("fdwarf-directory-asm"),
3408flagpd1("fdwarf-exceptions"),
3409flagpd1("felide-constructors"),
3410flagpd1("feliminate-unused-debug-symbols"),
3411flagpd1("fembed-bitcode"),
3412joinpd1("fembed-bitcode="),
3413flagpd1("fembed-bitcode-marker"),
3414flagpd1("femit-all-decls"),
3415flagpd1("femit-coverage-data"),
3416flagpd1("femit-coverage-notes"),
3417flagpd1("femit-debug-entry-values"),
3418flagpd1("femulated-tls"),
3419flagpd1("fencode-extended-block-signature"),
3420joinpd1("fencoding="),
3421sepd1("ferror-limit"),
3422joinpd1("ferror-limit="),
3423flagpd1("fescaping-block-tail-calls"),
3424flagpd1("fexceptions"),
3425joinpd1("fexcess-precision="),
3426joinpd1("fexec-charset="),
3427flagpd1("fexperimental-isel"),
3428flagpd1("fexperimental-new-constant-interpreter"),
3429flagpd1("fexperimental-new-pass-manager"),
3430joinpd1("fextdirs="),
3431flagpd1("fexternc-nounwind"),
3432flagpd1("ffake-address-space-map"),
3433flagpd1("ffast-math"),
3434joinpd1("ffile-prefix-map="),
3435flagpd1("ffine-grained-bitfield-accesses"),
3436flagpd1("ffinite-math-only"),
3437joinpd1("ffixed-line-length-"),
3438flagpd1("ffixed-point"),
3439flagpd1("ffixed-r19"),
3440flagpd1("ffixed-r9"),
3441flagpd1("ffixed-x1"),
3442flagpd1("ffixed-x10"),
3443flagpd1("ffixed-x11"),
3444flagpd1("ffixed-x12"),
3445flagpd1("ffixed-x13"),
3446flagpd1("ffixed-x14"),
3447flagpd1("ffixed-x15"),
3448flagpd1("ffixed-x16"),
3449flagpd1("ffixed-x17"),
3450flagpd1("ffixed-x18"),
3451flagpd1("ffixed-x19"),
3452flagpd1("ffixed-x2"),
3453flagpd1("ffixed-x20"),
3454flagpd1("ffixed-x21"),
3455flagpd1("ffixed-x22"),
3456flagpd1("ffixed-x23"),
3457flagpd1("ffixed-x24"),
3458flagpd1("ffixed-x25"),
3459flagpd1("ffixed-x26"),
3460flagpd1("ffixed-x27"),
3461flagpd1("ffixed-x28"),
3462flagpd1("ffixed-x29"),
3463flagpd1("ffixed-x3"),
3464flagpd1("ffixed-x30"),
3465flagpd1("ffixed-x31"),
3466flagpd1("ffixed-x4"),
3467flagpd1("ffixed-x5"),
3468flagpd1("ffixed-x6"),
3469flagpd1("ffixed-x7"),
3470flagpd1("ffixed-x8"),
3471flagpd1("ffixed-x9"),
3472flagpd1("ffor-scope"),
3473flagpd1("fforbid-guard-variables"),
3474flagpd1("fforce-dwarf-frame"),
3475flagpd1("fforce-emit-vtables"),
3476flagpd1("fforce-enable-int128"),
3477joinpd1("ffp-contract="),
3478joinpd1("ffp-exception-behavior="),
3479joinpd1("ffp-model="),
3480joinpd1("ffpe-trap="),
3481joinpd1("ffree-line-length-"),
3482flagpd1("ffreestanding"),
3483flagpd1("ffunction-sections"),
3484flagpd1("fgnu89-inline"),
3485flagpd1("fgnu-inline-asm"),
3486flagpd1("fgnu-keywords"),
3487flagpd1("fgnu-runtime"),
3488joinpd1("fgnuc-version="),
3489flagpd1("fgpu-allow-device-init"),
3490flagpd1("fgpu-rdc"),
3491flagpd1("fheinous-gnu-extensions"),
3492flagpd1("fhip-dump-offload-linker-script"),
3493flagpd1("fhip-new-launch-api"),
3494flagpd1("fhonor-infinities"),
3495flagpd1("fhonor-nans"),
3496flagpd1("fhosted"),
3497sepd1("filelist"),
3498sepd1("filetype"),
3499flagpd1("fimplicit-module-maps"),
3500flagpd1("fimplicit-modules"),
3501flagpd1("finclude-default-header"),
3502joinpd1("finit-character="),
3503joinpd1("finit-integer="),
3504joinpd1("finit-logical="),
3505joinpd1("finit-real="),
3506flagpd1("finline"),
3507flagpd1("finline-functions"),
3508flagpd1("finline-hint-functions"),
3509joinpd1("finline-limit="),
3510flagpd1("finline-limit"),
3511flagpd1("fno-inline-limit"),
3512joinpd1("finput-charset="),
3513flagpd1("finstrument-function-entry-bare"),
3514flagpd1("finstrument-functions"),
3515flagpd1("finstrument-functions-after-inlining"),
3516flagpd1("fintegrated-as"),
3517flagpd1("fintegrated-cc1"),
3518flagpd1("fix-only-warnings"),
3519flagpd1("fix-what-you-can"),
3520flagpd1("ffixed-form"),
3521flagpd1("fno-fixed-form"),
3522flagpd1("fixit"),
3523joinpd1("fixit="),
3524flagpd1("fixit-recompile"),
3525flagpd1("fixit-to-temporary"),
3526flagpd1("fjump-tables"),
3527flagpd1("fkeep-static-consts"),
3528flagpd1("flat_namespace"),
3529flagpd1("flax-vector-conversions"),
3530joinpd1("flax-vector-conversions="),
3531flagpd1("flimit-debug-info"),
3532joinpd1("flimited-precision="),
3533flagpd1("ffloat-store"),
3534flagpd1("fno-float-store"),
3535flagpd1("flto"),
3536joinpd1("flto="),
3537joinpd1("flto-jobs="),
3538flagpd1("flto-unit"),
3539flagpd1("flto-visibility-public-std"),
3540sepd1("fmacro-backtrace-limit"),
3541joinpd1("fmacro-backtrace-limit="),
3542joinpd1("fmacro-prefix-map="),
3543flagpd1("fmath-errno"),
3544joinpd1("fmax-array-constructor="),
3545joinpd1("fmax-errors="),
3546joinpd1("fmax-stack-var-size="),
3547joinpd1("fmax-subrecord-length="),
3548joinpd1("fmax-type-align="),
3549flagpd1("fmerge-all-constants"),
3550flagpd1("fmerge-functions"),
3551sepd1("fmessage-length"),
3552joinpd1("fmessage-length="),
3553sepd1("fmodule-feature"),
3554joinpd1("fmodule-file="),
3555flagpd1("fmodule-file-deps"),
3556joinpd1("fmodule-format="),
3557sepd1("fmodule-implementation-of"),
3558joinpd1("fmodule-map-file="),
3559flagpd1("fmodule-map-file-home-is-cwd"),
3560flagpd1("fmodule-maps"),
3561sepd1("fmodule-name"),
3562joinpd1("fmodule-name="),
3563flagpd1("fmodules"),
3564joinpd1("fmodules-cache-path="),
3565flagpd1("fmodules-codegen"),
3566flagpd1("fmodules-debuginfo"),
3567flagpd1("fmodules-decluse"),
3568flagpd1("fmodules-disable-diagnostic-validation"),
3569joinpd1("fmodules-embed-all-files"),
3570joinpd1("fmodules-embed-file="),
3571flagpd1("fmodules-hash-content"),
3572joinpd1("fmodules-ignore-macro="),
3573flagpd1("fmodules-local-submodule-visibility"),
3574joinpd1("fmodules-prune-after="),
3575joinpd1("fmodules-prune-interval="),
3576flagpd1("fmodules-search-all"),
3577flagpd1("fmodules-strict-context-hash"),
3578flagpd1("fmodules-strict-decluse"),
3579flagpd1("fmodules-ts"),
3580sepd1("fmodules-user-build-path"),
3581flagpd1("fmodules-validate-input-files-content"),
3582flagpd1("fmodules-validate-once-per-build-session"),
3583flagpd1("fmodules-validate-system-headers"),
3584flagpd1("fms-compatibility"),
3585joinpd1("fms-compatibility-version="),
3586flagpd1("fms-extensions"),
3587joinpd1("fms-memptr-rep="),
3588flagpd1("fms-volatile"),
3589joinpd1("fmsc-version="),
3590flagpd1("fmudflap"),
3591flagpd1("fmudflapth"),
3592flagpd1("fnative-half-arguments-and-returns"),
3593flagpd1("fnative-half-type"),
3594flagpd1("fnested-functions"),
3595joinpd1("fnew-alignment="),
3596flagpd1("fnext-runtime"),
3597flagpd1("fno-PIC"),
3598flagpd1("fno-PIE"),
3599flagpd1("fno-access-control"),
3600flagpd1("fno-addrsig"),
3601flagpd1("fno-align-functions"),
3602flagpd1("fno-aligned-allocation"),
3603flagpd1("fno-allow-editor-placeholders"),
3604flagpd1("fno-altivec"),
3605flagpd1("fno-apple-pragma-pack"),
3606flagpd1("fno-application-extension"),
3607flagpd1("fno-asm"),
3608flagpd1("fno-asm-blocks"),
3609flagpd1("fno-associative-math"),
3610flagpd1("fno-assume-sane-operator-new"),
3611flagpd1("fno-asynchronous-unwind-tables"),
3612flagpd1("fno-auto-profile"),
3613flagpd1("fno-auto-profile-accurate"),
3614flagpd1("fno-autolink"),
3615flagpd1("fno-bitfield-type-align"),
3616flagpd1("fno-blocks"),
3617flagpd1("fno-borland-extensions"),
3618flagpd1("fno-builtin"),
3619joinpd1("fno-builtin-"),
3620flagpd1("fno-caret-diagnostics"),
3621flagpd1("fno-char8_t"),
3622flagpd1("fno-color-diagnostics"),
3623flagpd1("fno-common"),
3624flagpd1("fno-complete-member-pointers"),
3625flagpd1("fno-concept-satisfaction-caching"),
3626flagpd1("fno-const-strings"),
3627flagpd1("fno-constant-cfstrings"),
3628flagpd1("fno-coroutines-ts"),
3629flagpd1("fno-coverage-mapping"),
3630flagpd1("fno-crash-diagnostics"),
3631flagpd1("fno-cuda-approx-transcendentals"),
3632flagpd1("fno-cuda-flush-denormals-to-zero"),
3633flagpd1("fno-cuda-host-device-constexpr"),
3634flagpd1("fno-cuda-short-ptr"),
3635flagpd1("fno-cxx-exceptions"),
3636flagpd1("fno-cxx-modules"),
3637flagpd1("fno-c++-static-destructors"),
3638flagpd1("fno-data-sections"),
3639flagpd1("fno-debug-info-for-profiling"),
3640flagpd1("fno-debug-macro"),
3641flagpd1("fno-debug-pass-manager"),
3642flagpd1("fno-debug-ranges-base-address"),
3643flagpd1("fno-debug-types-section"),
3644flagpd1("fno-declspec"),
3645flagpd1("fno-delayed-template-parsing"),
3646flagpd1("fno-delete-null-pointer-checks"),
3647flagpd1("fno-deprecated-macro"),
3648flagpd1("fno-diagnostics-color"),
3649flagpd1("fno-diagnostics-fixit-info"),
3650flagpd1("fno-diagnostics-show-hotness"),
3651flagpd1("fno-diagnostics-show-note-include-stack"),
3652flagpd1("fno-diagnostics-show-option"),
3653flagpd1("fno-diagnostics-use-presumed-location"),
3654flagpd1("fno-digraphs"),
3655flagpd1("fno-discard-value-names"),
3656flagpd1("fno-dllexport-inlines"),
3657flagpd1("fno-dollars-in-identifiers"),
3658flagpd1("fno-double-square-bracket-attributes"),
3659flagpd1("fno-dwarf2-cfi-asm"),
3660flagpd1("fno-dwarf-directory-asm"),
3661flagpd1("fno-elide-constructors"),
3662flagpd1("fno-elide-type"),
3663flagpd1("fno-eliminate-unused-debug-symbols"),
3664flagpd1("fno-emulated-tls"),
3665flagpd1("fno-escaping-block-tail-calls"),
3666flagpd1("fno-exceptions"),
3667flagpd1("fno-experimental-isel"),
3668flagpd1("fno-experimental-new-pass-manager"),
3669flagpd1("fno-fast-math"),
3670flagpd1("fno-fine-grained-bitfield-accesses"),
3671flagpd1("fno-finite-math-only"),
3672flagpd1("fno-fixed-point"),
3673flagpd1("fno-for-scope"),
3674flagpd1("fno-force-dwarf-frame"),
3675flagpd1("fno-force-emit-vtables"),
3676flagpd1("fno-force-enable-int128"),
3677flagpd1("fno-function-sections"),
3678flagpd1("fno-gnu89-inline"),
3679flagpd1("fno-gnu-inline-asm"),
3680flagpd1("fno-gnu-keywords"),
3681flagpd1("fno-gpu-allow-device-init"),
3682flagpd1("fno-gpu-rdc"),
3683flagpd1("fno-hip-new-launch-api"),
3684flagpd1("fno-honor-infinities"),
3685flagpd1("fno-honor-nans"),
3686flagpd1("fno-implicit-module-maps"),
3687flagpd1("fno-implicit-modules"),
3688flagpd1("fno-inline"),
3689flagpd1("fno-inline-functions"),
3690flagpd1("fno-integrated-as"),
3691flagpd1("fno-integrated-cc1"),
3692flagpd1("fno-jump-tables"),
3693flagpd1("fno-lax-vector-conversions"),
3694flagpd1("fno-limit-debug-info"),
3695flagpd1("fno-lto"),
3696flagpd1("fno-lto-unit"),
3697flagpd1("fno-math-builtin"),
3698flagpd1("fno-math-errno"),
3699flagpd1("fno-max-type-align"),
3700flagpd1("fno-merge-all-constants"),
3701flagpd1("fno-module-file-deps"),
3702flagpd1("fno-module-maps"),
3703flagpd1("fno-modules"),
3704flagpd1("fno-modules-decluse"),
3705flagpd1("fno-modules-error-recovery"),
3706flagpd1("fno-modules-global-index"),
3707flagpd1("fno-modules-search-all"),
3708flagpd1("fno-strict-modules-decluse"),
3709flagpd1("fno_modules-validate-input-files-content"),
3710flagpd1("fno-modules-validate-system-headers"),
3711flagpd1("fno-ms-compatibility"),
3712flagpd1("fno-ms-extensions"),
3713flagpd1("fno-objc-arc"),
3714flagpd1("fno-objc-arc-exceptions"),
3715flagpd1("fno-objc-convert-messages-to-runtime-calls"),
3716flagpd1("fno-objc-exceptions"),
3717flagpd1("fno-objc-infer-related-result-type"),
3718flagpd1("fno-objc-legacy-dispatch"),
3719flagpd1("fno-objc-nonfragile-abi"),
3720flagpd1("fno-objc-weak"),
3721flagpd1("fno-omit-frame-pointer"),
3722flagpd1("fno-openmp"),
3723flagpd1("fno-openmp-cuda-force-full-runtime"),
3724flagpd1("fno-openmp-cuda-mode"),
3725flagpd1("fno-openmp-optimistic-collapse"),
3726flagpd1("fno-openmp-simd"),
3727flagpd1("fno-operator-names"),
3728flagpd1("fno-optimize-sibling-calls"),
3729flagpd1("fno-pack-struct"),
3730flagpd1("fno-padding-on-unsigned-fixed-point"),
3731flagpd1("fno-pascal-strings"),
3732flagpd1("fno-pch-timestamp"),
3733flagpd1("fno_pch-validate-input-files-content"),
3734flagpd1("fno-pic"),
3735flagpd1("fno-pie"),
3736flagpd1("fno-plt"),
3737flagpd1("fno-preserve-as-comments"),
3738flagpd1("fno-profile-arcs"),
3739flagpd1("fno-profile-generate"),
3740flagpd1("fno-profile-instr-generate"),
3741flagpd1("fno-profile-instr-use"),
3742flagpd1("fno-profile-sample-accurate"),
3743flagpd1("fno-profile-sample-use"),
3744flagpd1("fno-profile-use"),
3745flagpd1("fno-reciprocal-math"),
3746flagpd1("fno-record-command-line"),
3747flagpd1("fno-register-global-dtors-with-atexit"),
3748flagpd1("fno-relaxed-template-template-args"),
3749flagpd1("fno-reroll-loops"),
3750flagpd1("fno-rewrite-imports"),
3751flagpd1("fno-rewrite-includes"),
3752flagpd1("fno-ropi"),
3753flagpd1("fno-rounding-math"),
3754flagpd1("fno-rtlib-add-rpath"),
3755flagpd1("fno-rtti"),
3756flagpd1("fno-rtti-data"),
3757flagpd1("fno-rwpi"),
3758.{
3759 .name = "fno-sanitize=",
3760 .syntax = .comma_joined,
3761 .zig_equivalent = .other,
3762 .pd1 = true,
3763 .pd2 = false,
3764 .psl = false,
3765},
3766flagpd1("fno-sanitize-address-poison-custom-array-cookie"),
3767flagpd1("fno-sanitize-address-use-after-scope"),
3768flagpd1("fno-sanitize-address-use-odr-indicator"),
3769flagpd1("fno-sanitize-blacklist"),
3770flagpd1("fno-sanitize-cfi-canonical-jump-tables"),
3771flagpd1("fno-sanitize-cfi-cross-dso"),
3772.{
3773 .name = "fno-sanitize-coverage=",
3774 .syntax = .comma_joined,
3775 .zig_equivalent = .other,
3776 .pd1 = true,
3777 .pd2 = false,
3778 .psl = false,
3779},
3780flagpd1("fno-sanitize-link-c++-runtime"),
3781flagpd1("fno-sanitize-link-runtime"),
3782flagpd1("fno-sanitize-memory-track-origins"),
3783flagpd1("fno-sanitize-memory-use-after-dtor"),
3784flagpd1("fno-sanitize-minimal-runtime"),
3785flagpd1("fno-sanitize-recover"),
3786.{
3787 .name = "fno-sanitize-recover=",
3788 .syntax = .comma_joined,
3789 .zig_equivalent = .other,
3790 .pd1 = true,
3791 .pd2 = false,
3792 .psl = false,
3793},
3794flagpd1("fno-sanitize-stats"),
3795flagpd1("fno-sanitize-thread-atomics"),
3796flagpd1("fno-sanitize-thread-func-entry-exit"),
3797flagpd1("fno-sanitize-thread-memory-access"),
3798.{
3799 .name = "fno-sanitize-trap=",
3800 .syntax = .comma_joined,
3801 .zig_equivalent = .other,
3802 .pd1 = true,
3803 .pd2 = false,
3804 .psl = false,
3805},
3806flagpd1("fno-sanitize-undefined-trap-on-error"),
3807flagpd1("fno-save-optimization-record"),
3808flagpd1("fno-short-enums"),
3809flagpd1("fno-short-wchar"),
3810flagpd1("fno-show-column"),
3811flagpd1("fno-show-source-location"),
3812flagpd1("fno-signaling-math"),
3813flagpd1("fno-signed-char"),
3814flagpd1("fno-signed-wchar"),
3815flagpd1("fno-signed-zeros"),
3816flagpd1("fno-sized-deallocation"),
3817flagpd1("fno-slp-vectorize"),
3818flagpd1("fno-spell-checking"),
3819flagpd1("fno-split-dwarf-inlining"),
3820flagpd1("fno-split-lto-unit"),
3821flagpd1("fno-stack-protector"),
3822flagpd1("fno-stack-size-section"),
3823flagpd1("fno-standalone-debug"),
3824flagpd1("fno-strict-aliasing"),
3825flagpd1("fno-strict-enums"),
3826flagpd1("fno-strict-float-cast-overflow"),
3827flagpd1("fno-strict-overflow"),
3828flagpd1("fno-strict-return"),
3829flagpd1("fno-strict-vtable-pointers"),
3830flagpd1("fno-struct-path-tbaa"),
3831flagpd1("fno-temp-file"),
3832flagpd1("fno-threadsafe-statics"),
3833flagpd1("fno-trapping-math"),
3834flagpd1("fno-trigraphs"),
3835flagpd1("fno-unique-section-names"),
3836flagpd1("fno-unit-at-a-time"),
3837flagpd1("fno-unroll-loops"),
3838flagpd1("fno-unsafe-math-optimizations"),
3839flagpd1("fno-unsigned-char"),
3840flagpd1("fno-unwind-tables"),
3841flagpd1("fno-use-cxa-atexit"),
3842flagpd1("fno-use-init-array"),
3843flagpd1("fno-use-line-directives"),
3844flagpd1("fno-validate-pch"),
3845flagpd1("fno-var-tracking"),
3846flagpd1("fno-vectorize"),
3847flagpd1("fno-verbose-asm"),
3848flagpd1("fno-virtual-function_elimination"),
3849flagpd1("fno-wchar"),
3850flagpd1("fno-whole-program-vtables"),
3851flagpd1("fno-working-directory"),
3852flagpd1("fno-wrapv"),
3853flagpd1("fno-zero-initialized-in-bss"),
3854flagpd1("fno-zvector"),
3855flagpd1("fnoopenmp-relocatable-target"),
3856flagpd1("fnoopenmp-use-tls"),
3857flagpd1("fno-xray-always-emit-customevents"),
3858flagpd1("fno-xray-always-emit-typedevents"),
3859flagpd1("fno-xray-instrument"),
3860flagpd1("fnoxray-link-deps"),
3861joinpd1("fobjc-abi-version="),
3862flagpd1("fobjc-arc"),
3863joinpd1("fobjc-arc-cxxlib="),
3864flagpd1("fobjc-arc-exceptions"),
3865flagpd1("fobjc-atdefs"),
3866flagpd1("fobjc-call-cxx-cdtors"),
3867flagpd1("fobjc-convert-messages-to-runtime-calls"),
3868joinpd1("fobjc-dispatch-method="),
3869flagpd1("fobjc-exceptions"),
3870flagpd1("fobjc-gc"),
3871flagpd1("fobjc-gc-only"),
3872flagpd1("fobjc-infer-related-result-type"),
3873flagpd1("fobjc-legacy-dispatch"),
3874flagpd1("fobjc-link-runtime"),
3875flagpd1("fobjc-new-property"),
3876flagpd1("fobjc-nonfragile-abi"),
3877joinpd1("fobjc-nonfragile-abi-version="),
3878joinpd1("fobjc-runtime="),
3879flagpd1("fobjc-runtime-has-weak"),
3880flagpd1("fobjc-sender-dependent-dispatch"),
3881flagpd1("fobjc-subscripting-legacy-runtime"),
3882flagpd1("fobjc-weak"),
3883flagpd1("fomit-frame-pointer"),
3884flagpd1("fopenmp"),
3885joinpd1("fopenmp="),
3886joinpd1("fopenmp-cuda-blocks-per-sm="),
3887flagpd1("fopenmp-cuda-force-full-runtime"),
3888flagpd1("fopenmp-cuda-mode"),
3889joinpd1("fopenmp-cuda-number-of-sm="),
3890joinpd1("fopenmp-cuda-teams-reduction-recs-num="),
3891flagpd1("fopenmp-enable-irbuilder"),
3892sepd1("fopenmp-host-ir-file-path"),
3893flagpd1("fopenmp-is-device"),
3894flagpd1("fopenmp-optimistic-collapse"),
3895flagpd1("fopenmp-relocatable-target"),
3896flagpd1("fopenmp-simd"),
3897.{
3898 .name = "fopenmp-targets=",
3899 .syntax = .comma_joined,
3900 .zig_equivalent = .other,
3901 .pd1 = true,
3902 .pd2 = false,
3903 .psl = false,
3904},
3905flagpd1("fopenmp-use-tls"),
3906joinpd1("fopenmp-version="),
3907sepd1("foperator-arrow-depth"),
3908joinpd1("foperator-arrow-depth="),
3909joinpd1("foptimization-record-file="),
3910joinpd1("foptimization-record-passes="),
3911flagpd1("foptimize-sibling-calls"),
3912flagpd1("force_cpusubtype_ALL"),
3913flagpd1("force_flat_namespace"),
3914sepd1("force_load"),
3915joinpd1("fforce-addr"),
3916flagpd1("forder-file-instrumentation"),
3917joinpd1("foutput-class-dir="),
3918joinpd1("foverride-record-layout="),
3919flagpd1("fpack-struct"),
3920joinpd1("fpack-struct="),
3921flagpd1("fpadding-on-unsigned-fixed-point"),
3922flagpd1("fparse-all-comments"),
3923flagpd1("fpascal-strings"),
3924joinpd1("fpass-plugin="),
3925joinpd1("fpatchable-function-entry="),
3926joinpd1("fpatchable-function-entry-offset="),
3927flagpd1("fpcc-struct-return"),
3928flagpd1("fpch-preprocess"),
3929flagpd1("fpch-validate-input-files-content"),
3930flagpd1("fpic"),
3931flagpd1("fpie"),
3932flagpd1("fplt"),
3933joinpd1("fplugin="),
3934joinpd1("fprebuilt-module-path="),
3935flagpd1("fpreserve-as-comments"),
3936flagpd1("fpreserve-vec3-type"),
3937flagpd1("fprofile-arcs"),
3938joinpd1("fprofile-dir="),
3939joinpd1("fprofile-exclude-files="),
3940joinpd1("fprofile-filter-files="),
3941flagpd1("fprofile-generate"),
3942joinpd1("fprofile-generate="),
3943flagpd1("fprofile-instr-generate"),
3944joinpd1("fprofile-instr-generate="),
3945flagpd1("fprofile-instr-use"),
3946joinpd1("fprofile-instr-use="),
3947joinpd1("fprofile-instrument="),
3948joinpd1("fprofile-instrument-path="),
3949joinpd1("fprofile-instrument-use-path="),
3950sepd1("fprofile-remapping-file"),
3951joinpd1("fprofile-remapping-file="),
3952flagpd1("fprofile-sample-accurate"),
3953flagpd1("fprofile-sample-use"),
3954joinpd1("fprofile-sample-use="),
3955flagpd1("fprofile-use"),
3956joinpd1("fprofile-use="),
3957sepd1("framework"),
3958joinpd1("frandom-seed="),
3959flagpd1("freciprocal-math"),
3960flagpd1("frecord-command-line"),
3961joinpd1("frecord-marker="),
3962flagpd1("ffree-form"),
3963flagpd1("fno-free-form"),
3964flagpd1("freg-struct-return"),
3965flagpd1("fregister-global-dtors-with-atexit"),
3966flagpd1("frelaxed-template-template-args"),
3967flagpd1("freroll-loops"),
3968flagpd1("fretain-comments-from-system-headers"),
3969flagpd1("frewrite-imports"),
3970flagpd1("frewrite-includes"),
3971sepd1("frewrite-map-file"),
3972joinpd1("frewrite-map-file="),
3973flagpd1("ffriend-injection"),
3974flagpd1("fno-friend-injection"),
3975flagpd1("ffrontend-optimize"),
3976flagpd1("fno-frontend-optimize"),
3977flagpd1("fropi"),
3978flagpd1("frounding-math"),
3979flagpd1("frtlib-add-rpath"),
3980flagpd1("frtti"),
3981flagpd1("frwpi"),
3982.{
3983 .name = "fsanitize=",
3984 .syntax = .comma_joined,
3985 .zig_equivalent = .other,
3986 .pd1 = true,
3987 .pd2 = false,
3988 .psl = false,
3989},
3990joinpd1("fsanitize-address-field-padding="),
3991flagpd1("fsanitize-address-globals-dead-stripping"),
3992flagpd1("fsanitize-address-poison-custom-array-cookie"),
3993flagpd1("fsanitize-address-use-after-scope"),
3994flagpd1("fsanitize-address-use-odr-indicator"),
3995joinpd1("fsanitize-blacklist="),
3996flagpd1("fsanitize-cfi-canonical-jump-tables"),
3997flagpd1("fsanitize-cfi-cross-dso"),
3998flagpd1("fsanitize-cfi-icall-generalize-pointers"),
3999.{
4000 .name = "fsanitize-coverage=",
4001 .syntax = .comma_joined,
4002 .zig_equivalent = .other,
4003 .pd1 = true,
4004 .pd2 = false,
4005 .psl = false,
4006},
4007flagpd1("fsanitize-coverage-8bit-counters"),
4008flagpd1("fsanitize-coverage-indirect-calls"),
4009flagpd1("fsanitize-coverage-inline-8bit-counters"),
4010flagpd1("fsanitize-coverage-no-prune"),
4011flagpd1("fsanitize-coverage-pc-table"),
4012flagpd1("fsanitize-coverage-stack-depth"),
4013flagpd1("fsanitize-coverage-trace-bb"),
4014flagpd1("fsanitize-coverage-trace-cmp"),
4015flagpd1("fsanitize-coverage-trace-div"),
4016flagpd1("fsanitize-coverage-trace-gep"),
4017flagpd1("fsanitize-coverage-trace-pc"),
4018flagpd1("fsanitize-coverage-trace-pc-guard"),
4019joinpd1("fsanitize-coverage-type="),
4020joinpd1("fsanitize-hwaddress-abi="),
4021flagpd1("fsanitize-link-c++-runtime"),
4022flagpd1("fsanitize-link-runtime"),
4023flagpd1("fsanitize-memory-track-origins"),
4024joinpd1("fsanitize-memory-track-origins="),
4025flagpd1("fsanitize-memory-use-after-dtor"),
4026flagpd1("fsanitize-minimal-runtime"),
4027flagpd1("fsanitize-recover"),
4028.{
4029 .name = "fsanitize-recover=",
4030 .syntax = .comma_joined,
4031 .zig_equivalent = .other,
4032 .pd1 = true,
4033 .pd2 = false,
4034 .psl = false,
4035},
4036flagpd1("fsanitize-stats"),
4037joinpd1("fsanitize-system-blacklist="),
4038flagpd1("fsanitize-thread-atomics"),
4039flagpd1("fsanitize-thread-func-entry-exit"),
4040flagpd1("fsanitize-thread-memory-access"),
4041.{
4042 .name = "fsanitize-trap=",
4043 .syntax = .comma_joined,
4044 .zig_equivalent = .other,
4045 .pd1 = true,
4046 .pd2 = false,
4047 .psl = false,
4048},
4049joinpd1("fsanitize-undefined-strip-path-components="),
4050flagpd1("fsanitize-undefined-trap-on-error"),
4051flagpd1("fsave-optimization-record"),
4052joinpd1("fsave-optimization-record="),
4053flagpd1("fseh-exceptions"),
4054flagpd1("fshort-enums"),
4055flagpd1("fshort-wchar"),
4056flagpd1("fshow-column"),
4057joinpd1("fshow-overloads="),
4058flagpd1("fshow-source-location"),
4059flagpd1("fsignaling-math"),
4060flagpd1("fsigned-bitfields"),
4061flagpd1("fsigned-char"),
4062flagpd1("fsigned-wchar"),
4063flagpd1("fsigned-zeros"),
4064flagpd1("fsized-deallocation"),
4065flagpd1("fsjlj-exceptions"),
4066flagpd1("fslp-vectorize"),
4067flagpd1("fspell-checking"),
4068sepd1("fspell-checking-limit"),
4069joinpd1("fspell-checking-limit="),
4070flagpd1("fsplit-dwarf-inlining"),
4071flagpd1("fsplit-lto-unit"),
4072flagpd1("fsplit-stack"),
4073flagpd1("fstack-protector"),
4074flagpd1("fstack-protector-all"),
4075flagpd1("fstack-protector-strong"),
4076flagpd1("fstack-size-section"),
4077flagpd1("fstandalone-debug"),
4078flagpd1("fstrict-aliasing"),
4079flagpd1("fstrict-enums"),
4080flagpd1("fstrict-float-cast-overflow"),
4081flagpd1("fstrict-overflow"),
4082flagpd1("fstrict-return"),
4083flagpd1("fstrict-vtable-pointers"),
4084flagpd1("fstruct-path-tbaa"),
4085flagpd1("fsycl-is-device"),
4086joinpd1("fsymbol-partition="),
4087flagpd1("fsyntax-only"),
4088sepd1("ftabstop"),
4089joinpd1("ftabstop="),
4090sepd1("ftemplate-backtrace-limit"),
4091joinpd1("ftemplate-backtrace-limit="),
4092sepd1("ftemplate-depth"),
4093joinpd1("ftemplate-depth-"),
4094joinpd1("ftemplate-depth="),
4095flagpd1("ftest-coverage"),
4096joinpd1("ftest-module-file-extension="),
4097joinpd1("fthin-link-bitcode="),
4098joinpd1("fthinlto-index="),
4099flagpd1("fthreadsafe-statics"),
4100flagpd1("ftime-report"),
4101flagpd1("ftime-trace"),
4102joinpd1("ftime-trace-granularity="),
4103joinpd1("ftls-model="),
4104joinpd1("ftrap-function="),
4105flagpd1("ftrapping-math"),
4106flagpd1("ftrapv"),
4107sepd1("ftrapv-handler"),
4108joinpd1("ftrapv-handler="),
4109flagpd1("ftrigraphs"),
4110joinpd1("ftrivial-auto-var-init="),
4111sepd1("ftype-visibility"),
4112sepd1("function-alignment"),
4113flagpd1("ffunction-attribute-list"),
4114flagpd1("fno-function-attribute-list"),
4115flagpd1("funique-section-names"),
4116flagpd1("funit-at-a-time"),
4117flagpd1("funknown-anytype"),
4118flagpd1("funroll-loops"),
4119flagpd1("funsafe-math-optimizations"),
4120flagpd1("funsigned-bitfields"),
4121flagpd1("funsigned-char"),
4122flagpd1("funwind-tables"),
4123flagpd1("fuse-cxa-atexit"),
4124flagpd1("fuse-init-array"),
4125joinpd1("fuse-ld="),
4126flagpd1("fuse-line-directives"),
4127flagpd1("fuse-register-sized-bitfield-access"),
4128flagpd1("fvalidate-ast-input-files-content"),
4129joinpd1("fveclib="),
4130flagpd1("fvectorize"),
4131flagpd1("fverbose-asm"),
4132flagpd1("fvirtual-function-elimination"),
4133sepd1("fvisibility"),
4134joinpd1("fvisibility="),
4135flagpd1("fvisibility-global-new-delete-hidden"),
4136flagpd1("fvisibility-inlines-hidden"),
4137flagpd1("fvisibility-ms-compat"),
4138flagpd1("fwasm-exceptions"),
4139joinpd1("fwchar-type="),
4140flagpd1("fwhole-program-vtables"),
4141flagpd1("fwrapv"),
4142flagpd1("fwritable-strings"),
4143flagpd1("fxray-always-emit-customevents"),
4144flagpd1("fxray-always-emit-typedevents"),
4145jspd1("fxray-always-instrument="),
4146jspd1("fxray-attr-list="),
4147jspd1("fxray-instruction-threshold"),
4148jspd1("fxray-instruction-threshold="),
4149flagpd1("fxray-instrument"),
4150jspd1("fxray-instrumentation-bundle="),
4151flagpd1("fxray-link-deps"),
4152jspd1("fxray-modes="),
4153jspd1("fxray-never-instrument="),
4154flagpd1("fzero-initialized-in-bss"),
4155flagpd1("fzvector"),
4156flagpd1("g0"),
4157flagpd1("g1"),
4158flagpd1("g2"),
4159flagpd1("g3"),
4160flagpd1("g"),
4161.{
4162 .name = "gcc-toolchain=",
4163 .syntax = .joined,
4164 .zig_equivalent = .other,
4165 .pd1 = false,
4166 .pd2 = true,
4167 .psl = false,
4168},
4169sepd1("gcc-toolchain"),
4170flagpd1("gcodeview"),
4171flagpd1("gcodeview-ghash"),
4172joinpd1("gcoff"),
4173flagpd1("gcolumn-info"),
4174flagpd1("fgcse-after-reload"),
4175flagpd1("fno-gcse-after-reload"),
4176flagpd1("fgcse"),
4177flagpd1("fno-gcse"),
4178flagpd1("fgcse-las"),
4179flagpd1("fno-gcse-las"),
4180flagpd1("fgcse-sm"),
4181flagpd1("fno-gcse-sm"),
4182flagpd1("gdwarf"),
4183flagpd1("gdwarf-2"),
4184flagpd1("gdwarf-3"),
4185flagpd1("gdwarf-4"),
4186flagpd1("gdwarf-5"),
4187flagpd1("gdwarf-aranges"),
4188flagpd1("gembed-source"),
4189sepd1("gen-cdb-fragment-path"),
4190flagpd1("gen-reproducer"),
4191flagpd1("gfull"),
4192flagpd1("ggdb"),
4193flagpd1("ggdb0"),
4194flagpd1("ggdb1"),
4195flagpd1("ggdb2"),
4196flagpd1("ggdb3"),
4197flagpd1("ggnu-pubnames"),
4198flagpd1("ginline-line-tables"),
4199flagpd1("gline-directives-only"),
4200flagpd1("gline-tables-only"),
4201flagpd1("glldb"),
4202flagpd1("gmlt"),
4203flagpd1("gmodules"),
4204flagpd1("gno-codeview-ghash"),
4205flagpd1("gno-column-info"),
4206flagpd1("gno-embed-source"),
4207flagpd1("gno-gnu-pubnames"),
4208flagpd1("gno-inline-line-tables"),
4209flagpd1("gno-pubnames"),
4210flagpd1("gno-record-command-line"),
4211flagpd1("gno-strict-dwarf"),
4212flagpd1("fgnu"),
4213flagpd1("fno-gnu"),
4214.{
4215 .name = "gpu-max-threads-per-block=",
4216 .syntax = .joined,
4217 .zig_equivalent = .other,
4218 .pd1 = false,
4219 .pd2 = true,
4220 .psl = false,
4221},
4222flagpd1("gpubnames"),
4223flagpd1("grecord-command-line"),
4224flagpd1("gsce"),
4225flagpd1("gsplit-dwarf"),
4226joinpd1("gsplit-dwarf="),
4227joinpd1("gstabs"),
4228flagpd1("gstrict-dwarf"),
4229flagpd1("gtoggle"),
4230flagpd1("gused"),
4231joinpd1("gvms"),
4232joinpd1("gxcoff"),
4233flagpd1("gz"),
4234joinpd1("gz="),
4235sepd1("header-include-file"),
4236joinpd1("headerpad_max_install_names"),
4237.{
4238 .name = "help",
4239 .syntax = .flag,
4240 .zig_equivalent = .other,
4241 .pd1 = true,
4242 .pd2 = true,
4243 .psl = false,
4244},
4245.{
4246 .name = "hip-device-lib=",
4247 .syntax = .joined,
4248 .zig_equivalent = .other,
4249 .pd1 = false,
4250 .pd2 = true,
4251 .psl = false,
4252},
4253.{
4254 .name = "hip-device-lib-path=",
4255 .syntax = .joined,
4256 .zig_equivalent = .other,
4257 .pd1 = false,
4258 .pd2 = true,
4259 .psl = false,
4260},
4261.{
4262 .name = "hip-link",
4263 .syntax = .flag,
4264 .zig_equivalent = .other,
4265 .pd1 = false,
4266 .pd2 = true,
4267 .psl = false,
4268},
4269jspd1("idirafter"),
4270jspd1("iframework"),
4271jspd1("iframeworkwithsysroot"),
4272.{
4273 .name = "imacros",
4274 .syntax = .joined_or_separate,
4275 .zig_equivalent = .other,
4276 .pd1 = true,
4277 .pd2 = true,
4278 .psl = false,
4279},
4280sepd1("image_base"),
4281flagpd1("fimplement-inlines"),
4282flagpd1("fno-implement-inlines"),
4283flagpd1("fimplicit-none"),
4284flagpd1("fno-implicit-none"),
4285flagpd1("fimplicit-templates"),
4286flagpd1("fno-implicit-templates"),
4287sepd1("imultilib"),
4288.{
4289 .name = "include",
4290 .syntax = .joined_or_separate,
4291 .zig_equivalent = .other,
4292 .pd1 = true,
4293 .pd2 = true,
4294 .psl = false,
4295},
4296sepd1("include-pch"),
4297flagpd1("index-header-map"),
4298sepd1("init"),
4299flagpd1("finit-local-zero"),
4300flagpd1("fno-init-local-zero"),
4301flagpd1("init-only"),
4302flagpd1("finline-functions-called-once"),
4303flagpd1("fno-inline-functions-called-once"),
4304flagpd1("finline-small-functions"),
4305flagpd1("fno-inline-small-functions"),
4306sepd1("install_name"),
4307flagpd1("finteger-4-integer-8"),
4308flagpd1("fno-integer-4-integer-8"),
4309jspd1("interface-stub-version="),
4310jspd1("internal-externc-isystem"),
4311jspd1("internal-isystem"),
4312flagpd1("fintrinsic-modules-path"),
4313flagpd1("fno-intrinsic-modules-path"),
4314flagpd1("fipa-cp"),
4315flagpd1("fno-ipa-cp"),
4316jspd1("iprefix"),
4317jspd1("iquote"),
4318jspd1("isysroot"),
4319jspd1("isystem"),
4320jspd1("isystem-after"),
4321jspd1("ivfsoverlay"),
4322flagpd1("fivopts"),
4323flagpd1("fno-ivopts"),
4324jspd1("iwithprefix"),
4325jspd1("iwithprefixbefore"),
4326jspd1("iwithsysroot"),
4327flagpd1("keep_private_externs"),
4328.{
4329 .name = "l",
4330 .syntax = .joined_or_separate,
4331 .zig_equivalent = .l,
4332 .pd1 = true,
4333 .pd2 = false,
4334 .psl = false,
4335},
4336sepd1("lazy_framework"),
4337sepd1("lazy_library"),
4338.{
4339 .name = "libomptarget-nvptx-path=",
4340 .syntax = .joined,
4341 .zig_equivalent = .other,
4342 .pd1 = false,
4343 .pd2 = true,
4344 .psl = false,
4345},
4346.{
4347 .name = "linker-option=",
4348 .syntax = .joined,
4349 .zig_equivalent = .other,
4350 .pd1 = false,
4351 .pd2 = true,
4352 .psl = false,
4353},
4354sepd1("load"),
4355flagpd1("m16"),
4356flagpd1("m32"),
4357flagpd1("m3dnow"),
4358flagpd1("m3dnowa"),
4359flagpd1("m64"),
4360flagpd1("m80387"),
4361joinpd1("mabi="),
4362flagpd1("mabi=ieeelongdouble"),
4363flagpd1("mabicalls"),
4364joinpd1("mabs="),
4365flagpd1("madx"),
4366flagpd1("maes"),
4367sepd1("main-file-name"),
4368.{
4369 .name = "malign-branch=",
4370 .syntax = .comma_joined,
4371 .zig_equivalent = .other,
4372 .pd1 = true,
4373 .pd2 = false,
4374 .psl = false,
4375},
4376joinpd1("malign-branch-boundary="),
4377joinpd1("malign-branch-prefix-size="),
4378flagpd1("malign-double"),
4379joinpd1("malign-functions="),
4380joinpd1("malign-jumps="),
4381joinpd1("malign-loops="),
4382flagpd1("maltivec"),
4383joinpd1("mamdgpu-debugger-abi="),
4384joinpd1("mappletvos-version-min="),
4385joinpd1("mappletvsimulator-version-min="),
4386joinpd1("march="),
4387flagpd1("marm"),
4388joinpd1("masm="),
4389flagpd1("masm-verbose"),
4390flagpd1("massembler-fatal-warnings"),
4391flagpd1("massembler-no-warn"),
4392flagpd1("matomics"),
4393flagpd1("mavx"),
4394flagpd1("mavx2"),
4395flagpd1("mavx512bf16"),
4396flagpd1("mavx512bitalg"),
4397flagpd1("mavx512bw"),
4398flagpd1("mavx512cd"),
4399flagpd1("mavx512dq"),
4400flagpd1("mavx512er"),
4401flagpd1("mavx512f"),
4402flagpd1("mavx512ifma"),
4403flagpd1("mavx512pf"),
4404flagpd1("mavx512vbmi"),
4405flagpd1("mavx512vbmi2"),
4406flagpd1("mavx512vl"),
4407flagpd1("mavx512vnni"),
4408flagpd1("mavx512vp2intersect"),
4409flagpd1("mavx512vpopcntdq"),
4410flagpd1("fmax-identifier-length"),
4411flagpd1("fno-max-identifier-length"),
4412flagpd1("mbackchain"),
4413flagpd1("mbig-endian"),
4414flagpd1("mbmi"),
4415flagpd1("mbmi2"),
4416flagpd1("mbranch-likely"),
4417joinpd1("mbranch-protection="),
4418flagpd1("mbranch-target-enforce"),
4419flagpd1("mbranches-within-32B-boundaries"),
4420flagpd1("mbulk-memory"),
4421flagpd1("mcheck-zero-division"),
4422flagpd1("mcldemote"),
4423flagpd1("mclflushopt"),
4424flagpd1("mclwb"),
4425flagpd1("mclzero"),
4426joinpd1("mcmodel="),
4427flagpd1("mcmodel=medany"),
4428flagpd1("mcmodel=medlow"),
4429flagpd1("mcmpb"),
4430flagpd1("mcmse"),
4431sepd1("mcode-model"),
4432flagpd1("mcode-object-v3"),
4433joinpd1("mcompact-branches="),
4434joinpd1("mconsole"),
4435flagpd1("mconstant-cfstrings"),
4436flagpd1("mconstructor-aliases"),
4437joinpd1("mcpu="),
4438flagpd1("mcpu=?"),
4439flagpd1("mcrbits"),
4440flagpd1("mcrc"),
4441flagpd1("mcumode"),
4442flagpd1("mcx16"),
4443sepd1("mdebug-pass"),
4444joinpd1("mdefault-build-attributes"),
4445flagpd1("mdirect-move"),
4446flagpd1("mdisable-tail-calls"),
4447joinpd1("mdll"),
4448flagpd1("mdouble-float"),
4449flagpd1("mdsp"),
4450flagpd1("mdspr2"),
4451joinpd1("mdynamic-no-pic"),
4452sepd1("meabi"),
4453flagpd1("membedded-data"),
4454flagpd1("menable-no-infs"),
4455flagpd1("menable-no-nans"),
4456flagpd1("menable-unsafe-fp-math"),
4457flagpd1("menqcmd"),
4458flagpd1("fmerge-constants"),
4459flagpd1("fno-merge-constants"),
4460flagpd1("mexception-handling"),
4461flagpd1("mexecute-only"),
4462flagpd1("mextern-sdata"),
4463flagpd1("mf16c"),
4464flagpd1("mfancy-math-387"),
4465flagpd1("mfentry"),
4466flagpd1("mfix-and-continue"),
4467flagpd1("mfix-cortex-a53-835769"),
4468flagpd1("mfloat128"),
4469sepd1("mfloat-abi"),
4470joinpd1("mfloat-abi="),
4471flagpd1("mfma"),
4472flagpd1("mfma4"),
4473flagpd1("mfp32"),
4474flagpd1("mfp64"),
4475sepd1("mfpmath"),
4476joinpd1("mfpmath="),
4477flagpd1("mfprnd"),
4478joinpd1("mfpu="),
4479flagpd1("mfpxx"),
4480joinpd1("mframe-pointer="),
4481flagpd1("mfsgsbase"),
4482flagpd1("mfxsr"),
4483flagpd1("mgeneral-regs-only"),
4484flagpd1("mgfni"),
4485flagpd1("mginv"),
4486flagpd1("mglibc"),
4487flagpd1("mglobal-merge"),
4488flagpd1("mgpopt"),
4489flagpd1("mhard-float"),
4490flagpd1("mhvx"),
4491joinpd1("mhvx="),
4492joinpd1("mhvx-length="),
4493flagpd1("mhtm"),
4494joinpd1("mhwdiv="),
4495joinpd1("mhwmult="),
4496flagpd1("miamcu"),
4497flagpd1("mieee-fp"),
4498flagpd1("mieee-rnd-near"),
4499flagpd1("migrate"),
4500flagpd1("no-finalize-removal"),
4501flagpd1("no-ns-alloc-error"),
4502flagpd1("mimplicit-float"),
4503joinpd1("mimplicit-it="),
4504flagpd1("mincremental-linker-compatible"),
4505joinpd1("mindirect-jump="),
4506flagpd1("minline-all-stringops"),
4507flagpd1("minvariant-function-descriptors"),
4508flagpd1("minvpcid"),
4509joinpd1("mios-simulator-version-min="),
4510joinpd1("mios-version-min="),
4511joinpd1("miphoneos-version-min="),
4512joinpd1("miphonesimulator-version-min="),
4513flagpd1("mips1"),
4514flagpd1("mips16"),
4515flagpd1("mips2"),
4516flagpd1("mips3"),
4517flagpd1("mips32"),
4518flagpd1("mips32r2"),
4519flagpd1("mips32r3"),
4520flagpd1("mips32r5"),
4521flagpd1("mips32r6"),
4522flagpd1("mips4"),
4523flagpd1("mips5"),
4524flagpd1("mips64"),
4525flagpd1("mips64r2"),
4526flagpd1("mips64r3"),
4527flagpd1("mips64r5"),
4528flagpd1("mips64r6"),
4529flagpd1("misel"),
4530flagpd1("mkernel"),
4531flagpd1("mldc1-sdc1"),
4532sepd1("mlimit-float-precision"),
4533sepd1("mlink-bitcode-file"),
4534sepd1("mlink-builtin-bitcode"),
4535sepd1("mlink-cuda-bitcode"),
4536joinpd1("mlinker-version="),
4537flagpd1("mlittle-endian"),
4538sepd1("mllvm"),
4539flagpd1("mlocal-sdata"),
4540flagpd1("mlong-calls"),
4541flagpd1("mlong-double-128"),
4542flagpd1("mlong-double-64"),
4543flagpd1("mlong-double-80"),
4544flagpd1("mlongcall"),
4545flagpd1("mlwp"),
4546flagpd1("mlzcnt"),
4547joinpd1("mmacos-version-min="),
4548joinpd1("mmacosx-version-min="),
4549flagpd1("mmadd4"),
4550joinpd1("mmcu="),
4551flagpd1("mmemops"),
4552flagpd1("mmfcrf"),
4553flagpd1("mmfocrf"),
4554flagpd1("mmicromips"),
4555flagpd1("mmmx"),
4556flagpd1("mmovbe"),
4557flagpd1("mmovdir64b"),
4558flagpd1("mmovdiri"),
4559flagpd1("mmpx"),
4560flagpd1("mms-bitfields"),
4561flagpd1("mmsa"),
4562flagpd1("mmt"),
4563flagpd1("mmultivalue"),
4564flagpd1("mmutable-globals"),
4565flagpd1("mmwaitx"),
4566joinpd1("mnan="),
4567flagpd1("mno-3dnow"),
4568flagpd1("mno-3dnowa"),
4569flagpd1("mno-80387"),
4570flagpd1("mno-abicalls"),
4571flagpd1("mno-adx"),
4572flagpd1("mno-aes"),
4573flagpd1("mno-altivec"),
4574flagpd1("mno-atomics"),
4575flagpd1("mno-avx"),
4576flagpd1("mno-avx2"),
4577flagpd1("mno-avx512bf16"),
4578flagpd1("mno-avx512bitalg"),
4579flagpd1("mno-avx512bw"),
4580flagpd1("mno-avx512cd"),
4581flagpd1("mno-avx512dq"),
4582flagpd1("mno-avx512er"),
4583flagpd1("mno-avx512f"),
4584flagpd1("mno-avx512ifma"),
4585flagpd1("mno-avx512pf"),
4586flagpd1("mno-avx512vbmi"),
4587flagpd1("mno-avx512vbmi2"),
4588flagpd1("mno-avx512vl"),
4589flagpd1("mno-avx512vnni"),
4590flagpd1("mno-avx512vp2intersect"),
4591flagpd1("mno-avx512vpopcntdq"),
4592flagpd1("mno-backchain"),
4593flagpd1("mno-bmi"),
4594flagpd1("mno-bmi2"),
4595flagpd1("mno-branch-likely"),
4596flagpd1("mno-bulk-memory"),
4597flagpd1("mno-check-zero-division"),
4598flagpd1("mno-cldemote"),
4599flagpd1("mno-clflushopt"),
4600flagpd1("mno-clwb"),
4601flagpd1("mno-clzero"),
4602flagpd1("mno-cmpb"),
4603flagpd1("mno-code-object-v3"),
4604flagpd1("mno-constant-cfstrings"),
4605flagpd1("mno-crbits"),
4606flagpd1("mno-crc"),
4607flagpd1("mno-cumode"),
4608flagpd1("mno-cx16"),
4609joinpd1("mno-default-build-attributes"),
4610flagpd1("mno-dsp"),
4611flagpd1("mno-dspr2"),
4612flagpd1("mno-embedded-data"),
4613flagpd1("mno-enqcmd"),
4614flagpd1("mno-exception-handling"),
4615flagpd1("mnoexecstack"),
4616flagpd1("mno-execute-only"),
4617flagpd1("mno-extern-sdata"),
4618flagpd1("mno-f16c"),
4619flagpd1("mno-fix-cortex-a53-835769"),
4620flagpd1("mno-float128"),
4621flagpd1("mno-fma"),
4622flagpd1("mno-fma4"),
4623flagpd1("mno-fprnd"),
4624flagpd1("mno-fsgsbase"),
4625flagpd1("mno-fxsr"),
4626flagpd1("mno-gfni"),
4627flagpd1("mno-ginv"),
4628flagpd1("mno-global-merge"),
4629flagpd1("mno-gpopt"),
4630flagpd1("mno-hvx"),
4631flagpd1("mno-htm"),
4632flagpd1("mno-iamcu"),
4633flagpd1("mno-implicit-float"),
4634flagpd1("mno-incremental-linker-compatible"),
4635flagpd1("mno-inline-all-stringops"),
4636flagpd1("mno-invariant-function-descriptors"),
4637flagpd1("mno-invpcid"),
4638flagpd1("mno-isel"),
4639flagpd1("mno-ldc1-sdc1"),
4640flagpd1("mno-local-sdata"),
4641flagpd1("mno-long-calls"),
4642flagpd1("mno-longcall"),
4643flagpd1("mno-lwp"),
4644flagpd1("mno-lzcnt"),
4645flagpd1("mno-madd4"),
4646flagpd1("mno-memops"),
4647flagpd1("mno-mfcrf"),
4648flagpd1("mno-mfocrf"),
4649flagpd1("mno-micromips"),
4650flagpd1("mno-mips16"),
4651flagpd1("mno-mmx"),
4652flagpd1("mno-movbe"),
4653flagpd1("mno-movdir64b"),
4654flagpd1("mno-movdiri"),
4655flagpd1("mno-movt"),
4656flagpd1("mno-mpx"),
4657flagpd1("mno-ms-bitfields"),
4658flagpd1("mno-msa"),
4659flagpd1("mno-mt"),
4660flagpd1("mno-multivalue"),
4661flagpd1("mno-mutable-globals"),
4662flagpd1("mno-mwaitx"),
4663flagpd1("mno-neg-immediates"),
4664flagpd1("mno-nontrapping-fptoint"),
4665flagpd1("mno-nvj"),
4666flagpd1("mno-nvs"),
4667flagpd1("mno-odd-spreg"),
4668flagpd1("mno-omit-leaf-frame-pointer"),
4669flagpd1("mno-outline"),
4670flagpd1("mno-packed-stack"),
4671flagpd1("mno-packets"),
4672flagpd1("mno-pascal-strings"),
4673flagpd1("mno-pclmul"),
4674flagpd1("mno-pconfig"),
4675flagpd1("mno-pie-copy-relocations"),
4676flagpd1("mno-pku"),
4677flagpd1("mno-popcnt"),
4678flagpd1("mno-popcntd"),
4679flagpd1("mno-power8-vector"),
4680flagpd1("mno-power9-vector"),
4681flagpd1("mno-prefetchwt1"),
4682flagpd1("mno-prfchw"),
4683flagpd1("mno-ptwrite"),
4684flagpd1("mno-pure-code"),
4685flagpd1("mno-qpx"),
4686flagpd1("mno-rdpid"),
4687flagpd1("mno-rdrnd"),
4688flagpd1("mno-rdseed"),
4689flagpd1("mno-red-zone"),
4690flagpd1("mno-reference-types"),
4691flagpd1("mno-relax"),
4692flagpd1("mno-relax-all"),
4693flagpd1("mno-relax-pic-calls"),
4694flagpd1("mno-restrict-it"),
4695flagpd1("mno-retpoline"),
4696flagpd1("mno-retpoline-external-thunk"),
4697flagpd1("mno-rtd"),
4698flagpd1("mno-rtm"),
4699flagpd1("mno-sahf"),
4700flagpd1("mno-save-restore"),
4701flagpd1("mno-sgx"),
4702flagpd1("mno-sha"),
4703flagpd1("mno-shstk"),
4704flagpd1("mno-sign-ext"),
4705flagpd1("mno-simd128"),
4706flagpd1("mno-soft-float"),
4707flagpd1("mno-spe"),
4708flagpd1("mno-speculative-load-hardening"),
4709flagpd1("mno-sram-ecc"),
4710flagpd1("mno-sse"),
4711flagpd1("mno-sse2"),
4712flagpd1("mno-sse3"),
4713flagpd1("mno-sse4"),
4714flagpd1("mno-sse4.1"),
4715flagpd1("mno-sse4.2"),
4716flagpd1("mno-sse4a"),
4717flagpd1("mno-ssse3"),
4718flagpd1("mno-stack-arg-probe"),
4719flagpd1("mno-stackrealign"),
4720flagpd1("mno-tail-call"),
4721flagpd1("mno-tbm"),
4722flagpd1("mno-thumb"),
4723flagpd1("mno-tls-direct-seg-refs"),
4724flagpd1("mno-unaligned-access"),
4725flagpd1("mno-unimplemented-simd128"),
4726flagpd1("mno-vaes"),
4727flagpd1("mno-virt"),
4728flagpd1("mno-vpclmulqdq"),
4729flagpd1("mno-vsx"),
4730flagpd1("mno-vx"),
4731flagpd1("mno-vzeroupper"),
4732flagpd1("mno-waitpkg"),
4733flagpd1("mno-warn-nonportable-cfstrings"),
4734flagpd1("mno-wavefrontsize64"),
4735flagpd1("mno-wbnoinvd"),
4736flagpd1("mno-x87"),
4737flagpd1("mno-xgot"),
4738flagpd1("mno-xnack"),
4739flagpd1("mno-xop"),
4740flagpd1("mno-xsave"),
4741flagpd1("mno-xsavec"),
4742flagpd1("mno-xsaveopt"),
4743flagpd1("mno-xsaves"),
4744flagpd1("mno-zero-initialized-in-bss"),
4745flagpd1("mno-zvector"),
4746flagpd1("mnocrc"),
4747flagpd1("mno-direct-move"),
4748flagpd1("mnontrapping-fptoint"),
4749flagpd1("mnop-mcount"),
4750flagpd1("mno-crypto"),
4751flagpd1("mnvj"),
4752flagpd1("mnvs"),
4753flagpd1("modd-spreg"),
4754sepd1("module-dependency-dir"),
4755flagpd1("module-file-deps"),
4756flagpd1("module-file-info"),
4757flagpd1("fmodule-private"),
4758flagpd1("fno-module-private"),
4759flagpd1("fmodulo-sched-allow-regmoves"),
4760flagpd1("fno-modulo-sched-allow-regmoves"),
4761flagpd1("fmodulo-sched"),
4762flagpd1("fno-modulo-sched"),
4763flagpd1("momit-leaf-frame-pointer"),
4764joinpd1("moslib="),
4765flagpd1("moutline"),
4766flagpd1("mpacked-stack"),
4767flagpd1("mpackets"),
4768flagpd1("mpascal-strings"),
4769flagpd1("mpclmul"),
4770flagpd1("mpconfig"),
4771flagpd1("mpie-copy-relocations"),
4772flagpd1("mpku"),
4773flagpd1("mpopcnt"),
4774flagpd1("mpopcntd"),
4775flagpd1("mcrypto"),
4776flagpd1("mpower8-vector"),
4777flagpd1("mpower9-vector"),
4778joinpd1("mprefer-vector-width="),
4779flagpd1("mprefetchwt1"),
4780flagpd1("mprfchw"),
4781flagpd1("mptwrite"),
4782flagpd1("mpure-code"),
4783flagpd1("mqdsp6-compat"),
4784flagpd1("mqpx"),
4785flagpd1("mrdpid"),
4786flagpd1("mrdrnd"),
4787flagpd1("mrdseed"),
4788flagpd1("mreassociate"),
4789flagpd1("mrecip"),
4790.{
4791 .name = "mrecip=",
4792 .syntax = .comma_joined,
4793 .zig_equivalent = .other,
4794 .pd1 = true,
4795 .pd2 = false,
4796 .psl = false,
4797},
4798flagpd1("mrecord-mcount"),
4799flagpd1("mred-zone"),
4800flagpd1("mreference-types"),
4801sepd1("mregparm"),
4802joinpd1("mregparm="),
4803flagpd1("mrelax"),
4804flagpd1("mrelax-all"),
4805flagpd1("mrelax-pic-calls"),
4806.{
4807 .name = "mrelax-relocations",
4808 .syntax = .flag,
4809 .zig_equivalent = .other,
4810 .pd1 = false,
4811 .pd2 = true,
4812 .psl = false,
4813},
4814sepd1("mrelocation-model"),
4815flagpd1("mrestrict-it"),
4816flagpd1("mretpoline"),
4817flagpd1("mretpoline-external-thunk"),
4818flagpd1("mrtd"),
4819flagpd1("mrtm"),
4820flagpd1("msahf"),
4821flagpd1("msave-restore"),
4822flagpd1("msave-temp-labels"),
4823flagpd1("msecure-plt"),
4824flagpd1("msgx"),
4825flagpd1("msha"),
4826flagpd1("mshstk"),
4827flagpd1("msign-ext"),
4828joinpd1("msign-return-address="),
4829joinpd1("msign-return-address-key="),
4830flagpd1("msimd128"),
4831flagpd1("msingle-float"),
4832joinpd1("msmall-data-threshold="),
4833flagpd1("msoft-float"),
4834flagpd1("mspe"),
4835flagpd1("mspeculative-load-hardening"),
4836flagpd1("msram-ecc"),
4837flagpd1("msse"),
4838flagpd1("msse2"),
4839flagpd1("msse3"),
4840flagpd1("msse4"),
4841flagpd1("msse4.1"),
4842flagpd1("msse4.2"),
4843flagpd1("msse4a"),
4844flagpd1("mssse3"),
4845joinpd1("mstack-alignment="),
4846flagpd1("mstack-arg-probe"),
4847joinpd1("mstack-probe-size="),
4848flagpd1("mstackrealign"),
4849flagpd1("mstrict-align"),
4850sepd1("mt-migrate-directory"),
4851flagpd1("mtail-call"),
4852flagpd1("mtbm"),
4853sepd1("mthread-model"),
4854joinpd1("mthreads"),
4855flagpd1("mthumb"),
4856flagpd1("mtls-direct-seg-refs"),
4857joinpd1("mtls-size="),
4858sepd1("mtp"),
4859joinpd1("mtp="),
4860joinpd1("mtune="),
4861flagpd1("mtune=?"),
4862joinpd1("mtvos-simulator-version-min="),
4863joinpd1("mtvos-version-min="),
4864flagpd1("muclibc"),
4865flagpd1("multi_module"),
4866sepd1("multiply_defined"),
4867sepd1("multiply_defined_unused"),
4868flagpd1("munaligned-access"),
4869joinpd1("municode"),
4870flagpd1("munimplemented-simd128"),
4871flagpd1("munwind-tables"),
4872flagpd1("mv5"),
4873flagpd1("mv55"),
4874flagpd1("mv60"),
4875flagpd1("mv62"),
4876flagpd1("mv65"),
4877flagpd1("mv66"),
4878flagpd1("mvaes"),
4879flagpd1("mvirt"),
4880flagpd1("mvpclmulqdq"),
4881flagpd1("mvsx"),
4882flagpd1("mvx"),
4883flagpd1("mvzeroupper"),
4884flagpd1("mwaitpkg"),
4885flagpd1("mwarn-nonportable-cfstrings"),
4886joinpd1("mwatchos-simulator-version-min="),
4887joinpd1("mwatchos-version-min="),
4888joinpd1("mwatchsimulator-version-min="),
4889flagpd1("mwavefrontsize64"),
4890flagpd1("mwbnoinvd"),
4891joinpd1("mwindows"),
4892flagpd1("mx32"),
4893flagpd1("mx87"),
4894flagpd1("mxgot"),
4895flagpd1("mxnack"),
4896flagpd1("mxop"),
4897flagpd1("mxsave"),
4898flagpd1("mxsavec"),
4899flagpd1("mxsaveopt"),
4900flagpd1("mxsaves"),
4901flagpd1("mzvector"),
4902flagpd1("n"),
4903flagpd1("new-struct-path-tbaa"),
4904flagpd1("no_dead_strip_inits_and_terms"),
4905flagpd1("no-canonical-prefixes"),
4906flagpd1("no-code-completion-globals"),
4907flagpd1("no-code-completion-ns-level-decls"),
4908flagpd1("no-cpp-precomp"),
4909.{
4910 .name = "no-cuda-gpu-arch=",
4911 .syntax = .joined,
4912 .zig_equivalent = .other,
4913 .pd1 = false,
4914 .pd2 = true,
4915 .psl = false,
4916},
4917.{
4918 .name = "no-cuda-include-ptx=",
4919 .syntax = .joined,
4920 .zig_equivalent = .other,
4921 .pd1 = false,
4922 .pd2 = true,
4923 .psl = false,
4924},
4925.{
4926 .name = "no-cuda-noopt-device-debug",
4927 .syntax = .flag,
4928 .zig_equivalent = .other,
4929 .pd1 = false,
4930 .pd2 = true,
4931 .psl = false,
4932},
4933.{
4934 .name = "no-cuda-version-check",
4935 .syntax = .flag,
4936 .zig_equivalent = .other,
4937 .pd1 = false,
4938 .pd2 = true,
4939 .psl = false,
4940},
4941flagpd1("no-emit-llvm-uselists"),
4942flagpd1("no-implicit-float"),
4943.{
4944 .name = "no-integrated-cpp",
4945 .syntax = .flag,
4946 .zig_equivalent = .other,
4947 .pd1 = true,
4948 .pd2 = true,
4949 .psl = false,
4950},
4951.{
4952 .name = "no-pedantic",
4953 .syntax = .flag,
4954 .zig_equivalent = .other,
4955 .pd1 = true,
4956 .pd2 = true,
4957 .psl = false,
4958},
4959flagpd1("no-pie"),
4960flagpd1("no-pthread"),
4961flagpd1("no-struct-path-tbaa"),
4962.{
4963 .name = "no-system-header-prefix=",
4964 .syntax = .joined,
4965 .zig_equivalent = .other,
4966 .pd1 = false,
4967 .pd2 = true,
4968 .psl = false,
4969},
4970flagpd1("nobuiltininc"),
4971flagpd1("nocpp"),
4972flagpd1("nocudainc"),
4973flagpd1("nodefaultlibs"),
4974flagpd1("nofixprebinding"),
4975flagpd1("nogpulib"),
4976flagpd1("nolibc"),
4977flagpd1("nomultidefs"),
4978flagpd1("fnon-call-exceptions"),
4979flagpd1("fno-non-call-exceptions"),
4980flagpd1("nopie"),
4981flagpd1("noprebind"),
4982flagpd1("noprofilelib"),
4983flagpd1("noseglinkedit"),
4984flagpd1("nostartfiles"),
4985flagpd1("nostdinc"),
4986flagpd1("nostdinc++"),
4987flagpd1("nostdlib"),
4988flagpd1("nostdlibinc"),
4989flagpd1("nostdlib++"),
4990flagpd1("nostdsysteminc"),
4991.{
4992 .name = "o",
4993 .syntax = .joined_or_separate,
4994 .zig_equivalent = .o,
4995 .pd1 = true,
4996 .pd2 = false,
4997 .psl = false,
4998},
4999jspd1("objc-isystem"),
5000flagpd1("objcmt-atomic-property"),
5001flagpd1("objcmt-migrate-all"),
5002flagpd1("objcmt-migrate-annotation"),
5003flagpd1("objcmt-migrate-designated-init"),
5004flagpd1("objcmt-migrate-instancetype"),
5005flagpd1("objcmt-migrate-literals"),
5006flagpd1("objcmt-migrate-ns-macros"),
5007flagpd1("objcmt-migrate-property"),
5008flagpd1("objcmt-migrate-property-dot-syntax"),
5009flagpd1("objcmt-migrate-protocol-conformance"),
5010flagpd1("objcmt-migrate-readonly-property"),
5011flagpd1("objcmt-migrate-readwrite-property"),
5012flagpd1("objcmt-migrate-subscripting"),
5013flagpd1("objcmt-ns-nonatomic-iosonly"),
5014flagpd1("objcmt-returns-innerpointer-property"),
5015joinpd1("objcmt-whitelist-dir-path="),
5016jspd1("objcxx-isystem"),
5017flagpd1("object"),
5018sepd1("opt-record-file"),
5019sepd1("opt-record-format"),
5020sepd1("opt-record-passes"),
5021sepd1("output-asm-variant"),
5022flagpd1("p"),
5023flagpd1("fpack-derived"),
5024flagpd1("fno-pack-derived"),
5025jspd1("pagezero_size"),
5026.{
5027 .name = "pass-exit-codes",
5028 .syntax = .flag,
5029 .zig_equivalent = .other,
5030 .pd1 = true,
5031 .pd2 = true,
5032 .psl = false,
5033},
5034flagpd1("pch-through-hdrstop-create"),
5035flagpd1("pch-through-hdrstop-use"),
5036joinpd1("pch-through-header="),
5037.{
5038 .name = "pedantic",
5039 .syntax = .flag,
5040 .zig_equivalent = .other,
5041 .pd1 = true,
5042 .pd2 = true,
5043 .psl = false,
5044},
5045.{
5046 .name = "pedantic-errors",
5047 .syntax = .flag,
5048 .zig_equivalent = .other,
5049 .pd1 = true,
5050 .pd2 = true,
5051 .psl = false,
5052},
5053flagpd1("fpeel-loops"),
5054flagpd1("fno-peel-loops"),
5055flagpd1("fpermissive"),
5056flagpd1("fno-permissive"),
5057flagpd1("pg"),
5058flagpd1("pic-is-pie"),
5059sepd1("pic-level"),
5060flagpd1("pie"),
5061.{
5062 .name = "pipe",
5063 .syntax = .flag,
5064 .zig_equivalent = .other,
5065 .pd1 = true,
5066 .pd2 = true,
5067 .psl = false,
5068},
5069sepd1("plugin"),
5070.{
5071 .name = "plugin-arg-",
5072 .syntax = .joined_and_separate,
5073 .zig_equivalent = .other,
5074 .pd1 = true,
5075 .pd2 = false,
5076 .psl = false,
5077},
5078joinpd1("preamble-bytes="),
5079flagpd1("prebind"),
5080flagpd1("prebind_all_twolevel_modules"),
5081flagpd1("fprefetch-loop-arrays"),
5082flagpd1("fno-prefetch-loop-arrays"),
5083flagpd1("preload"),
5084flagpd1("print-dependency-directives-minimized-source"),
5085.{
5086 .name = "print-effective-triple",
5087 .syntax = .flag,
5088 .zig_equivalent = .other,
5089 .pd1 = true,
5090 .pd2 = true,
5091 .psl = false,
5092},
5093.{
5094 .name = "print-file-name=",
5095 .syntax = .joined,
5096 .zig_equivalent = .other,
5097 .pd1 = true,
5098 .pd2 = true,
5099 .psl = false,
5100},
5101flagpd1("print-ivar-layout"),
5102.{
5103 .name = "print-libgcc-file-name",
5104 .syntax = .flag,
5105 .zig_equivalent = .other,
5106 .pd1 = true,
5107 .pd2 = true,
5108 .psl = false,
5109},
5110.{
5111 .name = "print-multi-directory",
5112 .syntax = .flag,
5113 .zig_equivalent = .other,
5114 .pd1 = true,
5115 .pd2 = true,
5116 .psl = false,
5117},
5118.{
5119 .name = "print-multi-lib",
5120 .syntax = .flag,
5121 .zig_equivalent = .other,
5122 .pd1 = true,
5123 .pd2 = true,
5124 .psl = false,
5125},
5126.{
5127 .name = "print-multi-os-directory",
5128 .syntax = .flag,
5129 .zig_equivalent = .other,
5130 .pd1 = true,
5131 .pd2 = true,
5132 .psl = false,
5133},
5134flagpd1("print-preamble"),
5135.{
5136 .name = "print-prog-name=",
5137 .syntax = .joined,
5138 .zig_equivalent = .other,
5139 .pd1 = true,
5140 .pd2 = true,
5141 .psl = false,
5142},
5143.{
5144 .name = "print-resource-dir",
5145 .syntax = .flag,
5146 .zig_equivalent = .other,
5147 .pd1 = true,
5148 .pd2 = true,
5149 .psl = false,
5150},
5151.{
5152 .name = "print-search-dirs",
5153 .syntax = .flag,
5154 .zig_equivalent = .other,
5155 .pd1 = true,
5156 .pd2 = true,
5157 .psl = false,
5158},
5159flagpd1("print-stats"),
5160.{
5161 .name = "print-supported-cpus",
5162 .syntax = .flag,
5163 .zig_equivalent = .other,
5164 .pd1 = true,
5165 .pd2 = true,
5166 .psl = false,
5167},
5168.{
5169 .name = "print-target-triple",
5170 .syntax = .flag,
5171 .zig_equivalent = .other,
5172 .pd1 = true,
5173 .pd2 = true,
5174 .psl = false,
5175},
5176flagpd1("fprintf"),
5177flagpd1("fno-printf"),
5178flagpd1("private_bundle"),
5179flagpd1("fprofile-correction"),
5180flagpd1("fno-profile-correction"),
5181flagpd1("fprofile"),
5182flagpd1("fno-profile"),
5183flagpd1("fprofile-generate-sampling"),
5184flagpd1("fno-profile-generate-sampling"),
5185flagpd1("fprofile-reusedist"),
5186flagpd1("fno-profile-reusedist"),
5187flagpd1("fprofile-values"),
5188flagpd1("fno-profile-values"),
5189flagpd1("fprotect-parens"),
5190flagpd1("fno-protect-parens"),
5191flagpd1("pthread"),
5192flagpd1("pthreads"),
5193.{
5194 .name = "ptxas-path=",
5195 .syntax = .joined,
5196 .zig_equivalent = .other,
5197 .pd1 = false,
5198 .pd2 = true,
5199 .psl = false,
5200},
5201flagpd1("r"),
5202flagpd1("frange-check"),
5203flagpd1("fno-range-check"),
5204flagpd1("rdynamic"),
5205sepd1("read_only_relocs"),
5206flagpd1("freal-4-real-10"),
5207flagpd1("fno-real-4-real-10"),
5208flagpd1("freal-4-real-16"),
5209flagpd1("fno-real-4-real-16"),
5210flagpd1("freal-4-real-8"),
5211flagpd1("fno-real-4-real-8"),
5212flagpd1("freal-8-real-10"),
5213flagpd1("fno-real-8-real-10"),
5214flagpd1("freal-8-real-16"),
5215flagpd1("fno-real-8-real-16"),
5216flagpd1("freal-8-real-4"),
5217flagpd1("fno-real-8-real-4"),
5218flagpd1("frealloc-lhs"),
5219flagpd1("fno-realloc-lhs"),
5220sepd1("record-command-line"),
5221flagpd1("frecursive"),
5222flagpd1("fno-recursive"),
5223flagpd1("fregs-graph"),
5224flagpd1("fno-regs-graph"),
5225flagpd1("relaxed-aliasing"),
5226.{
5227 .name = "relocatable-pch",
5228 .syntax = .flag,
5229 .zig_equivalent = .other,
5230 .pd1 = true,
5231 .pd2 = true,
5232 .psl = false,
5233},
5234flagpd1("remap"),
5235sepd1("remap-file"),
5236flagpd1("frename-registers"),
5237flagpd1("fno-rename-registers"),
5238flagpd1("freorder-blocks"),
5239flagpd1("fno-reorder-blocks"),
5240flagpd1("frepack-arrays"),
5241flagpd1("fno-repack-arrays"),
5242sepd1("resource-dir"),
5243joinpd1("resource-dir="),
5244flagpd1("rewrite-legacy-objc"),
5245flagpd1("rewrite-macros"),
5246flagpd1("rewrite-objc"),
5247flagpd1("rewrite-test"),
5248flagpd1("fripa"),
5249flagpd1("fno-ripa"),
5250sepd1("rpath"),
5251.{
5252 .name = "rsp-quoting=",
5253 .syntax = .joined,
5254 .zig_equivalent = .other,
5255 .pd1 = false,
5256 .pd2 = true,
5257 .psl = false,
5258},
5259.{
5260 .name = "rtlib=",
5261 .syntax = .joined,
5262 .zig_equivalent = .other,
5263 .pd1 = true,
5264 .pd2 = true,
5265 .psl = false,
5266},
5267flagpd1("s"),
5268.{
5269 .name = "save-stats",
5270 .syntax = .flag,
5271 .zig_equivalent = .other,
5272 .pd1 = true,
5273 .pd2 = true,
5274 .psl = false,
5275},
5276.{
5277 .name = "save-stats=",
5278 .syntax = .joined,
5279 .zig_equivalent = .other,
5280 .pd1 = true,
5281 .pd2 = true,
5282 .psl = false,
5283},
5284.{
5285 .name = "save-temps",
5286 .syntax = .flag,
5287 .zig_equivalent = .other,
5288 .pd1 = true,
5289 .pd2 = true,
5290 .psl = false,
5291},
5292.{
5293 .name = "save-temps=",
5294 .syntax = .joined,
5295 .zig_equivalent = .other,
5296 .pd1 = true,
5297 .pd2 = true,
5298 .psl = false,
5299},
5300flagpd1("fschedule-insns2"),
5301flagpd1("fno-schedule-insns2"),
5302flagpd1("fschedule-insns"),
5303flagpd1("fno-schedule-insns"),
5304flagpd1("fsecond-underscore"),
5305flagpd1("fno-second-underscore"),
5306.{
5307 .name = "sectalign",
5308 .syntax = .{ .multi_arg = 3 },
5309 .zig_equivalent = .other,
5310 .pd1 = true,
5311 .pd2 = false,
5312 .psl = false,
5313},
5314.{
5315 .name = "sectcreate",
5316 .syntax = .{ .multi_arg = 3 },
5317 .zig_equivalent = .other,
5318 .pd1 = true,
5319 .pd2 = false,
5320 .psl = false,
5321},
5322.{
5323 .name = "sectobjectsymbols",
5324 .syntax = .{ .multi_arg = 2 },
5325 .zig_equivalent = .other,
5326 .pd1 = true,
5327 .pd2 = false,
5328 .psl = false,
5329},
5330.{
5331 .name = "sectorder",
5332 .syntax = .{ .multi_arg = 3 },
5333 .zig_equivalent = .other,
5334 .pd1 = true,
5335 .pd2 = false,
5336 .psl = false,
5337},
5338flagpd1("fsee"),
5339flagpd1("fno-see"),
5340jspd1("seg1addr"),
5341sepd1("seg_addr_table"),
5342sepd1("seg_addr_table_filename"),
5343.{
5344 .name = "segaddr",
5345 .syntax = .{ .multi_arg = 2 },
5346 .zig_equivalent = .other,
5347 .pd1 = true,
5348 .pd2 = false,
5349 .psl = false,
5350},
5351.{
5352 .name = "segcreate",
5353 .syntax = .{ .multi_arg = 3 },
5354 .zig_equivalent = .other,
5355 .pd1 = true,
5356 .pd2 = false,
5357 .psl = false,
5358},
5359flagpd1("seglinkedit"),
5360.{
5361 .name = "segprot",
5362 .syntax = .{ .multi_arg = 3 },
5363 .zig_equivalent = .other,
5364 .pd1 = true,
5365 .pd2 = false,
5366 .psl = false,
5367},
5368joinpd1("segs_read_"),
5369sepd1("segs_read_only_addr"),
5370sepd1("segs_read_write_addr"),
5371flagpd1("setup-static-analyzer"),
5372.{
5373 .name = "shared",
5374 .syntax = .flag,
5375 .zig_equivalent = .other,
5376 .pd1 = true,
5377 .pd2 = true,
5378 .psl = false,
5379},
5380flagpd1("shared-libgcc"),
5381flagpd1("shared-libsan"),
5382flagpd1("show-encoding"),
5383.{
5384 .name = "show-includes",
5385 .syntax = .flag,
5386 .zig_equivalent = .other,
5387 .pd1 = false,
5388 .pd2 = true,
5389 .psl = false,
5390},
5391flagpd1("show-inst"),
5392flagpd1("fsign-zero"),
5393flagpd1("fno-sign-zero"),
5394flagpd1("fsignaling-nans"),
5395flagpd1("fno-signaling-nans"),
5396flagpd1("single_module"),
5397flagpd1("fsingle-precision-constant"),
5398flagpd1("fno-single-precision-constant"),
5399flagpd1("fspec-constr-count"),
5400flagpd1("fno-spec-constr-count"),
5401.{
5402 .name = "specs",
5403 .syntax = .separate,
5404 .zig_equivalent = .other,
5405 .pd1 = true,
5406 .pd2 = true,
5407 .psl = false,
5408},
5409.{
5410 .name = "specs=",
5411 .syntax = .joined,
5412 .zig_equivalent = .other,
5413 .pd1 = true,
5414 .pd2 = true,
5415 .psl = false,
5416},
5417sepd1("split-dwarf-file"),
5418sepd1("split-dwarf-output"),
5419flagpd1("split-stacks"),
5420flagpd1("fstack-arrays"),
5421flagpd1("fno-stack-arrays"),
5422flagpd1("fstack-check"),
5423flagpd1("fno-stack-check"),
5424sepd1("stack-protector"),
5425sepd1("stack-protector-buffer-size"),
5426.{
5427 .name = "static",
5428 .syntax = .flag,
5429 .zig_equivalent = .other,
5430 .pd1 = true,
5431 .pd2 = true,
5432 .psl = false,
5433},
5434flagpd1("static-define"),
5435flagpd1("static-libgcc"),
5436flagpd1("static-libgfortran"),
5437flagpd1("static-libsan"),
5438flagpd1("static-libstdc++"),
5439flagpd1("static-openmp"),
5440flagpd1("static-pie"),
5441joinpd1("stats-file="),
5442.{
5443 .name = "std=",
5444 .syntax = .joined,
5445 .zig_equivalent = .other,
5446 .pd1 = true,
5447 .pd2 = true,
5448 .psl = false,
5449},
5450joinpd1("std-default="),
5451.{
5452 .name = "stdlib=",
5453 .syntax = .joined,
5454 .zig_equivalent = .other,
5455 .pd1 = true,
5456 .pd2 = true,
5457 .psl = false,
5458},
5459jspd1("stdlib++-isystem"),
5460flagpd1("fstrength-reduce"),
5461flagpd1("fno-strength-reduce"),
5462jspd1("sub_library"),
5463jspd1("sub_umbrella"),
5464flagpd1("sys-header-deps"),
5465.{
5466 .name = "system-header-prefix=",
5467 .syntax = .joined,
5468 .zig_equivalent = .other,
5469 .pd1 = false,
5470 .pd2 = true,
5471 .psl = false,
5472},
5473flagpd1("t"),
5474.{
5475 .name = "target=",
5476 .syntax = .joined,
5477 .zig_equivalent = .target,
5478 .pd1 = false,
5479 .pd2 = true,
5480 .psl = false,
5481},
5482sepd1("target-abi"),
5483sepd1("target-cpu"),
5484sepd1("target-feature"),
5485.{
5486 .name = "target",
5487 .syntax = .separate,
5488 .zig_equivalent = .target,
5489 .pd1 = true,
5490 .pd2 = false,
5491 .psl = false,
5492},
5493sepd1("target-linker-version"),
5494joinpd1("target-sdk-version="),
5495flagpd1("templight-dump"),
5496flagpd1("test-coverage"),
5497flagpd1("time"),
5498flagpd1("ftls-model"),
5499flagpd1("fno-tls-model"),
5500flagpd1("ftracer"),
5501flagpd1("fno-tracer"),
5502.{
5503 .name = "traditional",
5504 .syntax = .flag,
5505 .zig_equivalent = .other,
5506 .pd1 = true,
5507 .pd2 = true,
5508 .psl = false,
5509},
5510.{
5511 .name = "traditional-cpp",
5512 .syntax = .flag,
5513 .zig_equivalent = .other,
5514 .pd1 = true,
5515 .pd2 = true,
5516 .psl = false,
5517},
5518flagpd1("ftree-dce"),
5519flagpd1("fno-tree-dce"),
5520flagpd1("ftree_loop_im"),
5521flagpd1("fno-tree_loop_im"),
5522flagpd1("ftree_loop_ivcanon"),
5523flagpd1("fno-tree_loop_ivcanon"),
5524flagpd1("ftree_loop_linear"),
5525flagpd1("fno-tree_loop_linear"),
5526flagpd1("ftree-salias"),
5527flagpd1("fno-tree-salias"),
5528flagpd1("ftree-ter"),
5529flagpd1("fno-tree-ter"),
5530flagpd1("ftree-vectorizer-verbose"),
5531flagpd1("fno-tree-vectorizer-verbose"),
5532flagpd1("ftree-vrp"),
5533flagpd1("fno-tree-vrp"),
5534.{
5535 .name = "trigraphs",
5536 .syntax = .flag,
5537 .zig_equivalent = .other,
5538 .pd1 = true,
5539 .pd2 = true,
5540 .psl = false,
5541},
5542flagpd1("trim-egraph"),
5543sepd1("triple"),
5544joinpd1("triple="),
5545flagpd1("twolevel_namespace"),
5546flagpd1("twolevel_namespace_hints"),
5547jspd1("u"),
5548sepd1("umbrella"),
5549flagpd1("undef"),
5550jspd1("undefined"),
5551flagpd1("funderscoring"),
5552flagpd1("fno-underscoring"),
5553sepd1("unexported_symbols_list"),
5554flagpd1("funroll-all-loops"),
5555flagpd1("fno-unroll-all-loops"),
5556flagpd1("funsafe-loop-optimizations"),
5557flagpd1("fno-unsafe-loop-optimizations"),
5558flagpd1("funswitch-loops"),
5559flagpd1("fno-unswitch-loops"),
5560.{
5561 .name = "unwindlib=",
5562 .syntax = .joined,
5563 .zig_equivalent = .other,
5564 .pd1 = true,
5565 .pd2 = true,
5566 .psl = false,
5567},
5568flagpd1("fuse-linker-plugin"),
5569flagpd1("fno-use-linker-plugin"),
5570flagpd1("v"),
5571flagpd1("fvariable-expansion-in-unroller"),
5572flagpd1("fno-variable-expansion-in-unroller"),
5573flagpd1("fvect-cost-model"),
5574flagpd1("fno-vect-cost-model"),
5575flagpd1("vectorize-loops"),
5576flagpd1("vectorize-slp"),
5577flagpd1("verify"),
5578.{
5579 .name = "verify=",
5580 .syntax = .comma_joined,
5581 .zig_equivalent = .other,
5582 .pd1 = true,
5583 .pd2 = false,
5584 .psl = false,
5585},
5586.{
5587 .name = "verify-debug-info",
5588 .syntax = .flag,
5589 .zig_equivalent = .other,
5590 .pd1 = false,
5591 .pd2 = true,
5592 .psl = false,
5593},
5594flagpd1("verify-ignore-unexpected"),
5595.{
5596 .name = "verify-ignore-unexpected=",
5597 .syntax = .comma_joined,
5598 .zig_equivalent = .other,
5599 .pd1 = true,
5600 .pd2 = false,
5601 .psl = false,
5602},
5603flagpd1("verify-pch"),
5604flagpd1("version"),
5605.{
5606 .name = "via-file-asm",
5607 .syntax = .flag,
5608 .zig_equivalent = .other,
5609 .pd1 = true,
5610 .pd2 = true,
5611 .psl = false,
5612},
5613joinpd1("vtordisp-mode="),
5614flagpd1("w"),
5615sepd1("weak_framework"),
5616sepd1("weak_library"),
5617sepd1("weak_reference_mismatches"),
5618joinpd1("weak-l"),
5619flagpd1("fweb"),
5620flagpd1("fno-web"),
5621flagpd1("whatsloaded"),
5622flagpd1("fwhole-file"),
5623flagpd1("fno-whole-file"),
5624flagpd1("fwhole-program"),
5625flagpd1("fno-whole-program"),
5626flagpd1("whyload"),
5627jspd1("working-directory"),
5628joinpd1("working-directory="),
5629jspd1("x"),
5630joinpd1("y"),
5631sepd1("z"),
5632};};
src-self-hosted/stage2.zig+155
...@@ -113,6 +113,7 @@ const Error = extern enum {...@@ -113,6 +113,7 @@ const Error = extern enum {
113 TargetHasNoDynamicLinker,113 TargetHasNoDynamicLinker,
114 InvalidAbiVersion,114 InvalidAbiVersion,
115 InvalidOperatingSystemVersion,115 InvalidOperatingSystemVersion,
116 UnknownClangOption,
116};117};
117118
118const FILE = std.c.FILE;119const FILE = std.c.FILE;
...@@ -1215,3 +1216,157 @@ fn convertSlice(slice: [][:0]u8, ptr: *[*][*:0]u8, len: *usize) !void {...@@ -1215,3 +1216,157 @@ fn convertSlice(slice: [][:0]u8, ptr: *[*][*:0]u8, len: *usize) !void {
1215 }1216 }
1216 ptr.* = new_slice.ptr;1217 ptr.* = new_slice.ptr;
1217}1218}
1219
1220const clang_args = @import("clang_options.zig").list;
1221
1222// ABI warning
1223pub const ClangArgIterator = extern struct {
1224 has_next: bool,
1225 zig_equivalent: ZigEquivalent,
1226 only_arg: [*:0]const u8,
1227 second_arg: [*:0]const u8,
1228 other_args_ptr: [*]const [*:0]const u8,
1229 other_args_len: usize,
1230 argv_ptr: [*]const [*:0]const u8,
1231 argv_len: usize,
1232 next_index: usize,
1233
1234 // ABI warning
1235 pub const ZigEquivalent = extern enum {
1236 target,
1237 o,
1238 c,
1239 other,
1240 positional,
1241 l,
1242 };
1243
1244 fn init(argv: []const [*:0]const u8) ClangArgIterator {
1245 return .{
1246 .next_index = 2, // `zig cc foo` this points to `foo`
1247 .has_next = argv.len > 2,
1248 .zig_equivalent = undefined,
1249 .only_arg = undefined,
1250 .second_arg = undefined,
1251 .other_args_ptr = undefined,
1252 .other_args_len = undefined,
1253 .argv_ptr = argv.ptr,
1254 .argv_len = argv.len,
1255 };
1256 }
1257
1258 fn next(self: *ClangArgIterator) !void {
1259 assert(self.has_next);
1260 assert(self.next_index < self.argv_len);
1261 // In this state we know that the parameter we are looking at is a root parameter
1262 // rather than an argument to a parameter.
1263 self.other_args_ptr = self.argv_ptr + self.next_index;
1264 self.other_args_len = 1; // We adjust this value below when necessary.
1265 const arg = mem.span(self.argv_ptr[self.next_index]);
1266 self.next_index += 1;
1267 defer {
1268 if (self.next_index >= self.argv_len) self.has_next = false;
1269 }
1270
1271 if (!mem.startsWith(u8, arg, "-")) {
1272 self.zig_equivalent = .positional;
1273 self.only_arg = arg.ptr;
1274 return;
1275 }
1276
1277 find_clang_arg: for (clang_args) |clang_arg| switch (clang_arg.syntax) {
1278 .flag => if (clang_arg.matchEql(arg)) {
1279 self.zig_equivalent = clang_arg.zig_equivalent;
1280 self.only_arg = arg.ptr;
1281
1282 break :find_clang_arg;
1283 },
1284 .joined, .comma_joined => {
1285 // Example: --target=foo
1286 const prefix_len = clang_arg.matchStartsWith(arg);
1287 if (prefix_len != 0) {
1288 self.zig_equivalent = clang_arg.zig_equivalent;
1289 self.only_arg = arg.ptr + prefix_len; // This will skip over the "--target=" part.
1290
1291 break :find_clang_arg;
1292 }
1293 },
1294 .joined_or_separate => {
1295 // Examples: `-lfoo`, `-l foo`
1296 const prefix_len = clang_arg.matchStartsWith(arg);
1297 if (prefix_len == arg.len) {
1298 if (self.next_index >= self.argv_len) {
1299 std.debug.warn("Expected parameter after '{}'\n", .{arg});
1300 process.exit(1);
1301 }
1302 self.only_arg = self.argv_ptr[self.next_index];
1303 self.next_index += 1;
1304 self.other_args_len += 1;
1305 self.zig_equivalent = clang_arg.zig_equivalent;
1306
1307 break :find_clang_arg;
1308 } else if (prefix_len != 0) {
1309 self.zig_equivalent = clang_arg.zig_equivalent;
1310 self.only_arg = arg.ptr + prefix_len;
1311
1312 break :find_clang_arg;
1313 }
1314 },
1315 .joined_and_separate => {
1316 // Example: `-Xopenmp-target=riscv64-linux-unknown foo`
1317 const prefix_len = clang_arg.matchStartsWith(arg);
1318 if (prefix_len != 0) {
1319 self.only_arg = arg.ptr + prefix_len;
1320 if (self.next_index >= self.argv_len) {
1321 std.debug.warn("Expected parameter after '{}'\n", .{arg});
1322 process.exit(1);
1323 }
1324 self.second_arg = self.argv_ptr[self.next_index];
1325 self.next_index += 1;
1326 self.other_args_len += 1;
1327 self.zig_equivalent = clang_arg.zig_equivalent;
1328 break :find_clang_arg;
1329 }
1330 },
1331 .separate => if (clang_arg.matchEql(arg)) {
1332 if (self.next_index >= self.argv_len) {
1333 std.debug.warn("Expected parameter after '{}'\n", .{arg});
1334 process.exit(1);
1335 }
1336 self.only_arg = self.argv_ptr[self.next_index];
1337 self.next_index += 1;
1338 self.other_args_len += 1;
1339 self.zig_equivalent = clang_arg.zig_equivalent;
1340 break :find_clang_arg;
1341 },
1342 .remaining_args_joined => {
1343 const prefix_len = clang_arg.matchStartsWith(arg);
1344 if (prefix_len != 0) {
1345 @panic("TODO");
1346 }
1347 },
1348 .multi_arg => if (clang_arg.matchEql(arg)) {
1349 @panic("TODO");
1350 },
1351 }
1352 else {
1353 std.debug.warn("Unknown Clang option: '{}'\n", .{arg});
1354 process.exit(1);
1355 }
1356 }
1357};
1358
1359export fn stage2_clang_arg_iterator(
1360 result: *ClangArgIterator,
1361 argc: usize,
1362 argv: [*]const [*:0]const u8,
1363) void {
1364 result.* = ClangArgIterator.init(argv[0..argc]);
1365}
1366
1367export fn stage2_clang_arg_next(it: *ClangArgIterator) Error {
1368 it.next() catch |err| switch (err) {
1369 error.UnknownClangOption => return .UnknownClangOption,
1370 };
1371 return .None;
1372}
src/codegen.cpp+1-1
...@@ -9778,7 +9778,7 @@ static void gen_c_object(CodeGen *g, Buf *self_exe_path, CFile *c_file) {...@@ -9778,7 +9778,7 @@ static void gen_c_object(CodeGen *g, Buf *self_exe_path, CFile *c_file) {
9778 Termination term;9778 Termination term;
9779 ZigList<const char *> args = {};9779 ZigList<const char *> args = {};
9780 args.append(buf_ptr(self_exe_path));9780 args.append(buf_ptr(self_exe_path));
9781 args.append("cc");9781 args.append("clang");
97829782
9783 Buf *out_dep_path = buf_sprintf("%s.d", buf_ptr(out_obj_path));9783 Buf *out_dep_path = buf_sprintf("%s.d", buf_ptr(out_obj_path));
9784 add_cc_args(g, args, buf_ptr(out_dep_path), false);9784 add_cc_args(g, args, buf_ptr(out_dep_path), false);
src/error.cpp+1
...@@ -83,6 +83,7 @@ const char *err_str(Error err) {...@@ -83,6 +83,7 @@ const char *err_str(Error err) {
83 case ErrorTargetHasNoDynamicLinker: return "target has no dynamic linker";83 case ErrorTargetHasNoDynamicLinker: return "target has no dynamic linker";
84 case ErrorInvalidAbiVersion: return "invalid C ABI version";84 case ErrorInvalidAbiVersion: return "invalid C ABI version";
85 case ErrorInvalidOperatingSystemVersion: return "invalid operating system version";85 case ErrorInvalidOperatingSystemVersion: return "invalid operating system version";
86 case ErrorUnknownClangOption: return "unknown Clang option";
86 }87 }
87 return "(invalid error)";88 return "(invalid error)";
88}89}
src/link.cpp+1-1
...@@ -2008,7 +2008,7 @@ static const char *get_def_lib(CodeGen *parent, const char *name, Buf *def_in_fi...@@ -2008,7 +2008,7 @@ static const char *get_def_lib(CodeGen *parent, const char *name, Buf *def_in_fi
20082008
2009 ZigList<const char *> args = {};2009 ZigList<const char *> args = {};
2010 args.append(buf_ptr(self_exe_path));2010 args.append(buf_ptr(self_exe_path));
2011 args.append("cc");2011 args.append("clang");
2012 args.append("-x");2012 args.append("-x");
2013 args.append("c");2013 args.append("c");
2014 args.append(buf_ptr(def_in_file));2014 args.append(buf_ptr(def_in_file));
src/main.cpp+51-5
...@@ -36,7 +36,7 @@ static int print_full_usage(const char *arg0, FILE *file, int return_code) {...@@ -36,7 +36,7 @@ static int print_full_usage(const char *arg0, FILE *file, int return_code) {
36 " build-lib [source] create library from source or object files\n"36 " build-lib [source] create library from source or object files\n"
37 " build-obj [source] create object from source or assembly\n"37 " build-obj [source] create object from source or assembly\n"
38 " builtin show the source code of @import(\"builtin\")\n"38 " builtin show the source code of @import(\"builtin\")\n"
39 " cc C compiler\n"39 " cc use Zig as a drop-in C compiler\n"
40 " fmt parse files and render in canonical zig format\n"40 " fmt parse files and render in canonical zig format\n"
41 " id print the base64-encoded compiler id\n"41 " id print the base64-encoded compiler id\n"
42 " init-exe initialize a `zig build` application in the cwd\n"42 " init-exe initialize a `zig build` application in the cwd\n"
...@@ -271,7 +271,7 @@ static int main0(int argc, char **argv) {...@@ -271,7 +271,7 @@ static int main0(int argc, char **argv) {
271 return 0;271 return 0;
272 }272 }
273273
274 if (argc >= 2 && (strcmp(argv[1], "cc") == 0 ||274 if (argc >= 2 && (strcmp(argv[1], "clang") == 0 ||
275 strcmp(argv[1], "-cc1") == 0 || strcmp(argv[1], "-cc1as") == 0))275 strcmp(argv[1], "-cc1") == 0 || strcmp(argv[1], "-cc1as") == 0))
276 {276 {
277 return ZigClang_main(argc, argv);277 return ZigClang_main(argc, argv);
...@@ -575,9 +575,55 @@ static int main0(int argc, char **argv) {...@@ -575,9 +575,55 @@ static int main0(int argc, char **argv) {
575 return (term.how == TerminationIdClean) ? term.code : -1;575 return (term.how == TerminationIdClean) ? term.code : -1;
576 } else if (argc >= 2 && strcmp(argv[1], "fmt") == 0) {576 } else if (argc >= 2 && strcmp(argv[1], "fmt") == 0) {
577 return stage2_fmt(argc, argv);577 return stage2_fmt(argc, argv);
578 }578 } else if (argc >= 2 && strcmp(argv[1], "cc") == 0) {
579579 const char *o_arg = nullptr;
580 for (int i = 1; i < argc; i += 1) {580 bool c_arg = false;
581 Stage2ClangArgIterator it;
582 stage2_clang_arg_iterator(&it, argc, argv);
583 while (it.has_next) {
584 if ((err = stage2_clang_arg_next(&it))) {
585 fprintf(stderr, "unable to parse command line parameters: %s\n", err_str(err));
586 return EXIT_FAILURE;
587 }
588 switch (it.kind) {
589 case Stage2ClangArgTarget: // example: -target riscv64-linux-unknown
590 target_string = it.only_arg;
591 break;
592 case Stage2ClangArgO: // -o
593 o_arg = it.only_arg;
594 break;
595 case Stage2ClangArgC: // -c
596 c_arg = true;
597 break;
598 case Stage2ClangArgOther:
599 for (size_t i = 0; i < it.other_args_len; i += 1) {
600 clang_argv.append(it.other_args_ptr[i]);
601 }
602 break;
603 case Stage2ClangArgPositional: {
604 CFile *c_file = heap::c_allocator.create<CFile>();
605 c_file->source_path = it.only_arg;
606 c_source_files.append(c_file);
607 break;
608 }
609 case Stage2ClangArgL: // -l
610 if (strcmp(it.only_arg, "c") == 0)
611 have_libc = true;
612 link_libs.append(it.only_arg);
613 break;
614 }
615 }
616 if (!c_arg) {
617 cmd = CmdBuild;
618 out_type = OutTypeExe;
619 if (o_arg == nullptr) {
620 zig_panic("TODO set out name to a.out");
621 }
622 } else {
623 cmd = CmdBuild;
624 out_type = OutTypeObj;
625 }
626 } else for (int i = 1; i < argc; i += 1) {
581 char *arg = argv[i];627 char *arg = argv[i];
582628
583 if (arg[0] == '-') {629 if (arg[0] == '-') {
src/stage2.cpp+12
...@@ -304,3 +304,15 @@ enum Error stage2_detect_native_paths(struct Stage2NativePaths *native_paths) {...@@ -304,3 +304,15 @@ enum Error stage2_detect_native_paths(struct Stage2NativePaths *native_paths) {
304304
305 return ErrorNone;305 return ErrorNone;
306}306}
307
308void stage2_clang_arg_iterator(struct Stage2ClangArgIterator *it,
309 size_t argc, char **argv)
310{
311 const char *msg = "stage0 called stage2_clang_arg_iterator";
312 stage2_panic(msg, strlen(msg));
313}
314
315enum Error stage2_clang_arg_next(struct Stage2ClangArgIterator *it) {
316 const char *msg = "stage0 called stage2_clang_arg_next";
317 stage2_panic(msg, strlen(msg));
318}
src/stage2.h+31
...@@ -105,6 +105,7 @@ enum Error {...@@ -105,6 +105,7 @@ enum Error {
105 ErrorTargetHasNoDynamicLinker,105 ErrorTargetHasNoDynamicLinker,
106 ErrorInvalidAbiVersion,106 ErrorInvalidAbiVersion,
107 ErrorInvalidOperatingSystemVersion,107 ErrorInvalidOperatingSystemVersion,
108 ErrorUnknownClangOption,
108};109};
109110
110// ABI warning111// ABI warning
...@@ -316,4 +317,34 @@ struct Stage2NativePaths {...@@ -316,4 +317,34 @@ struct Stage2NativePaths {
316// ABI warning317// ABI warning
317ZIG_EXTERN_C enum Error stage2_detect_native_paths(struct Stage2NativePaths *native_paths);318ZIG_EXTERN_C enum Error stage2_detect_native_paths(struct Stage2NativePaths *native_paths);
318319
320// ABI warning
321enum Stage2ClangArg {
322 Stage2ClangArgTarget,
323 Stage2ClangArgO,
324 Stage2ClangArgC,
325 Stage2ClangArgOther,
326 Stage2ClangArgPositional,
327 Stage2ClangArgL,
328};
329
330// ABI warning
331struct Stage2ClangArgIterator {
332 bool has_next;
333 enum Stage2ClangArg kind;
334 const char *only_arg;
335 const char *second_arg;
336 const char **other_args_ptr;
337 size_t other_args_len;
338 const char **argv_ptr;
339 size_t argv_len;
340 size_t next_index;
341};
342
343// ABI warning
344ZIG_EXTERN_C void stage2_clang_arg_iterator(struct Stage2ClangArgIterator *it,
345 size_t argc, char **argv);
346
347// ABI warning
348ZIG_EXTERN_C enum Error stage2_clang_arg_next(struct Stage2ClangArgIterator *it);
349
319#endif350#endif
tools/process_headers.zig+11-11
...@@ -1,14 +1,14 @@...@@ -1,14 +1,14 @@
1// To get started, run this tool with no args and read the help message.1//! To get started, run this tool with no args and read the help message.
2//2//!
3// The build systems of musl-libc and glibc require specifying a single target3//! The build systems of musl-libc and glibc require specifying a single target
4// architecture. Meanwhile, Zig supports out-of-the-box cross compilation for4//! architecture. Meanwhile, Zig supports out-of-the-box cross compilation for
5// every target. So the process to create libc headers that Zig ships is to use5//! every target. So the process to create libc headers that Zig ships is to use
6// this tool.6//! this tool.
7// First, use the musl/glibc build systems to create installations of all the7//! First, use the musl/glibc build systems to create installations of all the
8// targets in the `glibc_targets`/`musl_targets` variables.8//! targets in the `glibc_targets`/`musl_targets` variables.
9// Next, run this tool to create a new directory which puts .h files into9//! Next, run this tool to create a new directory which puts .h files into
10// <arch> subdirectories, with `generic` being files that apply to all architectures.10//! <arch> subdirectories, with `generic` being files that apply to all architectures.
11// You'll then have to manually update Zig source repo with these new files.11//! You'll then have to manually update Zig source repo with these new files.
1212
13const std = @import("std");13const std = @import("std");
14const Arch = std.Target.Cpu.Arch;14const Arch = std.Target.Cpu.Arch;
tools/update_clang_options.zig created+274
...@@ -0,0 +1,274 @@
1//! To get started, run this tool with no args and read the help message.
2//!
3//! Clang has a file "options.td" which describes all of its command line parameter options.
4//! When using `zig cc`, Zig acts as a proxy between the user and Clang. It does not need
5//! to understand all the parameters, but it does need to understand some of them, such as
6//! the target. This means that Zig must understand when a C command line parameter expects
7//! to "consume" the next parameter on the command line.
8//!
9//! For example, `-z -target` would mean to pass `-target` to the linker, whereas `-E -target`
10//! would mean that the next parameter specifies the target.
11
12const std = @import("std");
13const fs = std.fs;
14const assert = std.debug.assert;
15const json = std.json;
16
17const KnownOpt = struct {
18 name: []const u8,
19
20 /// Corresponds to stage.zig ClangArgIterator.Kind
21 ident: []const u8,
22};
23
24const known_options = [_]KnownOpt{
25 .{
26 .name = "target",
27 .ident = "target",
28 },
29 .{
30 .name = "o",
31 .ident = "o",
32 },
33 .{
34 .name = "c",
35 .ident = "c",
36 },
37 .{
38 .name = "l",
39 .ident = "l",
40 },
41};
42
43const blacklisted_options = [_][]const u8{};
44
45fn knownOption(name: []const u8) ?[]const u8 {
46 const chopped_name = if (std.mem.endsWith(u8, name, "=")) name[0 .. name.len - 1] else name;
47 for (known_options) |item| {
48 if (std.mem.eql(u8, chopped_name, item.name)) {
49 return item.ident;
50 }
51 }
52 return null;
53}
54
55pub fn main() anyerror!void {
56 var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
57 defer arena.deinit();
58
59 const allocator = &arena.allocator;
60 const args = try std.process.argsAlloc(allocator);
61
62 if (args.len <= 1) {
63 usageAndExit(std.io.getStdErr(), args[0], 1);
64 }
65 if (std.mem.eql(u8, args[1], "--help")) {
66 usageAndExit(std.io.getStdOut(), args[0], 0);
67 }
68 if (args.len < 3) {
69 usageAndExit(std.io.getStdErr(), args[0], 1);
70 }
71
72 const llvm_tblgen_exe = args[1];
73 if (std.mem.startsWith(u8, llvm_tblgen_exe, "-")) {
74 usageAndExit(std.io.getStdErr(), args[0], 1);
75 }
76
77 const llvm_src_root = args[2];
78 if (std.mem.startsWith(u8, llvm_src_root, "-")) {
79 usageAndExit(std.io.getStdErr(), args[0], 1);
80 }
81
82 const child_args = [_][]const u8{
83 llvm_tblgen_exe,
84 "--dump-json",
85 try std.fmt.allocPrint(allocator, "{}/clang/include/clang/Driver/Options.td", .{llvm_src_root}),
86 try std.fmt.allocPrint(allocator, "-I={}/llvm/include", .{llvm_src_root}),
87 try std.fmt.allocPrint(allocator, "-I={}/clang/include/clang/Driver", .{llvm_src_root}),
88 };
89
90 const child_result = try std.ChildProcess.exec2(.{
91 .allocator = allocator,
92 .argv = &child_args,
93 .max_output_bytes = 100 * 1024 * 1024,
94 });
95
96 std.debug.warn("{}\n", .{child_result.stderr});
97
98 const json_text = switch (child_result.term) {
99 .Exited => |code| if (code == 0) child_result.stdout else {
100 std.debug.warn("llvm-tblgen exited with code {}\n", .{code});
101 std.process.exit(1);
102 },
103 else => {
104 std.debug.warn("llvm-tblgen crashed\n", .{});
105 std.process.exit(1);
106 },
107 };
108
109 var parser = json.Parser.init(allocator, false);
110 const tree = try parser.parse(json_text);
111 const root_map = &tree.root.Object;
112
113 var all_names = std.ArrayList([]const u8).init(allocator);
114 {
115 var it = root_map.iterator();
116 it_map: while (it.next()) |kv| {
117 if (kv.key.len == 0) continue;
118 if (kv.key[0] == '!') continue;
119 if (kv.value != .Object) continue;
120 if (!kv.value.Object.contains("NumArgs")) continue;
121 if (!kv.value.Object.contains("Name")) continue;
122 for (blacklisted_options) |blacklisted_key| {
123 if (std.mem.eql(u8, blacklisted_key, kv.key)) continue :it_map;
124 }
125 if (kv.value.Object.get("Name").?.value.String.len == 0) continue;
126 try all_names.append(kv.key);
127 }
128 }
129 std.sort.sort([]const u8, all_names.span(), nameLessThan);
130
131 var stdout_bos = std.io.bufferedOutStream(std.io.getStdOut().outStream());
132 const stdout = stdout_bos.outStream();
133 try stdout.writeAll(
134 \\// This file is generated by tools/update_clang_options.zig.
135 \\// zig fmt: off
136 \\usingnamespace @import("clang_options.zig");
137 \\pub const data = blk: { @setEvalBranchQuota(6000); break :blk &[_]CliArg{
138 \\
139 );
140
141 for (all_names.span()) |key| {
142 const obj = &root_map.get(key).?.value.Object;
143 const name = obj.get("Name").?.value.String;
144 var pd1 = false;
145 var pd2 = false;
146 var pslash = false;
147 for (obj.get("Prefixes").?.value.Array.span()) |prefix_json| {
148 const prefix = prefix_json.String;
149 if (std.mem.eql(u8, prefix, "-")) {
150 pd1 = true;
151 } else if (std.mem.eql(u8, prefix, "--")) {
152 pd2 = true;
153 } else if (std.mem.eql(u8, prefix, "/")) {
154 pslash = true;
155 } else {
156 std.debug.warn("{} (key {}) has unrecognized prefix '{}'\n", .{ name, key, prefix });
157 std.process.exit(1);
158 }
159 }
160 const num_args = @intCast(u8, obj.get("NumArgs").?.value.Integer);
161 const syntax_str: []const u8 = blk: {
162 for (obj.get("!superclasses").?.value.Array.span()) |superclass_json| {
163 const superclass = superclass_json.String;
164 if (std.mem.eql(u8, superclass, "Joined")) {
165 break :blk ".joined";
166 } else if (std.mem.eql(u8, superclass, "CLJoined")) {
167 break :blk ".joined";
168 } else if (std.mem.eql(u8, superclass, "CLIgnoredJoined")) {
169 break :blk ".joined";
170 } else if (std.mem.eql(u8, superclass, "CLCompileJoined")) {
171 break :blk ".joined";
172 } else if (std.mem.eql(u8, superclass, "JoinedOrSeparate")) {
173 break :blk ".joined_or_separate";
174 } else if (std.mem.eql(u8, superclass, "CLJoinedOrSeparate")) {
175 break :blk ".joined_or_separate";
176 } else if (std.mem.eql(u8, superclass, "CLCompileJoinedOrSeparate")) {
177 break :blk ".joined_or_separate";
178 } else if (std.mem.eql(u8, superclass, "Flag")) {
179 break :blk ".flag";
180 } else if (std.mem.eql(u8, superclass, "CLFlag")) {
181 break :blk ".flag";
182 } else if (std.mem.eql(u8, superclass, "CLIgnoredFlag")) {
183 break :blk ".flag";
184 } else if (std.mem.eql(u8, superclass, "Separate")) {
185 break :blk ".separate";
186 } else if (std.mem.eql(u8, superclass, "JoinedAndSeparate")) {
187 break :blk ".joined_and_separate";
188 } else if (std.mem.eql(u8, superclass, "CommaJoined")) {
189 break :blk ".comma_joined";
190 } else if (std.mem.eql(u8, superclass, "CLRemainingArgsJoined")) {
191 break :blk ".remaining_args_joined";
192 } else if (std.mem.eql(u8, superclass, "MultiArg")) {
193 break :blk try std.fmt.allocPrint(allocator, ".{{ .multi_arg = {} }}", .{num_args});
194 }
195 }
196 if (std.mem.eql(u8, name, "<input>")) {
197 break :blk ".flag";
198 } else if (std.mem.eql(u8, name, "<unknown>")) {
199 break :blk ".flag";
200 }
201 const kind_def = obj.get("Kind").?.value.Object.get("def").?.value.String;
202 if (std.mem.eql(u8, kind_def, "KIND_FLAG")) {
203 break :blk ".flag";
204 }
205 std.debug.warn("{} (key {}) has unrecognized superclasses:\n", .{ name, key });
206 for (obj.get("!superclasses").?.value.Array.span()) |superclass_json| {
207 std.debug.warn(" {}\n", .{superclass_json.String});
208 }
209 std.process.exit(1);
210 };
211 if (knownOption(name)) |ident| {
212 try stdout.print(
213 \\.{{
214 \\ .name = "{}",
215 \\ .syntax = {},
216 \\ .zig_equivalent = .{},
217 \\ .pd1 = {},
218 \\ .pd2 = {},
219 \\ .psl = {},
220 \\}},
221 \\
222 , .{ name, syntax_str, ident, pd1, pd2, pslash });
223 } else if (pd1 and !pd2 and !pslash and
224 std.mem.eql(u8, syntax_str, ".flag"))
225 {
226 try stdout.print("flagpd1(\"{}\"),\n", .{name});
227 } else if (pd1 and !pd2 and !pslash and
228 std.mem.eql(u8, syntax_str, ".joined"))
229 {
230 try stdout.print("joinpd1(\"{}\"),\n", .{name});
231 } else if (pd1 and !pd2 and !pslash and
232 std.mem.eql(u8, syntax_str, ".joined_or_separate"))
233 {
234 try stdout.print("jspd1(\"{}\"),\n", .{name});
235 } else if (pd1 and !pd2 and !pslash and
236 std.mem.eql(u8, syntax_str, ".separate"))
237 {
238 try stdout.print("sepd1(\"{}\"),\n", .{name});
239 } else {
240 try stdout.print(
241 \\.{{
242 \\ .name = "{}",
243 \\ .syntax = {},
244 \\ .zig_equivalent = .other,
245 \\ .pd1 = {},
246 \\ .pd2 = {},
247 \\ .psl = {},
248 \\}},
249 \\
250 , .{ name, syntax_str, pd1, pd2, pslash });
251 }
252 }
253
254 try stdout.writeAll(
255 \\};};
256 \\
257 );
258
259 try stdout_bos.flush();
260}
261
262fn nameLessThan(a: []const u8, b: []const u8) bool {
263 return std.mem.lessThan(u8, a, b);
264}
265
266fn usageAndExit(file: fs.File, arg0: []const u8, code: u8) noreturn {
267 file.outStream().print(
268 \\Usage: {} /path/to/llvm-tblgen /path/to/git/llvm/llvm-project
269 \\
270 \\Prints to stdout Zig code which you can use to replace the file src-self-hosted/clang_options_data.zig.
271 \\
272 , .{arg0}) catch std.process.exit(1);
273 std.process.exit(code);
274}