authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-03-21 15:29:52-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-03-21 15:40:49-04:00
log0eee98edc1e505486a9ec51a331d3aa322fce9ee
treedfdc8a69b1c1f3d2ebf89f4a09f81c1d1942866e
parenta4eaeee72011a2f7866a18420812178991feaf8d
signaturelock-open Commit is signed but in an unrecognized format.

zig cc improvements

* The generated options data file is sorted now in a way that makes sure longer prefixes are first. This prevents collisions with some parameters. * Add support for `-fPIC`, `-fno-PIC`, `-nostdlib`, `-shared`, `-rdynamic`, `-Wl,-soname`, `-Wl,-rpath` * Better support for `-o`. * Disable generating h files * Shared library support. * Better positional argument support.

6 files changed, 1845 insertions(+), 1555 deletions(-)

src-self-hosted/clang_options.zig+3-3
......@@ -20,7 +20,7 @@ pub const CliArg = struct {
2020 /// Prefixed by "/"
2121 psl: bool = false,
2222
23 const Syntax = union(enum) {
23 pub const Syntax = union(enum) {
2424 /// A flag with no values.
2525 flag,
2626
......@@ -46,7 +46,7 @@ pub const CliArg = struct {
4646 multi_arg: u8,
4747 };
4848
49 fn matchEql(self: CliArg, arg: []const u8) bool {
49 pub fn matchEql(self: CliArg, arg: []const u8) bool {
5050 if (self.pd1 and arg.len >= self.name.len + 1 and
5151 mem.startsWith(u8, arg, "-") and mem.eql(u8, arg[1..], self.name))
5252 {
......@@ -65,7 +65,7 @@ pub const CliArg = struct {
6565 return false;
6666 }
6767
68 fn matchStartsWith(self: CliArg, arg: []const u8) usize {
68 pub fn matchStartsWith(self: CliArg, arg: []const u8) usize {
6969 if (self.pd1 and arg.len >= self.name.len + 1 and
7070 mem.startsWith(u8, arg, "-") and mem.startsWith(u8, arg[1..], self.name))
7171 {
src-self-hosted/clang_options_data.zig+1497-1469
......@@ -2,21 +2,13 @@
22// zig fmt: off
33usingnamespace @import("clang_options.zig");
44pub const data = blk: { @setEvalBranchQuota(6000); break :blk &[_]CliArg{
5jspd1("A"),
6joinpd1("A-"),
7jspd1("B"),
85flagpd1("C"),
96flagpd1("CC"),
10jspd1("D"),
117flagpd1("E"),
128flagpd1("EB"),
139flagpd1("EL"),
1410flagpd1("Eonly"),
15jspd1("F"),
16jspd1("G"),
17joinpd1("G="),
1811flagpd1("H"),
19jspd1("I"),
2012.{
2113 .name = "<input>",
2214 .syntax = .flag,
......@@ -26,42 +18,25 @@ jspd1("I"),
2618 .psl = false,
2719},
2820flagpd1("I-"),
29jspd1("J"),
30jspd1("L"),
3121flagpd1("M"),
3222flagpd1("MD"),
33jspd1("MF"),
3423flagpd1("MG"),
35jspd1("MJ"),
3624flagpd1("MM"),
3725flagpd1("MMD"),
3826flagpd1("MP"),
39jspd1("MQ"),
40jspd1("MT"),
4127flagpd1("MV"),
4228flagpd1("Mach"),
43joinpd1("O"),
4429flagpd1("O0"),
4530flagpd1("O4"),
4631flagpd1("O"),
4732flagpd1("ObjC"),
4833flagpd1("ObjC++"),
49joinpd1("Ofast"),
5034flagpd1("P"),
5135flagpd1("Q"),
5236flagpd1("Qn"),
5337flagpd1("Qunused-arguments"),
5438flagpd1("Qy"),
55joinpd1("R"),
56joinpd1("Rpass="),
57joinpd1("Rpass-analysis="),
58joinpd1("Rpass-missed="),
5939flagpd1("S"),
60jspd1("T"),
61jspd1("Tbss"),
62jspd1("Tdata"),
63jspd1("Ttext"),
64jspd1("U"),
6540.{
6641 .name = "<unknown>",
6742 .syntax = .flag,
......@@ -70,74 +45,24 @@ jspd1("U"),
7045 .pd2 = false,
7146 .psl = false,
7247},
73jspd1("V"),
7448flagpd1("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},
8449flagpd1("Wall"),
8550flagpd1("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="),
9651flagpd1("Wlarge-by-value-copy"),
97joinpd1("Wlarger-than-"),
98joinpd1("Wlarger-than="),
9952flagpd1("Wno-deprecated"),
100joinpd1("Wno-nonportable-cfstrings"),
10153flagpd1("Wno-rewrite-macros"),
10254flagpd1("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},
11255flagpd1("Wwrite-strings"),
11356flagpd1("X"),
114joinpd1("X"),
11557sepd1("Xanalyzer"),
116.{
117 .name = "Xarch_",
118 .syntax = .joined_and_separate,
119 .zig_equivalent = .other,
120 .pd1 = true,
121 .pd2 = false,
122 .psl = false,
123},
12458sepd1("Xassembler"),
12559sepd1("Xclang"),
12660sepd1("Xcuda-fatbinary"),
12761sepd1("Xcuda-ptxas"),
12862sepd1("Xlinker"),
12963sepd1("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},
13864sepd1("Xpreprocessor"),
13965flagpd1("Z"),
140joinpd1("Z"),
14166flagpd1("Z-Xlinker-no-demangle"),
14267flagpd1("Z-reserved-lib-cckext"),
14368flagpd1("Z-reserved-lib-stdc++"),
......@@ -150,23 +75,7 @@ sepd1("Zlinker-input"),
15075 .pd2 = true,
15176 .psl = false,
15277},
153.{
154 .name = "CLASSPATH=",
155 .syntax = .joined,
156 .zig_equivalent = .other,
157 .pd1 = false,
158 .pd2 = true,
159 .psl = false,
160},
16178flagpd1("###"),
162.{
163 .name = "AI",
164 .syntax = .joined_or_separate,
165 .zig_equivalent = .other,
166 .pd1 = true,
167 .pd2 = false,
168 .psl = true,
169},
17079.{
17180 .name = "Brepro",
17281 .syntax = .flag,
......@@ -207,14 +116,6 @@ flagpd1("###"),
207116 .pd2 = false,
208117 .psl = true,
209118},
210.{
211 .name = "D",
212 .syntax = .joined_or_separate,
213 .zig_equivalent = .other,
214 .pd1 = true,
215 .pd2 = false,
216 .psl = true,
217},
218119.{
219120 .name = "E",
220121 .syntax = .flag,
......@@ -223,14 +124,6 @@ flagpd1("###"),
223124 .pd2 = false,
224125 .psl = true,
225126},
226.{
227 .name = "EH",
228 .syntax = .joined,
229 .zig_equivalent = .other,
230 .pd1 = true,
231 .pd2 = false,
232 .psl = true,
233},
234127.{
235128 .name = "EP",
236129 .syntax = .flag,
......@@ -239,14 +132,6 @@ flagpd1("###"),
239132 .pd2 = false,
240133 .psl = true,
241134},
242.{
243 .name = "F",
244 .syntax = .joined_or_separate,
245 .zig_equivalent = .other,
246 .pd1 = true,
247 .pd2 = false,
248 .psl = true,
249},
250135.{
251136 .name = "FA",
252137 .syntax = .flag,
......@@ -255,14 +140,6 @@ flagpd1("###"),
255140 .pd2 = false,
256141 .psl = true,
257142},
258.{
259 .name = "FA",
260 .syntax = .joined,
261 .zig_equivalent = .other,
262 .pd1 = true,
263 .pd2 = false,
264 .psl = true,
265},
266143.{
267144 .name = "FC",
268145 .syntax = .flag,
......@@ -271,22 +148,6 @@ flagpd1("###"),
271148 .pd2 = false,
272149 .psl = true,
273150},
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},
290151.{
291152 .name = "FS",
292153 .syntax = .flag,
......@@ -295,78 +156,6 @@ flagpd1("###"),
295156 .pd2 = false,
296157 .psl = true,
297158},
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},
370159.{
371160 .name = "Fx",
372161 .syntax = .flag,
......@@ -559,14 +348,6 @@ flagpd1("###"),
559348 .pd2 = false,
560349 .psl = true,
561350},
562.{
563 .name = "Gs",
564 .syntax = .joined,
565 .zig_equivalent = .other,
566 .pd1 = true,
567 .pd2 = false,
568 .psl = true,
569},
570351.{
571352 .name = "Gv",
572353 .syntax = .flag,
......@@ -631,14 +412,6 @@ flagpd1("###"),
631412 .pd2 = false,
632413 .psl = true,
633414},
634.{
635 .name = "I",
636 .syntax = .joined_or_separate,
637 .zig_equivalent = .other,
638 .pd1 = true,
639 .pd2 = false,
640 .psl = true,
641},
642415.{
643416 .name = "J",
644417 .syntax = .flag,
......@@ -695,14 +468,6 @@ flagpd1("###"),
695468 .pd2 = false,
696469 .psl = true,
697470},
698.{
699 .name = "MP",
700 .syntax = .joined,
701 .zig_equivalent = .other,
702 .pd1 = true,
703 .pd2 = false,
704 .psl = true,
705},
706471.{
707472 .name = "MT",
708473 .syntax = .flag,
......@@ -719,14 +484,6 @@ flagpd1("###"),
719484 .pd2 = false,
720485 .psl = true,
721486},
722.{
723 .name = "O",
724 .syntax = .joined,
725 .zig_equivalent = .other,
726 .pd1 = true,
727 .pd2 = false,
728 .psl = true,
729},
730487.{
731488 .name = "P",
732489 .syntax = .flag,
......@@ -775,14 +532,6 @@ flagpd1("###"),
775532 .pd2 = false,
776533 .psl = true,
777534},
778.{
779 .name = "Qpar-report",
780 .syntax = .joined,
781 .zig_equivalent = .other,
782 .pd1 = true,
783 .pd2 = false,
784 .psl = true,
785},
786535.{
787536 .name = "Qsafe_fp_loads",
788537 .syntax = .flag,
......@@ -816,24 +565,8 @@ flagpd1("###"),
816565 .psl = true,
817566},
818567.{
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,
568 .name = "TC",
569 .syntax = .flag,
837570 .zig_equivalent = .other,
838571 .pd1 = true,
839572 .pd2 = false,
......@@ -847,30 +580,6 @@ flagpd1("###"),
847580 .pd2 = false,
848581 .psl = true,
849582},
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},
874583.{
875584 .name = "V",
876585 .syntax = .flag,
......@@ -975,14 +684,6 @@ flagpd1("###"),
975684 .pd2 = false,
976685 .psl = true,
977686},
978.{
979 .name = "Yc",
980 .syntax = .joined,
981 .zig_equivalent = .other,
982 .pd1 = true,
983 .pd2 = false,
984 .psl = true,
985},
986687.{
987688 .name = "Yd",
988689 .syntax = .flag,
......@@ -991,22 +692,6 @@ flagpd1("###"),
991692 .pd2 = false,
992693 .psl = true,
993694},
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},
1010695.{
1011696 .name = "Z7",
1012697 .syntax = .flag,
......@@ -1047,14 +732,6 @@ flagpd1("###"),
1047732 .pd2 = false,
1048733 .psl = true,
1049734},
1050.{
1051 .name = "ZW",
1052 .syntax = .joined,
1053 .zig_equivalent = .other,
1054 .pd1 = true,
1055 .pd2 = false,
1056 .psl = true,
1057},
1058735.{
1059736 .name = "Za",
1060737 .syntax = .flag,
......@@ -1063,14 +740,6 @@ flagpd1("###"),
1063740 .pd2 = false,
1064741 .psl = true,
1065742},
1066.{
1067 .name = "Zc:",
1068 .syntax = .joined,
1069 .zig_equivalent = .other,
1070 .pd1 = true,
1071 .pd2 = false,
1072 .psl = true,
1073},
1074743.{
1075744 .name = "Zc:__cplusplus",
1076745 .syntax = .flag,
......@@ -1287,14 +956,6 @@ flagpd1("###"),
1287956 .pd2 = false,
1288957 .psl = true,
1289958},
1290.{
1291 .name = "Zm",
1292 .syntax = .joined,
1293 .zig_equivalent = .other,
1294 .pd1 = true,
1295 .pd2 = false,
1296 .psl = true,
1297},
1298959.{
1299960 .name = "Zo",
1300961 .syntax = .flag,
......@@ -1311,14 +972,6 @@ flagpd1("###"),
1311972 .pd2 = false,
1312973 .psl = true,
1313974},
1314.{
1315 .name = "Zp",
1316 .syntax = .joined,
1317 .zig_equivalent = .other,
1318 .pd1 = true,
1319 .pd2 = false,
1320 .psl = true,
1321},
1322975.{
1323976 .name = "Zp",
1324977 .syntax = .flag,
......@@ -1343,14 +996,6 @@ flagpd1("###"),
1343996 .pd2 = false,
1344997 .psl = true,
1345998},
1346.{
1347 .name = "arch:",
1348 .syntax = .joined,
1349 .zig_equivalent = .other,
1350 .pd1 = true,
1351 .pd2 = false,
1352 .psl = true,
1353},
1354999.{
13551000 .name = "await",
13561001 .syntax = .flag,
......@@ -1375,38 +1020,6 @@ flagpd1("###"),
13751020 .pd2 = false,
13761021 .psl = true,
13771022},
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},
14101023.{
14111024 .name = "d1PP",
14121025 .syntax = .flag,
......@@ -1423,14 +1036,6 @@ flagpd1("###"),
14231036 .pd2 = false,
14241037 .psl = true,
14251038},
1426.{
1427 .name = "d2",
1428 .syntax = .joined,
1429 .zig_equivalent = .other,
1430 .pd1 = true,
1431 .pd2 = false,
1432 .psl = true,
1433},
14341039.{
14351040 .name = "d2FastFail",
14361041 .syntax = .flag,
......@@ -1471,30 +1076,6 @@ flagpd1("###"),
14711076 .pd2 = false,
14721077 .psl = true,
14731078},
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},
14981079.{
14991080 .name = "fallback",
15001081 .syntax = .flag,
......@@ -1503,14 +1084,6 @@ flagpd1("###"),
15031084 .pd2 = false,
15041085 .psl = true,
15051086},
1506.{
1507 .name = "favor",
1508 .syntax = .joined,
1509 .zig_equivalent = .other,
1510 .pd1 = true,
1511 .pd2 = false,
1512 .psl = true,
1513},
15141087.{
15151088 .name = "fp:except",
15161089 .syntax = .flag,
......@@ -1551,18 +1124,10 @@ flagpd1("###"),
15511124 .pd2 = false,
15521125 .psl = true,
15531126},
1554.{
1555 .name = "guard:",
1556 .syntax = .joined,
1557 .zig_equivalent = .other,
1558 .pd1 = true,
1559 .pd2 = false,
1560 .psl = true,
1561},
15621127.{
15631128 .name = "help",
15641129 .syntax = .flag,
1565 .zig_equivalent = .other,
1130 .zig_equivalent = .passthrough,
15661131 .pd1 = true,
15671132 .pd2 = false,
15681133 .psl = true,
......@@ -1583,14 +1148,6 @@ flagpd1("###"),
15831148 .pd2 = false,
15841149 .psl = true,
15851150},
1586.{
1587 .name = "imsvc",
1588 .syntax = .joined_or_separate,
1589 .zig_equivalent = .other,
1590 .pd1 = true,
1591 .pd2 = false,
1592 .psl = true,
1593},
15941151.{
15951152 .name = "kernel",
15961153 .syntax = .flag,
......@@ -1607,14 +1164,6 @@ flagpd1("###"),
16071164 .pd2 = false,
16081165 .psl = true,
16091166},
1610.{
1611 .name = "link",
1612 .syntax = .remaining_args_joined,
1613 .zig_equivalent = .other,
1614 .pd1 = true,
1615 .pd2 = false,
1616 .psl = true,
1617},
16181167.{
16191168 .name = "nologo",
16201169 .syntax = .flag,
......@@ -1623,14 +1172,6 @@ flagpd1("###"),
16231172 .pd2 = false,
16241173 .psl = true,
16251174},
1626.{
1627 .name = "o",
1628 .syntax = .joined_or_separate,
1629 .zig_equivalent = .o,
1630 .pd1 = true,
1631 .pd2 = false,
1632 .psl = true,
1633},
16341175.{
16351176 .name = "openmp",
16361177 .syntax = .flag,
......@@ -1703,22 +1244,6 @@ flagpd1("###"),
17031244 .pd2 = false,
17041245 .psl = true,
17051246},
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},
17221247.{
17231248 .name = "u",
17241249 .syntax = .flag,
......@@ -1751,14 +1276,6 @@ flagpd1("###"),
17511276 .pd2 = false,
17521277 .psl = true,
17531278},
1754.{
1755 .name = "vd",
1756 .syntax = .joined,
1757 .zig_equivalent = .other,
1758 .pd1 = true,
1759 .pd2 = false,
1760 .psl = true,
1761},
17621279.{
17631280 .name = "vmb",
17641281 .syntax = .flag,
......@@ -1815,14 +1332,6 @@ flagpd1("###"),
18151332 .pd2 = false,
18161333 .psl = true,
18171334},
1818.{
1819 .name = "w",
1820 .syntax = .joined,
1821 .zig_equivalent = .other,
1822 .pd1 = true,
1823 .pd2 = false,
1824 .psl = true,
1825},
18261335.{
18271336 .name = "w",
18281337 .syntax = .flag,
......@@ -1895,14 +1404,6 @@ flagpd1("###"),
18951404 .pd2 = true,
18961405 .psl = false,
18971406},
1898.{
1899 .name = "analyzer-output",
1900 .syntax = .joined_or_separate,
1901 .zig_equivalent = .other,
1902 .pd1 = false,
1903 .pd2 = true,
1904 .psl = false,
1905},
19061407.{
19071408 .name = "assemble",
19081409 .syntax = .flag,
......@@ -1920,45 +1421,21 @@ flagpd1("###"),
19201421 .psl = false,
19211422},
19221423.{
1923 .name = "assert=",
1924 .syntax = .joined,
1424 .name = "bootclasspath",
1425 .syntax = .separate,
19251426 .zig_equivalent = .other,
19261427 .pd1 = false,
19271428 .pd2 = true,
19281429 .psl = false,
19291430},
19301431.{
1931 .name = "bootclasspath",
1432 .name = "classpath",
19321433 .syntax = .separate,
19331434 .zig_equivalent = .other,
19341435 .pd1 = false,
19351436 .pd2 = true,
19361437 .psl = false,
19371438},
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},
19621439.{
19631440 .name = "comments",
19641441 .syntax = .flag,
......@@ -1999,14 +1476,6 @@ flagpd1("###"),
19991476 .pd2 = true,
20001477 .psl = false,
20011478},
2002.{
2003 .name = "debug=",
2004 .syntax = .joined,
2005 .zig_equivalent = .other,
2006 .pd1 = false,
2007 .pd2 = true,
2008 .psl = false,
2009},
20101479.{
20111480 .name = "define-macro",
20121481 .syntax = .separate,
......@@ -2015,14 +1484,6 @@ flagpd1("###"),
20151484 .pd2 = true,
20161485 .psl = false,
20171486},
2018.{
2019 .name = "define-macro=",
2020 .syntax = .joined,
2021 .zig_equivalent = .other,
2022 .pd1 = false,
2023 .pd2 = true,
2024 .psl = false,
2025},
20261487.{
20271488 .name = "dependencies",
20281489 .syntax = .flag,
......@@ -2039,14 +1500,6 @@ flagpd1("###"),
20391500 .pd2 = true,
20401501 .psl = false,
20411502},
2042.{
2043 .name = "dyld-prefix=",
2044 .syntax = .joined,
2045 .zig_equivalent = .other,
2046 .pd1 = false,
2047 .pd2 = true,
2048 .psl = false,
2049},
20501503.{
20511504 .name = "encoding",
20521505 .syntax = .separate,
......@@ -2055,14 +1508,6 @@ flagpd1("###"),
20551508 .pd2 = true,
20561509 .psl = false,
20571510},
2058.{
2059 .name = "encoding=",
2060 .syntax = .joined,
2061 .zig_equivalent = .other,
2062 .pd1 = false,
2063 .pd2 = true,
2064 .psl = false,
2065},
20661511.{
20671512 .name = "entry",
20681513 .syntax = .flag,
......@@ -2079,14 +1524,6 @@ flagpd1("###"),
20791524 .pd2 = true,
20801525 .psl = false,
20811526},
2082.{
2083 .name = "extdirs=",
2084 .syntax = .joined,
2085 .zig_equivalent = .other,
2086 .pd1 = false,
2087 .pd2 = true,
2088 .psl = false,
2089},
20901527.{
20911528 .name = "extra-warnings",
20921529 .syntax = .flag,
......@@ -2103,14 +1540,6 @@ flagpd1("###"),
21031540 .pd2 = true,
21041541 .psl = false,
21051542},
2106.{
2107 .name = "for-linker=",
2108 .syntax = .joined,
2109 .zig_equivalent = .other,
2110 .pd1 = false,
2111 .pd2 = true,
2112 .psl = false,
2113},
21141543.{
21151544 .name = "force-link",
21161545 .syntax = .separate,
......@@ -2119,14 +1548,6 @@ flagpd1("###"),
21191548 .pd2 = true,
21201549 .psl = false,
21211550},
2122.{
2123 .name = "force-link=",
2124 .syntax = .joined,
2125 .zig_equivalent = .other,
2126 .pd1 = false,
2127 .pd2 = true,
2128 .psl = false,
2129},
21301551.{
21311552 .name = "help-hidden",
21321553 .syntax = .flag,
......@@ -2135,22 +1556,6 @@ flagpd1("###"),
21351556 .pd2 = true,
21361557 .psl = false,
21371558},
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},
21541559.{
21551560 .name = "include-barrier",
21561561 .syntax = .flag,
......@@ -2167,14 +1572,6 @@ flagpd1("###"),
21671572 .pd2 = true,
21681573 .psl = false,
21691574},
2170.{
2171 .name = "include-directory=",
2172 .syntax = .joined,
2173 .zig_equivalent = .other,
2174 .pd1 = false,
2175 .pd2 = true,
2176 .psl = false,
2177},
21781575.{
21791576 .name = "include-directory-after",
21801577 .syntax = .separate,
......@@ -2183,14 +1580,6 @@ flagpd1("###"),
21831580 .pd2 = true,
21841581 .psl = false,
21851582},
2186.{
2187 .name = "include-directory-after=",
2188 .syntax = .joined,
2189 .zig_equivalent = .other,
2190 .pd1 = false,
2191 .pd2 = true,
2192 .psl = false,
2193},
21941583.{
21951584 .name = "include-prefix",
21961585 .syntax = .separate,
......@@ -2199,14 +1588,6 @@ flagpd1("###"),
21991588 .pd2 = true,
22001589 .psl = false,
22011590},
2202.{
2203 .name = "include-prefix=",
2204 .syntax = .joined,
2205 .zig_equivalent = .other,
2206 .pd1 = false,
2207 .pd2 = true,
2208 .psl = false,
2209},
22101591.{
22111592 .name = "include-with-prefix",
22121593 .syntax = .separate,
......@@ -2215,14 +1596,6 @@ flagpd1("###"),
22151596 .pd2 = true,
22161597 .psl = false,
22171598},
2218.{
2219 .name = "include-with-prefix=",
2220 .syntax = .joined,
2221 .zig_equivalent = .other,
2222 .pd1 = false,
2223 .pd2 = true,
2224 .psl = false,
2225},
22261599.{
22271600 .name = "include-with-prefix-after",
22281601 .syntax = .separate,
......@@ -2231,14 +1604,6 @@ flagpd1("###"),
22311604 .pd2 = true,
22321605 .psl = false,
22331606},
2234.{
2235 .name = "include-with-prefix-after=",
2236 .syntax = .joined,
2237 .zig_equivalent = .other,
2238 .pd1 = false,
2239 .pd2 = true,
2240 .psl = false,
2241},
22421607.{
22431608 .name = "include-with-prefix-before",
22441609 .syntax = .separate,
......@@ -2247,14 +1612,6 @@ flagpd1("###"),
22471612 .pd2 = true,
22481613 .psl = false,
22491614},
2250.{
2251 .name = "include-with-prefix-before=",
2252 .syntax = .joined,
2253 .zig_equivalent = .other,
2254 .pd1 = false,
2255 .pd2 = true,
2256 .psl = false,
2257},
22581615.{
22591616 .name = "language",
22601617 .syntax = .separate,
......@@ -2263,14 +1620,6 @@ flagpd1("###"),
22631620 .pd2 = true,
22641621 .psl = false,
22651622},
2266.{
2267 .name = "language=",
2268 .syntax = .joined,
2269 .zig_equivalent = .other,
2270 .pd1 = false,
2271 .pd2 = true,
2272 .psl = false,
2273},
22741623.{
22751624 .name = "library-directory",
22761625 .syntax = .separate,
......@@ -2279,14 +1628,6 @@ flagpd1("###"),
22791628 .pd2 = true,
22801629 .psl = false,
22811630},
2282.{
2283 .name = "library-directory=",
2284 .syntax = .joined,
2285 .zig_equivalent = .other,
2286 .pd1 = false,
2287 .pd2 = true,
2288 .psl = false,
2289},
22901631.{
22911632 .name = "mhwdiv",
22921633 .syntax = .separate,
......@@ -2295,14 +1636,6 @@ flagpd1("###"),
22951636 .pd2 = true,
22961637 .psl = false,
22971638},
2298.{
2299 .name = "mhwdiv=",
2300 .syntax = .joined,
2301 .zig_equivalent = .other,
2302 .pd1 = false,
2303 .pd2 = true,
2304 .psl = false,
2305},
23061639.{
23071640 .name = "migrate",
23081641 .syntax = .flag,
......@@ -2330,7 +1663,7 @@ flagpd1("###"),
23301663.{
23311664 .name = "no-standard-libraries",
23321665 .syntax = .flag,
2333 .zig_equivalent = .other,
1666 .zig_equivalent = .nostdlib,
23341667 .pd1 = false,
23351668 .pd2 = true,
23361669 .psl = false,
......@@ -2359,14 +1692,6 @@ flagpd1("###"),
23591692 .pd2 = true,
23601693 .psl = false,
23611694},
2362.{
2363 .name = "optimize=",
2364 .syntax = .joined,
2365 .zig_equivalent = .other,
2366 .pd1 = false,
2367 .pd2 = true,
2368 .psl = false,
2369},
23701695.{
23711696 .name = "output",
23721697 .syntax = .separate,
......@@ -2375,14 +1700,6 @@ flagpd1("###"),
23751700 .pd2 = true,
23761701 .psl = false,
23771702},
2378.{
2379 .name = "output=",
2380 .syntax = .joined,
2381 .zig_equivalent = .other,
2382 .pd1 = false,
2383 .pd2 = true,
2384 .psl = false,
2385},
23861703.{
23871704 .name = "output-class-directory",
23881705 .syntax = .separate,
......@@ -2391,14 +1708,6 @@ flagpd1("###"),
23911708 .pd2 = true,
23921709 .psl = false,
23931710},
2394.{
2395 .name = "output-class-directory=",
2396 .syntax = .joined,
2397 .zig_equivalent = .other,
2398 .pd1 = false,
2399 .pd2 = true,
2400 .psl = false,
2401},
24021711.{
24031712 .name = "param",
24041713 .syntax = .separate,
......@@ -2407,14 +1716,6 @@ flagpd1("###"),
24071716 .pd2 = true,
24081717 .psl = false,
24091718},
2410.{
2411 .name = "param=",
2412 .syntax = .joined,
2413 .zig_equivalent = .other,
2414 .pd1 = false,
2415 .pd2 = true,
2416 .psl = false,
2417},
24181719.{
24191720 .name = "precompile",
24201721 .syntax = .flag,
......@@ -2431,14 +1732,6 @@ flagpd1("###"),
24311732 .pd2 = true,
24321733 .psl = false,
24331734},
2434.{
2435 .name = "prefix=",
2436 .syntax = .joined,
2437 .zig_equivalent = .other,
2438 .pd1 = false,
2439 .pd2 = true,
2440 .psl = false,
2441},
24421735.{
24431736 .name = "preprocess",
24441737 .syntax = .flag,
......@@ -2503,14 +1796,6 @@ flagpd1("###"),
25031796 .pd2 = true,
25041797 .psl = false,
25051798},
2506.{
2507 .name = "resource=",
2508 .syntax = .joined,
2509 .zig_equivalent = .other,
2510 .pd1 = false,
2511 .pd2 = true,
2512 .psl = false,
2513},
25141799.{
25151800 .name = "rtlib",
25161801 .syntax = .separate,
......@@ -2559,14 +1844,6 @@ flagpd1("###"),
25591844 .pd2 = true,
25601845 .psl = false,
25611846},
2562.{
2563 .name = "sysroot=",
2564 .syntax = .joined,
2565 .zig_equivalent = .other,
2566 .pd1 = false,
2567 .pd2 = true,
2568 .psl = false,
2569},
25701847.{
25711848 .name = "target-help",
25721849 .syntax = .flag,
......@@ -2591,14 +1868,6 @@ flagpd1("###"),
25911868 .pd2 = true,
25921869 .psl = false,
25931870},
2594.{
2595 .name = "undefine-macro=",
2596 .syntax = .joined,
2597 .zig_equivalent = .other,
2598 .pd1 = false,
2599 .pd2 = true,
2600 .psl = false,
2601},
26021871.{
26031872 .name = "unsigned-char",
26041873 .syntax = .flag,
......@@ -2631,22 +1900,6 @@ flagpd1("###"),
26311900 .pd2 = true,
26321901 .psl = false,
26331902},
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},
26501903.{
26511904 .name = "write-dependencies",
26521905 .syntax = .flag,
......@@ -2663,7 +1916,6 @@ flagpd1("###"),
26631916 .pd2 = true,
26641917 .psl = false,
26651918},
2666joinpd1("a"),
26671919sepd1("add-plugin"),
26681920flagpd1("faggressive-function-elimination"),
26691921flagpd1("fno-aggressive-function-elimination"),
......@@ -2684,9 +1936,7 @@ flagpd1("cfg-add-implicit-dtors"),
26841936flagpd1("unoptimized-cfg"),
26851937flagpd1("analyze"),
26861938sepd1("analyze-function"),
2687joinpd1("analyze-function="),
26881939sepd1("analyzer-checker"),
2689joinpd1("analyzer-checker="),
26901940flagpd1("analyzer-checker-help"),
26911941flagpd1("analyzer-checker-help-alpha"),
26921942flagpd1("analyzer-checker-help-developer"),
......@@ -2695,32 +1945,23 @@ flagpd1("analyzer-checker-option-help-alpha"),
26951945flagpd1("analyzer-checker-option-help-developer"),
26961946sepd1("analyzer-config"),
26971947sepd1("analyzer-config-compatibility-mode"),
2698joinpd1("analyzer-config-compatibility-mode="),
26991948flagpd1("analyzer-config-help"),
27001949sepd1("analyzer-constraints"),
2701joinpd1("analyzer-constraints="),
27021950flagpd1("analyzer-disable-all-checks"),
27031951sepd1("analyzer-disable-checker"),
2704joinpd1("analyzer-disable-checker="),
27051952flagpd1("analyzer-disable-retry-exhausted"),
27061953flagpd1("analyzer-display-progress"),
27071954sepd1("analyzer-dump-egraph"),
2708joinpd1("analyzer-dump-egraph="),
27091955sepd1("analyzer-inline-max-stack-depth"),
2710joinpd1("analyzer-inline-max-stack-depth="),
27111956sepd1("analyzer-inlining-mode"),
2712joinpd1("analyzer-inlining-mode="),
27131957flagpd1("analyzer-list-enabled-checkers"),
27141958sepd1("analyzer-max-loop"),
27151959flagpd1("analyzer-opt-analyze-headers"),
27161960flagpd1("analyzer-opt-analyze-nested-blocks"),
27171961sepd1("analyzer-output"),
2718joinpd1("analyzer-output="),
27191962sepd1("analyzer-purge"),
2720joinpd1("analyzer-purge="),
27211963flagpd1("analyzer-stats"),
27221964sepd1("analyzer-store"),
2723joinpd1("analyzer-store="),
27241965flagpd1("analyzer-viz-egraph-graphviz"),
27251966flagpd1("analyzer-werror"),
27261967flagpd1("fslp-vectorize-aggressive"),
......@@ -2735,7 +1976,6 @@ flagpd1("fhonor-infinites"),
27351976flagpd1("fno-honor-infinites"),
27361977flagpd1("findirect-virtual-calls"),
27371978sepd1("fnew-alignment"),
2738joinpd1("objcmt-white-list-dir-path="),
27391979flagpd1("faligned-new"),
27401980flagpd1("fno-aligned-new"),
27411981flagpd1("fsched-interblock"),
......@@ -2912,27 +2152,16 @@ flagpd1("arcmt-migrate-emit-errors"),
29122152sepd1("arcmt-migrate-report-output"),
29132153flagpd1("arcmt-modify"),
29142154flagpd1("ast-dump"),
2915joinpd1("ast-dump="),
29162155flagpd1("ast-dump-all"),
2917joinpd1("ast-dump-all="),
29182156sepd1("ast-dump-filter"),
29192157flagpd1("ast-dump-lookups"),
29202158flagpd1("ast-list"),
29212159sepd1("ast-merge"),
29222160flagpd1("ast-print"),
29232161flagpd1("ast-view"),
2924.{
2925 .name = "autocomplete=",
2926 .syntax = .joined,
2927 .zig_equivalent = .other,
2928 .pd1 = false,
2929 .pd2 = true,
2930 .psl = false,
2931},
29322162flagpd1("fautomatic"),
29332163flagpd1("fno-automatic"),
29342164sepd1("aux-triple"),
2935jspd1("b"),
29362165flagpd1("fbackslash"),
29372166flagpd1("fno-backslash"),
29382167flagpd1("fbacktrace"),
......@@ -2953,12 +2182,10 @@ sepd1("bundle_loader"),
29532182 .pd2 = false,
29542183 .psl = false,
29552184},
2956jspd1("c-isystem"),
29572185flagpd1("fcaller-saves"),
29582186flagpd1("fno-caller-saves"),
29592187flagpd1("cc1"),
29602188flagpd1("cc1as"),
2961joinpd1("ccc-"),
29622189flagpd1("ccc-arcmt-check"),
29632190sepd1("ccc-arcmt-migrate"),
29642191flagpd1("ccc-arcmt-modify"),
......@@ -2973,14 +2200,6 @@ sepd1("chain-include"),
29732200flagpd1("fcheck-array-temporaries"),
29742201flagpd1("fno-check-array-temporaries"),
29752202flagpd1("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},
29842203flagpd1("cl-fast-relaxed-math"),
29852204flagpd1("cl-finite-math-only"),
29862205flagpd1("cl-fp32-correctly-rounded-divide-sqrt"),
......@@ -2989,13 +2208,10 @@ flagpd1("cl-mad-enable"),
29892208flagpd1("cl-no-signed-zeros"),
29902209flagpd1("cl-opt-disable"),
29912210flagpd1("cl-single-precision-constant"),
2992joinpd1("cl-std="),
29932211flagpd1("cl-strict-aliasing"),
29942212flagpd1("cl-uniform-work-group-size"),
29952213flagpd1("cl-unsafe-math-optimizations"),
2996jspd1("client_name"),
29972214sepd1("code-completion-at"),
2998joinpd1("code-completion-at="),
29992215flagpd1("code-completion-brief-comments"),
30002216flagpd1("code-completion-macros"),
30012217flagpd1("code-completion-patterns"),
......@@ -3008,7 +2224,6 @@ flagpd1("code-completion-with-fixits"),
30082224 .pd2 = true,
30092225 .psl = false,
30102226},
3011jspd1("compatibility_version"),
30122227flagpd1("compiler-options-dump"),
30132228.{
30142229 .name = "compress-debug-sections",
......@@ -3018,14 +2233,6 @@ flagpd1("compiler-options-dump"),
30182233 .pd2 = true,
30192234 .psl = false,
30202235},
3021.{
3022 .name = "compress-debug-sections=",
3023 .syntax = .joined,
3024 .zig_equivalent = .other,
3025 .pd1 = true,
3026 .pd2 = true,
3027 .psl = false,
3028},
30292236.{
30302237 .name = "config",
30312238 .syntax = .separate,
......@@ -3034,22 +2241,6 @@ flagpd1("compiler-options-dump"),
30342241 .pd2 = true,
30352242 .psl = false,
30362243},
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},
30532244.{
30542245 .name = "coverage",
30552246 .syntax = .flag,
......@@ -3060,12 +2251,9 @@ flagpd1("compiler-options-dump"),
30602251},
30612252flagpd1("coverage-cfg-checksum"),
30622253sepd1("coverage-data-file"),
3063joinpd1("coverage-data-file="),
30642254flagpd1("coverage-exit-block-before-body"),
30652255flagpd1("coverage-no-function-names-in-data"),
30662256sepd1("coverage-notes-file"),
3067joinpd1("coverage-notes-file="),
3068joinpd1("coverage-version="),
30692257flagpd1("cpp"),
30702258flagpd1("cpp-precomp"),
30712259flagpd1("fcray-pointer"),
......@@ -3086,14 +2274,6 @@ flagpd1("fno-cray-pointer"),
30862274 .pd2 = true,
30872275 .psl = false,
30882276},
3089.{
3090 .name = "cuda-gpu-arch=",
3091 .syntax = .joined,
3092 .zig_equivalent = .other,
3093 .pd1 = false,
3094 .pd2 = true,
3095 .psl = false,
3096},
30972277.{
30982278 .name = "cuda-host-only",
30992279 .syntax = .flag,
......@@ -3102,14 +2282,6 @@ flagpd1("fno-cray-pointer"),
31022282 .pd2 = true,
31032283 .psl = false,
31042284},
3105.{
3106 .name = "cuda-include-ptx=",
3107 .syntax = .joined,
3108 .zig_equivalent = .other,
3109 .pd1 = false,
3110 .pd2 = true,
3111 .psl = false,
3112},
31132285.{
31142286 .name = "cuda-noopt-device-debug",
31152287 .syntax = .flag,
......@@ -3118,14 +2290,6 @@ flagpd1("fno-cray-pointer"),
31182290 .pd2 = true,
31192291 .psl = false,
31202292},
3121.{
3122 .name = "cuda-path=",
3123 .syntax = .joined,
3124 .zig_equivalent = .other,
3125 .pd1 = false,
3126 .pd2 = true,
3127 .psl = false,
3128},
31292293.{
31302294 .name = "cuda-path-ignore-env",
31312295 .syntax = .flag,
......@@ -3134,23 +2298,18 @@ flagpd1("fno-cray-pointer"),
31342298 .pd2 = true,
31352299 .psl = false,
31362300},
3137jspd1("current_version"),
3138jspd1("cxx-isystem"),
31392301flagpd1("dA"),
31402302flagpd1("dD"),
31412303flagpd1("dI"),
31422304flagpd1("dM"),
31432305flagpd1("d"),
3144joinpd1("d"),
31452306flagpd1("fd-lines-as-code"),
31462307flagpd1("fno-d-lines-as-code"),
31472308flagpd1("fd-lines-as-comments"),
31482309flagpd1("fno-d-lines-as-comments"),
31492310flagpd1("dead_strip"),
31502311flagpd1("debug-forward-template-params"),
3151joinpd1("debug-info-kind="),
31522312flagpd1("debug-info-macro"),
3153joinpd1("debugger-tuning="),
31542313flagpd1("fdefault-double-8"),
31552314flagpd1("fno-default-double-8"),
31562315sepd1("default-function-attr"),
......@@ -3163,14 +2322,6 @@ flagpd1("fno-default-real-8"),
31632322sepd1("defsym"),
31642323sepd1("dependency-dot"),
31652324sepd1("dependency-file"),
3166.{
3167 .name = "dependent-lib=",
3168 .syntax = .joined,
3169 .zig_equivalent = .other,
3170 .pd1 = false,
3171 .pd2 = true,
3172 .psl = false,
3173},
31742325flagpd1("detailed-preprocessing-record"),
31752326flagpd1("fdevirtualize"),
31762327flagpd1("fno-devirtualize"),
......@@ -3190,14 +2341,6 @@ flagpd1("disable-red-zone"),
31902341flagpd1("discard-value-names"),
31912342flagpd1("fdollar-ok"),
31922343flagpd1("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},
32012344flagpd1("dump-coverage-mapping"),
32022345flagpd1("dump-deserialized-decls"),
32032346flagpd1("fdump-fortran-optimized"),
......@@ -3216,13 +2359,10 @@ sepd1("dwarf-debug-flags"),
32162359sepd1("dwarf-debug-producer"),
32172360flagpd1("dwarf-explicit-import"),
32182361flagpd1("dwarf-ext-refs"),
3219joinpd1("dwarf-version="),
32202362sepd1("dylib_file"),
32212363flagpd1("dylinker"),
3222jspd1("dylinker_install_name"),
32232364flagpd1("dynamic"),
32242365flagpd1("dynamiclib"),
3225jspd1("e"),
32262366flagpd1("feliminate-unused-debug-types"),
32272367flagpd1("fno-eliminate-unused-debug-types"),
32282368flagpd1("emit-ast"),
......@@ -3241,24 +2381,24 @@ flagpd1("emit-obj"),
32412381flagpd1("emit-pch"),
32422382flagpd1("enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang"),
32432383sepd1("error-on-deserialized-decl"),
3244joinpd1("error-on-deserialized-decl="),
32452384sepd1("exported_symbols_list"),
32462385flagpd1("fexternal-blas"),
32472386flagpd1("fno-external-blas"),
32482387flagpd1("ff2c"),
32492388flagpd1("fno-f2c"),
3250flagpd1("fPIC"),
2389.{
2390 .name = "fPIC",
2391 .syntax = .flag,
2392 .zig_equivalent = .pic,
2393 .pd1 = true,
2394 .pd2 = false,
2395 .psl = false,
2396},
32512397flagpd1("fPIE"),
32522398flagpd1("faccess-control"),
3253joinpd1("faddress-space-map-mangling="),
32542399flagpd1("faddrsig"),
32552400flagpd1("falign-functions"),
3256joinpd1("falign-functions="),
3257joinpd1("falign-jumps="),
3258joinpd1("falign-labels="),
3259joinpd1("falign-loops="),
32602401flagpd1("faligned-allocation"),
3261joinpd1("faligned-new="),
32622402flagpd1("fallow-editor-placeholders"),
32632403flagpd1("fallow-half-arguments-and-returns"),
32642404flagpd1("fallow-pch-with-compiler-errors"),
......@@ -3281,18 +2421,12 @@ flagpd1("fasynchronous-unwind-tables"),
32812421flagpd1("ffat-lto-objects"),
32822422flagpd1("fno-fat-lto-objects"),
32832423flagpd1("fauto-profile"),
3284joinpd1("fauto-profile="),
32852424flagpd1("fauto-profile-accurate"),
32862425flagpd1("fautolink"),
3287joinpd1("fblas-matmul-limit="),
32882426flagpd1("fblocks"),
32892427flagpd1("fblocks-runtime-optional"),
3290joinpd1("fbootclasspath="),
32912428flagpd1("fborland-extensions"),
32922429sepd1("fbracket-depth"),
3293joinpd1("fbracket-depth="),
3294joinpd1("fbuild-session-file="),
3295joinpd1("fbuild-session-timestamp="),
32962430flagpd1("fbuiltin"),
32972431flagpd1("fbuiltin-module-map"),
32982432flagpd1("fcall-saved-x10"),
......@@ -3307,46 +2441,24 @@ flagpd1("fcall-saved-x9"),
33072441flagpd1("fcaret-diagnostics"),
33082442sepd1("fcaret-diagnostics-max-lines"),
33092443flagpd1("fcf-protection"),
3310joinpd1("fcf-protection="),
3311joinpd1("fcf-runtime-abi="),
33122444flagpd1("fchar8_t"),
3313joinpd1("fcheck="),
33142445flagpd1("fcheck-new"),
33152446flagpd1("fno-check-new"),
3316joinpd1("fclang-abi-compat="),
3317joinpd1("fclasspath="),
3318joinpd1("fcoarray="),
33192447flagpd1("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},
33282448flagpd1("fcommon"),
3329joinpd1("fcompile-resource="),
33302449flagpd1("fcomplete-member-pointers"),
33312450flagpd1("fconcepts-ts"),
33322451flagpd1("fconst-strings"),
33332452flagpd1("fconstant-cfstrings"),
33342453sepd1("fconstant-string-class"),
3335joinpd1("fconstant-string-class="),
33362454sepd1("fconstexpr-backtrace-limit"),
3337joinpd1("fconstexpr-backtrace-limit="),
33382455sepd1("fconstexpr-depth"),
3339joinpd1("fconstexpr-depth="),
33402456sepd1("fconstexpr-steps"),
3341joinpd1("fconstexpr-steps="),
33422457flagpd1("fconvergent-functions"),
3343joinpd1("fconvert="),
33442458flagpd1("fcoroutines-ts"),
33452459flagpd1("fcoverage-mapping"),
3346joinpd1("fcrash-diagnostics-dir="),
33472460flagpd1("fcreate-profile"),
33482461flagpd1("fcs-profile-generate"),
3349joinpd1("fcs-profile-generate="),
33502462flagpd1("fcuda-allow-variadic-functions"),
33512463flagpd1("fcuda-approx-transcendentals"),
33522464flagpd1("fcuda-flush-denormals-to-zero"),
......@@ -3358,14 +2470,11 @@ flagpd1("fcxx-modules"),
33582470flagpd1("fc++-static-destructors"),
33592471flagpd1("fdata-sections"),
33602472sepd1("fdebug-compilation-dir"),
3361joinpd1("fdebug-compilation-dir="),
3362joinpd1("fdebug-default-version="),
33632473flagpd1("fdebug-info-for-profiling"),
33642474flagpd1("fdebug-macro"),
33652475flagpd1("fdebug-pass-arguments"),
33662476flagpd1("fdebug-pass-manager"),
33672477flagpd1("fdebug-pass-structure"),
3368joinpd1("fdebug-prefix-map="),
33692478flagpd1("fdebug-ranges-base-address"),
33702479flagpd1("fdebug-types-section"),
33712480flagpd1("fdebugger-cast-result-to-id"),
......@@ -3373,25 +2482,17 @@ flagpd1("fdebugger-objc-literal"),
33732482flagpd1("fdebugger-support"),
33742483flagpd1("fdeclare-opencl-builtins"),
33752484flagpd1("fdeclspec"),
3376joinpd1("fdefault-calling-conv="),
33772485flagpd1("fdelayed-template-parsing"),
33782486flagpd1("fdelete-null-pointer-checks"),
3379joinpd1("fdenormal-fp-math="),
3380joinpd1("fdepfile-entry="),
33812487flagpd1("fdeprecated-macro"),
33822488flagpd1("fdiagnostics-absolute-paths"),
33832489flagpd1("fdiagnostics-color"),
3384joinpd1("fdiagnostics-color="),
33852490flagpd1("fdiagnostics-fixit-info"),
33862491sepd1("fdiagnostics-format"),
3387joinpd1("fdiagnostics-format="),
3388joinpd1("fdiagnostics-hotness-threshold="),
33892492flagpd1("fdiagnostics-parseable-fixits"),
33902493flagpd1("fdiagnostics-print-source-range-info"),
33912494sepd1("fdiagnostics-show-category"),
3392joinpd1("fdiagnostics-show-category="),
33932495flagpd1("fdiagnostics-show-hotness"),
3394joinpd1("fdiagnostics-show-location="),
33952496flagpd1("fdiagnostics-show-note-include-stack"),
33962497flagpd1("fdiagnostics-show-option"),
33972498flagpd1("fdiagnostics-show-template-tree"),
......@@ -3409,7 +2510,6 @@ flagpd1("fdwarf-exceptions"),
34092510flagpd1("felide-constructors"),
34102511flagpd1("feliminate-unused-debug-symbols"),
34112512flagpd1("fembed-bitcode"),
3412joinpd1("fembed-bitcode="),
34132513flagpd1("fembed-bitcode-marker"),
34142514flagpd1("femit-all-decls"),
34152515flagpd1("femit-coverage-data"),
......@@ -3417,24 +2517,17 @@ flagpd1("femit-coverage-notes"),
34172517flagpd1("femit-debug-entry-values"),
34182518flagpd1("femulated-tls"),
34192519flagpd1("fencode-extended-block-signature"),
3420joinpd1("fencoding="),
34212520sepd1("ferror-limit"),
3422joinpd1("ferror-limit="),
34232521flagpd1("fescaping-block-tail-calls"),
34242522flagpd1("fexceptions"),
3425joinpd1("fexcess-precision="),
3426joinpd1("fexec-charset="),
34272523flagpd1("fexperimental-isel"),
34282524flagpd1("fexperimental-new-constant-interpreter"),
34292525flagpd1("fexperimental-new-pass-manager"),
3430joinpd1("fextdirs="),
34312526flagpd1("fexternc-nounwind"),
34322527flagpd1("ffake-address-space-map"),
34332528flagpd1("ffast-math"),
3434joinpd1("ffile-prefix-map="),
34352529flagpd1("ffine-grained-bitfield-accesses"),
34362530flagpd1("ffinite-math-only"),
3437joinpd1("ffixed-line-length-"),
34382531flagpd1("ffixed-point"),
34392532flagpd1("ffixed-r19"),
34402533flagpd1("ffixed-r9"),
......@@ -3474,18 +2567,12 @@ flagpd1("fforbid-guard-variables"),
34742567flagpd1("fforce-dwarf-frame"),
34752568flagpd1("fforce-emit-vtables"),
34762569flagpd1("fforce-enable-int128"),
3477joinpd1("ffp-contract="),
3478joinpd1("ffp-exception-behavior="),
3479joinpd1("ffp-model="),
3480joinpd1("ffpe-trap="),
3481joinpd1("ffree-line-length-"),
34822570flagpd1("ffreestanding"),
34832571flagpd1("ffunction-sections"),
34842572flagpd1("fgnu89-inline"),
34852573flagpd1("fgnu-inline-asm"),
34862574flagpd1("fgnu-keywords"),
34872575flagpd1("fgnu-runtime"),
3488joinpd1("fgnuc-version="),
34892576flagpd1("fgpu-allow-device-init"),
34902577flagpd1("fgpu-rdc"),
34912578flagpd1("fheinous-gnu-extensions"),
......@@ -3499,17 +2586,11 @@ sepd1("filetype"),
34992586flagpd1("fimplicit-module-maps"),
35002587flagpd1("fimplicit-modules"),
35012588flagpd1("finclude-default-header"),
3502joinpd1("finit-character="),
3503joinpd1("finit-integer="),
3504joinpd1("finit-logical="),
3505joinpd1("finit-real="),
35062589flagpd1("finline"),
35072590flagpd1("finline-functions"),
35082591flagpd1("finline-hint-functions"),
3509joinpd1("finline-limit="),
35102592flagpd1("finline-limit"),
35112593flagpd1("fno-inline-limit"),
3512joinpd1("finput-charset="),
35132594flagpd1("finstrument-function-entry-bare"),
35142595flagpd1("finstrument-functions"),
35152596flagpd1("finstrument-functions-after-inlining"),
......@@ -3520,59 +2601,36 @@ flagpd1("fix-what-you-can"),
35202601flagpd1("ffixed-form"),
35212602flagpd1("fno-fixed-form"),
35222603flagpd1("fixit"),
3523joinpd1("fixit="),
35242604flagpd1("fixit-recompile"),
35252605flagpd1("fixit-to-temporary"),
35262606flagpd1("fjump-tables"),
35272607flagpd1("fkeep-static-consts"),
35282608flagpd1("flat_namespace"),
35292609flagpd1("flax-vector-conversions"),
3530joinpd1("flax-vector-conversions="),
35312610flagpd1("flimit-debug-info"),
3532joinpd1("flimited-precision="),
35332611flagpd1("ffloat-store"),
35342612flagpd1("fno-float-store"),
35352613flagpd1("flto"),
3536joinpd1("flto="),
3537joinpd1("flto-jobs="),
35382614flagpd1("flto-unit"),
35392615flagpd1("flto-visibility-public-std"),
35402616sepd1("fmacro-backtrace-limit"),
3541joinpd1("fmacro-backtrace-limit="),
3542joinpd1("fmacro-prefix-map="),
35432617flagpd1("fmath-errno"),
3544joinpd1("fmax-array-constructor="),
3545joinpd1("fmax-errors="),
3546joinpd1("fmax-stack-var-size="),
3547joinpd1("fmax-subrecord-length="),
3548joinpd1("fmax-type-align="),
35492618flagpd1("fmerge-all-constants"),
35502619flagpd1("fmerge-functions"),
35512620sepd1("fmessage-length"),
3552joinpd1("fmessage-length="),
35532621sepd1("fmodule-feature"),
3554joinpd1("fmodule-file="),
35552622flagpd1("fmodule-file-deps"),
3556joinpd1("fmodule-format="),
35572623sepd1("fmodule-implementation-of"),
3558joinpd1("fmodule-map-file="),
35592624flagpd1("fmodule-map-file-home-is-cwd"),
35602625flagpd1("fmodule-maps"),
35612626sepd1("fmodule-name"),
3562joinpd1("fmodule-name="),
35632627flagpd1("fmodules"),
3564joinpd1("fmodules-cache-path="),
35652628flagpd1("fmodules-codegen"),
35662629flagpd1("fmodules-debuginfo"),
35672630flagpd1("fmodules-decluse"),
35682631flagpd1("fmodules-disable-diagnostic-validation"),
3569joinpd1("fmodules-embed-all-files"),
3570joinpd1("fmodules-embed-file="),
35712632flagpd1("fmodules-hash-content"),
3572joinpd1("fmodules-ignore-macro="),
35732633flagpd1("fmodules-local-submodule-visibility"),
3574joinpd1("fmodules-prune-after="),
3575joinpd1("fmodules-prune-interval="),
35762634flagpd1("fmodules-search-all"),
35772635flagpd1("fmodules-strict-context-hash"),
35782636flagpd1("fmodules-strict-decluse"),
......@@ -3582,19 +2640,22 @@ flagpd1("fmodules-validate-input-files-content"),
35822640flagpd1("fmodules-validate-once-per-build-session"),
35832641flagpd1("fmodules-validate-system-headers"),
35842642flagpd1("fms-compatibility"),
3585joinpd1("fms-compatibility-version="),
35862643flagpd1("fms-extensions"),
3587joinpd1("fms-memptr-rep="),
35882644flagpd1("fms-volatile"),
3589joinpd1("fmsc-version="),
35902645flagpd1("fmudflap"),
35912646flagpd1("fmudflapth"),
35922647flagpd1("fnative-half-arguments-and-returns"),
35932648flagpd1("fnative-half-type"),
35942649flagpd1("fnested-functions"),
3595joinpd1("fnew-alignment="),
35962650flagpd1("fnext-runtime"),
3597flagpd1("fno-PIC"),
2651.{
2652 .name = "fno-PIC",
2653 .syntax = .flag,
2654 .zig_equivalent = .no_pic,
2655 .pd1 = true,
2656 .pd2 = false,
2657 .psl = false,
2658},
35982659flagpd1("fno-PIE"),
35992660flagpd1("fno-access-control"),
36002661flagpd1("fno-addrsig"),
......@@ -3616,7 +2677,6 @@ flagpd1("fno-bitfield-type-align"),
36162677flagpd1("fno-blocks"),
36172678flagpd1("fno-borland-extensions"),
36182679flagpd1("fno-builtin"),
3619joinpd1("fno-builtin-"),
36202680flagpd1("fno-caret-diagnostics"),
36212681flagpd1("fno-char8_t"),
36222682flagpd1("fno-color-diagnostics"),
......@@ -3755,54 +2815,22 @@ flagpd1("fno-rtlib-add-rpath"),
37552815flagpd1("fno-rtti"),
37562816flagpd1("fno-rtti-data"),
37572817flagpd1("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},
37662818flagpd1("fno-sanitize-address-poison-custom-array-cookie"),
37672819flagpd1("fno-sanitize-address-use-after-scope"),
37682820flagpd1("fno-sanitize-address-use-odr-indicator"),
37692821flagpd1("fno-sanitize-blacklist"),
37702822flagpd1("fno-sanitize-cfi-canonical-jump-tables"),
37712823flagpd1("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},
37802824flagpd1("fno-sanitize-link-c++-runtime"),
37812825flagpd1("fno-sanitize-link-runtime"),
37822826flagpd1("fno-sanitize-memory-track-origins"),
37832827flagpd1("fno-sanitize-memory-use-after-dtor"),
37842828flagpd1("fno-sanitize-minimal-runtime"),
37852829flagpd1("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},
37942830flagpd1("fno-sanitize-stats"),
37952831flagpd1("fno-sanitize-thread-atomics"),
37962832flagpd1("fno-sanitize-thread-func-entry-exit"),
37972833flagpd1("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},
38062834flagpd1("fno-sanitize-undefined-trap-on-error"),
38072835flagpd1("fno-save-optimization-record"),
38082836flagpd1("fno-short-enums"),
......@@ -3858,14 +2886,11 @@ flagpd1("fno-xray-always-emit-customevents"),
38582886flagpd1("fno-xray-always-emit-typedevents"),
38592887flagpd1("fno-xray-instrument"),
38602888flagpd1("fnoxray-link-deps"),
3861joinpd1("fobjc-abi-version="),
38622889flagpd1("fobjc-arc"),
3863joinpd1("fobjc-arc-cxxlib="),
38642890flagpd1("fobjc-arc-exceptions"),
38652891flagpd1("fobjc-atdefs"),
38662892flagpd1("fobjc-call-cxx-cdtors"),
38672893flagpd1("fobjc-convert-messages-to-runtime-calls"),
3868joinpd1("fobjc-dispatch-method="),
38692894flagpd1("fobjc-exceptions"),
38702895flagpd1("fobjc-gc"),
38712896flagpd1("fobjc-gc-only"),
......@@ -3874,91 +2899,50 @@ flagpd1("fobjc-legacy-dispatch"),
38742899flagpd1("fobjc-link-runtime"),
38752900flagpd1("fobjc-new-property"),
38762901flagpd1("fobjc-nonfragile-abi"),
3877joinpd1("fobjc-nonfragile-abi-version="),
3878joinpd1("fobjc-runtime="),
38792902flagpd1("fobjc-runtime-has-weak"),
38802903flagpd1("fobjc-sender-dependent-dispatch"),
38812904flagpd1("fobjc-subscripting-legacy-runtime"),
38822905flagpd1("fobjc-weak"),
38832906flagpd1("fomit-frame-pointer"),
38842907flagpd1("fopenmp"),
3885joinpd1("fopenmp="),
3886joinpd1("fopenmp-cuda-blocks-per-sm="),
38872908flagpd1("fopenmp-cuda-force-full-runtime"),
38882909flagpd1("fopenmp-cuda-mode"),
3889joinpd1("fopenmp-cuda-number-of-sm="),
3890joinpd1("fopenmp-cuda-teams-reduction-recs-num="),
38912910flagpd1("fopenmp-enable-irbuilder"),
38922911sepd1("fopenmp-host-ir-file-path"),
38932912flagpd1("fopenmp-is-device"),
38942913flagpd1("fopenmp-optimistic-collapse"),
38952914flagpd1("fopenmp-relocatable-target"),
38962915flagpd1("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},
39052916flagpd1("fopenmp-use-tls"),
3906joinpd1("fopenmp-version="),
39072917sepd1("foperator-arrow-depth"),
3908joinpd1("foperator-arrow-depth="),
3909joinpd1("foptimization-record-file="),
3910joinpd1("foptimization-record-passes="),
39112918flagpd1("foptimize-sibling-calls"),
39122919flagpd1("force_cpusubtype_ALL"),
39132920flagpd1("force_flat_namespace"),
39142921sepd1("force_load"),
3915joinpd1("fforce-addr"),
39162922flagpd1("forder-file-instrumentation"),
3917joinpd1("foutput-class-dir="),
3918joinpd1("foverride-record-layout="),
39192923flagpd1("fpack-struct"),
3920joinpd1("fpack-struct="),
39212924flagpd1("fpadding-on-unsigned-fixed-point"),
39222925flagpd1("fparse-all-comments"),
39232926flagpd1("fpascal-strings"),
3924joinpd1("fpass-plugin="),
3925joinpd1("fpatchable-function-entry="),
3926joinpd1("fpatchable-function-entry-offset="),
39272927flagpd1("fpcc-struct-return"),
39282928flagpd1("fpch-preprocess"),
39292929flagpd1("fpch-validate-input-files-content"),
39302930flagpd1("fpic"),
39312931flagpd1("fpie"),
39322932flagpd1("fplt"),
3933joinpd1("fplugin="),
3934joinpd1("fprebuilt-module-path="),
39352933flagpd1("fpreserve-as-comments"),
39362934flagpd1("fpreserve-vec3-type"),
39372935flagpd1("fprofile-arcs"),
3938joinpd1("fprofile-dir="),
3939joinpd1("fprofile-exclude-files="),
3940joinpd1("fprofile-filter-files="),
39412936flagpd1("fprofile-generate"),
3942joinpd1("fprofile-generate="),
39432937flagpd1("fprofile-instr-generate"),
3944joinpd1("fprofile-instr-generate="),
39452938flagpd1("fprofile-instr-use"),
3946joinpd1("fprofile-instr-use="),
3947joinpd1("fprofile-instrument="),
3948joinpd1("fprofile-instrument-path="),
3949joinpd1("fprofile-instrument-use-path="),
39502939sepd1("fprofile-remapping-file"),
3951joinpd1("fprofile-remapping-file="),
39522940flagpd1("fprofile-sample-accurate"),
39532941flagpd1("fprofile-sample-use"),
3954joinpd1("fprofile-sample-use="),
39552942flagpd1("fprofile-use"),
3956joinpd1("fprofile-use="),
39572943sepd1("framework"),
3958joinpd1("frandom-seed="),
39592944flagpd1("freciprocal-math"),
39602945flagpd1("frecord-command-line"),
3961joinpd1("frecord-marker="),
39622946flagpd1("ffree-form"),
39632947flagpd1("fno-free-form"),
39642948flagpd1("freg-struct-return"),
......@@ -3969,7 +2953,6 @@ flagpd1("fretain-comments-from-system-headers"),
39692953flagpd1("frewrite-imports"),
39702954flagpd1("frewrite-includes"),
39712955sepd1("frewrite-map-file"),
3972joinpd1("frewrite-map-file="),
39732956flagpd1("ffriend-injection"),
39742957flagpd1("fno-friend-injection"),
39752958flagpd1("ffrontend-optimize"),
......@@ -3979,31 +2962,13 @@ flagpd1("frounding-math"),
39792962flagpd1("frtlib-add-rpath"),
39802963flagpd1("frtti"),
39812964flagpd1("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="),
39912965flagpd1("fsanitize-address-globals-dead-stripping"),
39922966flagpd1("fsanitize-address-poison-custom-array-cookie"),
39932967flagpd1("fsanitize-address-use-after-scope"),
39942968flagpd1("fsanitize-address-use-odr-indicator"),
3995joinpd1("fsanitize-blacklist="),
39962969flagpd1("fsanitize-cfi-canonical-jump-tables"),
39972970flagpd1("fsanitize-cfi-cross-dso"),
39982971flagpd1("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},
40072972flagpd1("fsanitize-coverage-8bit-counters"),
40082973flagpd1("fsanitize-coverage-indirect-calls"),
40092974flagpd1("fsanitize-coverage-inline-8bit-counters"),
......@@ -4016,45 +2981,22 @@ flagpd1("fsanitize-coverage-trace-div"),
40162981flagpd1("fsanitize-coverage-trace-gep"),
40172982flagpd1("fsanitize-coverage-trace-pc"),
40182983flagpd1("fsanitize-coverage-trace-pc-guard"),
4019joinpd1("fsanitize-coverage-type="),
4020joinpd1("fsanitize-hwaddress-abi="),
40212984flagpd1("fsanitize-link-c++-runtime"),
40222985flagpd1("fsanitize-link-runtime"),
40232986flagpd1("fsanitize-memory-track-origins"),
4024joinpd1("fsanitize-memory-track-origins="),
40252987flagpd1("fsanitize-memory-use-after-dtor"),
40262988flagpd1("fsanitize-minimal-runtime"),
40272989flagpd1("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},
40362990flagpd1("fsanitize-stats"),
4037joinpd1("fsanitize-system-blacklist="),
40382991flagpd1("fsanitize-thread-atomics"),
40392992flagpd1("fsanitize-thread-func-entry-exit"),
40402993flagpd1("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="),
40502994flagpd1("fsanitize-undefined-trap-on-error"),
40512995flagpd1("fsave-optimization-record"),
4052joinpd1("fsave-optimization-record="),
40532996flagpd1("fseh-exceptions"),
40542997flagpd1("fshort-enums"),
40552998flagpd1("fshort-wchar"),
40562999flagpd1("fshow-column"),
4057joinpd1("fshow-overloads="),
40583000flagpd1("fshow-source-location"),
40593001flagpd1("fsignaling-math"),
40603002flagpd1("fsigned-bitfields"),
......@@ -4066,7 +3008,6 @@ flagpd1("fsjlj-exceptions"),
40663008flagpd1("fslp-vectorize"),
40673009flagpd1("fspell-checking"),
40683010sepd1("fspell-checking-limit"),
4069joinpd1("fspell-checking-limit="),
40703011flagpd1("fsplit-dwarf-inlining"),
40713012flagpd1("fsplit-lto-unit"),
40723013flagpd1("fsplit-stack"),
......@@ -4083,31 +3024,18 @@ flagpd1("fstrict-return"),
40833024flagpd1("fstrict-vtable-pointers"),
40843025flagpd1("fstruct-path-tbaa"),
40853026flagpd1("fsycl-is-device"),
4086joinpd1("fsymbol-partition="),
40873027flagpd1("fsyntax-only"),
40883028sepd1("ftabstop"),
4089joinpd1("ftabstop="),
40903029sepd1("ftemplate-backtrace-limit"),
4091joinpd1("ftemplate-backtrace-limit="),
40923030sepd1("ftemplate-depth"),
4093joinpd1("ftemplate-depth-"),
4094joinpd1("ftemplate-depth="),
40953031flagpd1("ftest-coverage"),
4096joinpd1("ftest-module-file-extension="),
4097joinpd1("fthin-link-bitcode="),
4098joinpd1("fthinlto-index="),
40993032flagpd1("fthreadsafe-statics"),
41003033flagpd1("ftime-report"),
41013034flagpd1("ftime-trace"),
4102joinpd1("ftime-trace-granularity="),
4103joinpd1("ftls-model="),
4104joinpd1("ftrap-function="),
41053035flagpd1("ftrapping-math"),
41063036flagpd1("ftrapv"),
41073037sepd1("ftrapv-handler"),
4108joinpd1("ftrapv-handler="),
41093038flagpd1("ftrigraphs"),
4110joinpd1("ftrivial-auto-var-init="),
41113039sepd1("ftype-visibility"),
41123040sepd1("function-alignment"),
41133041flagpd1("ffunction-attribute-list"),
......@@ -4122,35 +3050,24 @@ flagpd1("funsigned-char"),
41223050flagpd1("funwind-tables"),
41233051flagpd1("fuse-cxa-atexit"),
41243052flagpd1("fuse-init-array"),
4125joinpd1("fuse-ld="),
41263053flagpd1("fuse-line-directives"),
41273054flagpd1("fuse-register-sized-bitfield-access"),
41283055flagpd1("fvalidate-ast-input-files-content"),
4129joinpd1("fveclib="),
41303056flagpd1("fvectorize"),
41313057flagpd1("fverbose-asm"),
41323058flagpd1("fvirtual-function-elimination"),
41333059sepd1("fvisibility"),
4134joinpd1("fvisibility="),
41353060flagpd1("fvisibility-global-new-delete-hidden"),
41363061flagpd1("fvisibility-inlines-hidden"),
41373062flagpd1("fvisibility-ms-compat"),
41383063flagpd1("fwasm-exceptions"),
4139joinpd1("fwchar-type="),
41403064flagpd1("fwhole-program-vtables"),
41413065flagpd1("fwrapv"),
41423066flagpd1("fwritable-strings"),
41433067flagpd1("fxray-always-emit-customevents"),
41443068flagpd1("fxray-always-emit-typedevents"),
4145jspd1("fxray-always-instrument="),
4146jspd1("fxray-attr-list="),
4147jspd1("fxray-instruction-threshold"),
4148jspd1("fxray-instruction-threshold="),
41493069flagpd1("fxray-instrument"),
4150jspd1("fxray-instrumentation-bundle="),
41513070flagpd1("fxray-link-deps"),
4152jspd1("fxray-modes="),
4153jspd1("fxray-never-instrument="),
41543071flagpd1("fzero-initialized-in-bss"),
41553072flagpd1("fzvector"),
41563073flagpd1("g0"),
......@@ -4158,18 +3075,9 @@ flagpd1("g1"),
41583075flagpd1("g2"),
41593076flagpd1("g3"),
41603077flagpd1("g"),
4161.{
4162 .name = "gcc-toolchain=",
4163 .syntax = .joined,
4164 .zig_equivalent = .other,
4165 .pd1 = false,
4166 .pd2 = true,
4167 .psl = false,
4168},
41693078sepd1("gcc-toolchain"),
41703079flagpd1("gcodeview"),
41713080flagpd1("gcodeview-ghash"),
4172joinpd1("gcoff"),
41733081flagpd1("gcolumn-info"),
41743082flagpd1("fgcse-after-reload"),
41753083flagpd1("fno-gcse-after-reload"),
......@@ -4211,53 +3119,23 @@ flagpd1("gno-record-command-line"),
42113119flagpd1("gno-strict-dwarf"),
42123120flagpd1("fgnu"),
42133121flagpd1("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},
42223122flagpd1("gpubnames"),
42233123flagpd1("grecord-command-line"),
42243124flagpd1("gsce"),
42253125flagpd1("gsplit-dwarf"),
4226joinpd1("gsplit-dwarf="),
4227joinpd1("gstabs"),
42283126flagpd1("gstrict-dwarf"),
42293127flagpd1("gtoggle"),
42303128flagpd1("gused"),
4231joinpd1("gvms"),
4232joinpd1("gxcoff"),
42333129flagpd1("gz"),
4234joinpd1("gz="),
42353130sepd1("header-include-file"),
4236joinpd1("headerpad_max_install_names"),
42373131.{
42383132 .name = "help",
42393133 .syntax = .flag,
4240 .zig_equivalent = .other,
3134 .zig_equivalent = .passthrough,
42413135 .pd1 = true,
42423136 .pd2 = true,
42433137 .psl = false,
42443138},
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},
42613139.{
42623140 .name = "hip-link",
42633141 .syntax = .flag,
......@@ -4266,17 +3144,6 @@ joinpd1("headerpad_max_install_names"),
42663144 .pd2 = true,
42673145 .psl = false,
42683146},
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},
42803147sepd1("image_base"),
42813148flagpd1("fimplement-inlines"),
42823149flagpd1("fno-implement-inlines"),
......@@ -4285,14 +3152,6 @@ flagpd1("fno-implicit-none"),
42853152flagpd1("fimplicit-templates"),
42863153flagpd1("fno-implicit-templates"),
42873154sepd1("imultilib"),
4288.{
4289 .name = "include",
4290 .syntax = .joined_or_separate,
4291 .zig_equivalent = .other,
4292 .pd1 = true,
4293 .pd2 = true,
4294 .psl = false,
4295},
42963155sepd1("include-pch"),
42973156flagpd1("index-header-map"),
42983157sepd1("init"),
......@@ -4306,51 +3165,15 @@ flagpd1("fno-inline-small-functions"),
43063165sepd1("install_name"),
43073166flagpd1("finteger-4-integer-8"),
43083167flagpd1("fno-integer-4-integer-8"),
4309jspd1("interface-stub-version="),
4310jspd1("internal-externc-isystem"),
4311jspd1("internal-isystem"),
43123168flagpd1("fintrinsic-modules-path"),
43133169flagpd1("fno-intrinsic-modules-path"),
43143170flagpd1("fipa-cp"),
43153171flagpd1("fno-ipa-cp"),
4316jspd1("iprefix"),
4317jspd1("iquote"),
4318jspd1("isysroot"),
4319jspd1("isystem"),
4320jspd1("isystem-after"),
4321jspd1("ivfsoverlay"),
43223172flagpd1("fivopts"),
43233173flagpd1("fno-ivopts"),
4324jspd1("iwithprefix"),
4325jspd1("iwithprefixbefore"),
4326jspd1("iwithsysroot"),
43273174flagpd1("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},
43363175sepd1("lazy_framework"),
43373176sepd1("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},
43543177sepd1("load"),
43553178flagpd1("m16"),
43563179flagpd1("m32"),
......@@ -4358,34 +3181,14 @@ flagpd1("m3dnow"),
43583181flagpd1("m3dnowa"),
43593182flagpd1("m64"),
43603183flagpd1("m80387"),
4361joinpd1("mabi="),
43623184flagpd1("mabi=ieeelongdouble"),
43633185flagpd1("mabicalls"),
4364joinpd1("mabs="),
43653186flagpd1("madx"),
43663187flagpd1("maes"),
43673188sepd1("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="),
43783189flagpd1("malign-double"),
4379joinpd1("malign-functions="),
4380joinpd1("malign-jumps="),
4381joinpd1("malign-loops="),
43823190flagpd1("maltivec"),
4383joinpd1("mamdgpu-debugger-abi="),
4384joinpd1("mappletvos-version-min="),
4385joinpd1("mappletvsimulator-version-min="),
4386joinpd1("march="),
43873191flagpd1("marm"),
4388joinpd1("masm="),
43893192flagpd1("masm-verbose"),
43903193flagpd1("massembler-fatal-warnings"),
43913194flagpd1("massembler-no-warn"),
......@@ -4414,7 +3217,6 @@ flagpd1("mbig-endian"),
44143217flagpd1("mbmi"),
44153218flagpd1("mbmi2"),
44163219flagpd1("mbranch-likely"),
4417joinpd1("mbranch-protection="),
44183220flagpd1("mbranch-target-enforce"),
44193221flagpd1("mbranches-within-32B-boundaries"),
44203222flagpd1("mbulk-memory"),
......@@ -4423,32 +3225,25 @@ flagpd1("mcldemote"),
44233225flagpd1("mclflushopt"),
44243226flagpd1("mclwb"),
44253227flagpd1("mclzero"),
4426joinpd1("mcmodel="),
44273228flagpd1("mcmodel=medany"),
44283229flagpd1("mcmodel=medlow"),
44293230flagpd1("mcmpb"),
44303231flagpd1("mcmse"),
44313232sepd1("mcode-model"),
44323233flagpd1("mcode-object-v3"),
4433joinpd1("mcompact-branches="),
4434joinpd1("mconsole"),
44353234flagpd1("mconstant-cfstrings"),
44363235flagpd1("mconstructor-aliases"),
4437joinpd1("mcpu="),
44383236flagpd1("mcpu=?"),
44393237flagpd1("mcrbits"),
44403238flagpd1("mcrc"),
44413239flagpd1("mcumode"),
44423240flagpd1("mcx16"),
44433241sepd1("mdebug-pass"),
4444joinpd1("mdefault-build-attributes"),
44453242flagpd1("mdirect-move"),
44463243flagpd1("mdisable-tail-calls"),
4447joinpd1("mdll"),
44483244flagpd1("mdouble-float"),
44493245flagpd1("mdsp"),
44503246flagpd1("mdspr2"),
4451joinpd1("mdynamic-no-pic"),
44523247sepd1("meabi"),
44533248flagpd1("membedded-data"),
44543249flagpd1("menable-no-infs"),
......@@ -4467,17 +3262,13 @@ flagpd1("mfix-and-continue"),
44673262flagpd1("mfix-cortex-a53-835769"),
44683263flagpd1("mfloat128"),
44693264sepd1("mfloat-abi"),
4470joinpd1("mfloat-abi="),
44713265flagpd1("mfma"),
44723266flagpd1("mfma4"),
44733267flagpd1("mfp32"),
44743268flagpd1("mfp64"),
44753269sepd1("mfpmath"),
4476joinpd1("mfpmath="),
44773270flagpd1("mfprnd"),
4478joinpd1("mfpu="),
44793271flagpd1("mfpxx"),
4480joinpd1("mframe-pointer="),
44813272flagpd1("mfsgsbase"),
44823273flagpd1("mfxsr"),
44833274flagpd1("mgeneral-regs-only"),
......@@ -4488,11 +3279,7 @@ flagpd1("mglobal-merge"),
44883279flagpd1("mgpopt"),
44893280flagpd1("mhard-float"),
44903281flagpd1("mhvx"),
4491joinpd1("mhvx="),
4492joinpd1("mhvx-length="),
44933282flagpd1("mhtm"),
4494joinpd1("mhwdiv="),
4495joinpd1("mhwmult="),
44963283flagpd1("miamcu"),
44973284flagpd1("mieee-fp"),
44983285flagpd1("mieee-rnd-near"),
......@@ -4500,16 +3287,10 @@ flagpd1("migrate"),
45003287flagpd1("no-finalize-removal"),
45013288flagpd1("no-ns-alloc-error"),
45023289flagpd1("mimplicit-float"),
4503joinpd1("mimplicit-it="),
45043290flagpd1("mincremental-linker-compatible"),
4505joinpd1("mindirect-jump="),
45063291flagpd1("minline-all-stringops"),
45073292flagpd1("minvariant-function-descriptors"),
45083293flagpd1("minvpcid"),
4509joinpd1("mios-simulator-version-min="),
4510joinpd1("mios-version-min="),
4511joinpd1("miphoneos-version-min="),
4512joinpd1("miphonesimulator-version-min="),
45133294flagpd1("mips1"),
45143295flagpd1("mips16"),
45153296flagpd1("mips2"),
......@@ -4533,7 +3314,6 @@ sepd1("mlimit-float-precision"),
45333314sepd1("mlink-bitcode-file"),
45343315sepd1("mlink-builtin-bitcode"),
45353316sepd1("mlink-cuda-bitcode"),
4536joinpd1("mlinker-version="),
45373317flagpd1("mlittle-endian"),
45383318sepd1("mllvm"),
45393319flagpd1("mlocal-sdata"),
......@@ -4544,10 +3324,7 @@ flagpd1("mlong-double-80"),
45443324flagpd1("mlongcall"),
45453325flagpd1("mlwp"),
45463326flagpd1("mlzcnt"),
4547joinpd1("mmacos-version-min="),
4548joinpd1("mmacosx-version-min="),
45493327flagpd1("mmadd4"),
4550joinpd1("mmcu="),
45513328flagpd1("mmemops"),
45523329flagpd1("mmfcrf"),
45533330flagpd1("mmfocrf"),
......@@ -4563,7 +3340,6 @@ flagpd1("mmt"),
45633340flagpd1("mmultivalue"),
45643341flagpd1("mmutable-globals"),
45653342flagpd1("mmwaitx"),
4566joinpd1("mnan="),
45673343flagpd1("mno-3dnow"),
45683344flagpd1("mno-3dnowa"),
45693345flagpd1("mno-80387"),
......@@ -4606,7 +3382,6 @@ flagpd1("mno-crbits"),
46063382flagpd1("mno-crc"),
46073383flagpd1("mno-cumode"),
46083384flagpd1("mno-cx16"),
4609joinpd1("mno-default-build-attributes"),
46103385flagpd1("mno-dsp"),
46113386flagpd1("mno-dspr2"),
46123387flagpd1("mno-embedded-data"),
......@@ -4761,7 +3536,6 @@ flagpd1("fno-modulo-sched-allow-regmoves"),
47613536flagpd1("fmodulo-sched"),
47623537flagpd1("fno-modulo-sched"),
47633538flagpd1("momit-leaf-frame-pointer"),
4764joinpd1("moslib="),
47653539flagpd1("moutline"),
47663540flagpd1("mpacked-stack"),
47673541flagpd1("mpackets"),
......@@ -4775,7 +3549,6 @@ flagpd1("mpopcntd"),
47753549flagpd1("mcrypto"),
47763550flagpd1("mpower8-vector"),
47773551flagpd1("mpower9-vector"),
4778joinpd1("mprefer-vector-width="),
47793552flagpd1("mprefetchwt1"),
47803553flagpd1("mprfchw"),
47813554flagpd1("mptwrite"),
......@@ -4787,19 +3560,10 @@ flagpd1("mrdrnd"),
47873560flagpd1("mrdseed"),
47883561flagpd1("mreassociate"),
47893562flagpd1("mrecip"),
4790.{
4791 .name = "mrecip=",
4792 .syntax = .comma_joined,
4793 .zig_equivalent = .other,
4794 .pd1 = true,
4795 .pd2 = false,
4796 .psl = false,
4797},
47983563flagpd1("mrecord-mcount"),
47993564flagpd1("mred-zone"),
48003565flagpd1("mreference-types"),
48013566sepd1("mregparm"),
4802joinpd1("mregparm="),
48033567flagpd1("mrelax"),
48043568flagpd1("mrelax-all"),
48053569flagpd1("mrelax-pic-calls"),
......@@ -4825,11 +3589,8 @@ flagpd1("msgx"),
48253589flagpd1("msha"),
48263590flagpd1("mshstk"),
48273591flagpd1("msign-ext"),
4828joinpd1("msign-return-address="),
4829joinpd1("msign-return-address-key="),
48303592flagpd1("msimd128"),
48313593flagpd1("msingle-float"),
4832joinpd1("msmall-data-threshold="),
48333594flagpd1("msoft-float"),
48343595flagpd1("mspe"),
48353596flagpd1("mspeculative-load-hardening"),
......@@ -4842,31 +3603,22 @@ flagpd1("msse4.1"),
48423603flagpd1("msse4.2"),
48433604flagpd1("msse4a"),
48443605flagpd1("mssse3"),
4845joinpd1("mstack-alignment="),
48463606flagpd1("mstack-arg-probe"),
4847joinpd1("mstack-probe-size="),
48483607flagpd1("mstackrealign"),
48493608flagpd1("mstrict-align"),
48503609sepd1("mt-migrate-directory"),
48513610flagpd1("mtail-call"),
48523611flagpd1("mtbm"),
48533612sepd1("mthread-model"),
4854joinpd1("mthreads"),
48553613flagpd1("mthumb"),
48563614flagpd1("mtls-direct-seg-refs"),
4857joinpd1("mtls-size="),
48583615sepd1("mtp"),
4859joinpd1("mtp="),
4860joinpd1("mtune="),
48613616flagpd1("mtune=?"),
4862joinpd1("mtvos-simulator-version-min="),
4863joinpd1("mtvos-version-min="),
48643617flagpd1("muclibc"),
48653618flagpd1("multi_module"),
48663619sepd1("multiply_defined"),
48673620sepd1("multiply_defined_unused"),
48683621flagpd1("munaligned-access"),
4869joinpd1("municode"),
48703622flagpd1("munimplemented-simd128"),
48713623flagpd1("munwind-tables"),
48723624flagpd1("mv5"),
......@@ -4883,12 +3635,8 @@ flagpd1("mvx"),
48833635flagpd1("mvzeroupper"),
48843636flagpd1("mwaitpkg"),
48853637flagpd1("mwarn-nonportable-cfstrings"),
4886joinpd1("mwatchos-simulator-version-min="),
4887joinpd1("mwatchos-version-min="),
4888joinpd1("mwatchsimulator-version-min="),
48893638flagpd1("mwavefrontsize64"),
48903639flagpd1("mwbnoinvd"),
4891joinpd1("mwindows"),
48923640flagpd1("mx32"),
48933641flagpd1("mx87"),
48943642flagpd1("mxgot"),
......@@ -4906,22 +3654,6 @@ flagpd1("no-canonical-prefixes"),
49063654flagpd1("no-code-completion-globals"),
49073655flagpd1("no-code-completion-ns-level-decls"),
49083656flagpd1("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},
49253657.{
49263658 .name = "no-cuda-noopt-device-debug",
49273659 .syntax = .flag,
......@@ -4959,14 +3691,6 @@ flagpd1("no-implicit-float"),
49593691flagpd1("no-pie"),
49603692flagpd1("no-pthread"),
49613693flagpd1("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},
49703694flagpd1("nobuiltininc"),
49713695flagpd1("nocpp"),
49723696flagpd1("nocudainc"),
......@@ -4984,19 +3708,17 @@ flagpd1("noseglinkedit"),
49843708flagpd1("nostartfiles"),
49853709flagpd1("nostdinc"),
49863710flagpd1("nostdinc++"),
4987flagpd1("nostdlib"),
4988flagpd1("nostdlibinc"),
4989flagpd1("nostdlib++"),
4990flagpd1("nostdsysteminc"),
49913711.{
4992 .name = "o",
4993 .syntax = .joined_or_separate,
4994 .zig_equivalent = .o,
3712 .name = "nostdlib",
3713 .syntax = .flag,
3714 .zig_equivalent = .nostdlib,
49953715 .pd1 = true,
49963716 .pd2 = false,
49973717 .psl = false,
49983718},
4999jspd1("objc-isystem"),
3719flagpd1("nostdlibinc"),
3720flagpd1("nostdlib++"),
3721flagpd1("nostdsysteminc"),
50003722flagpd1("objcmt-atomic-property"),
50013723flagpd1("objcmt-migrate-all"),
50023724flagpd1("objcmt-migrate-annotation"),
......@@ -5012,8 +3734,6 @@ flagpd1("objcmt-migrate-readwrite-property"),
50123734flagpd1("objcmt-migrate-subscripting"),
50133735flagpd1("objcmt-ns-nonatomic-iosonly"),
50143736flagpd1("objcmt-returns-innerpointer-property"),
5015joinpd1("objcmt-whitelist-dir-path="),
5016jspd1("objcxx-isystem"),
50173737flagpd1("object"),
50183738sepd1("opt-record-file"),
50193739sepd1("opt-record-format"),
......@@ -5022,7 +3742,6 @@ sepd1("output-asm-variant"),
50223742flagpd1("p"),
50233743flagpd1("fpack-derived"),
50243744flagpd1("fno-pack-derived"),
5025jspd1("pagezero_size"),
50263745.{
50273746 .name = "pass-exit-codes",
50283747 .syntax = .flag,
......@@ -5033,7 +3752,6 @@ jspd1("pagezero_size"),
50333752},
50343753flagpd1("pch-through-hdrstop-create"),
50353754flagpd1("pch-through-hdrstop-use"),
5036joinpd1("pch-through-header="),
50373755.{
50383756 .name = "pedantic",
50393757 .syntax = .flag,
......@@ -5061,21 +3779,12 @@ flagpd1("pie"),
50613779.{
50623780 .name = "pipe",
50633781 .syntax = .flag,
5064 .zig_equivalent = .other,
3782 .zig_equivalent = .ignore,
50653783 .pd1 = true,
50663784 .pd2 = true,
50673785 .psl = false,
50683786},
50693787sepd1("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="),
50793788flagpd1("prebind"),
50803789flagpd1("prebind_all_twolevel_modules"),
50813790flagpd1("fprefetch-loop-arrays"),
......@@ -5090,14 +3799,6 @@ flagpd1("print-dependency-directives-minimized-source"),
50903799 .pd2 = true,
50913800 .psl = false,
50923801},
5093.{
5094 .name = "print-file-name=",
5095 .syntax = .joined,
5096 .zig_equivalent = .other,
5097 .pd1 = true,
5098 .pd2 = true,
5099 .psl = false,
5100},
51013802flagpd1("print-ivar-layout"),
51023803.{
51033804 .name = "print-libgcc-file-name",
......@@ -5132,14 +3833,6 @@ flagpd1("print-ivar-layout"),
51323833 .psl = false,
51333834},
51343835flagpd1("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},
51433836.{
51443837 .name = "print-resource-dir",
51453838 .syntax = .flag,
......@@ -5190,18 +3883,17 @@ flagpd1("fprotect-parens"),
51903883flagpd1("fno-protect-parens"),
51913884flagpd1("pthread"),
51923885flagpd1("pthreads"),
5193.{
5194 .name = "ptxas-path=",
5195 .syntax = .joined,
5196 .zig_equivalent = .other,
5197 .pd1 = false,
5198 .pd2 = true,
5199 .psl = false,
5200},
52013886flagpd1("r"),
52023887flagpd1("frange-check"),
52033888flagpd1("fno-range-check"),
5204flagpd1("rdynamic"),
3889.{
3890 .name = "rdynamic",
3891 .syntax = .flag,
3892 .zig_equivalent = .rdynamic,
3893 .pd1 = true,
3894 .pd2 = false,
3895 .psl = false,
3896},
52053897sepd1("read_only_relocs"),
52063898flagpd1("freal-4-real-10"),
52073899flagpd1("fno-real-4-real-10"),
......@@ -5240,7 +3932,6 @@ flagpd1("fno-reorder-blocks"),
52403932flagpd1("frepack-arrays"),
52413933flagpd1("fno-repack-arrays"),
52423934sepd1("resource-dir"),
5243joinpd1("resource-dir="),
52443935flagpd1("rewrite-legacy-objc"),
52453936flagpd1("rewrite-macros"),
52463937flagpd1("rewrite-objc"),
......@@ -5248,22 +3939,6 @@ flagpd1("rewrite-test"),
52483939flagpd1("fripa"),
52493940flagpd1("fno-ripa"),
52503941sepd1("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},
52673942flagpd1("s"),
52683943.{
52693944 .name = "save-stats",
......@@ -5273,14 +3948,6 @@ flagpd1("s"),
52733948 .pd2 = true,
52743949 .psl = false,
52753950},
5276.{
5277 .name = "save-stats=",
5278 .syntax = .joined,
5279 .zig_equivalent = .other,
5280 .pd1 = true,
5281 .pd2 = true,
5282 .psl = false,
5283},
52843951.{
52853952 .name = "save-temps",
52863953 .syntax = .flag,
......@@ -5289,14 +3956,6 @@ flagpd1("s"),
52893956 .pd2 = true,
52903957 .psl = false,
52913958},
5292.{
5293 .name = "save-temps=",
5294 .syntax = .joined,
5295 .zig_equivalent = .other,
5296 .pd1 = true,
5297 .pd2 = true,
5298 .psl = false,
5299},
53003959flagpd1("fschedule-insns2"),
53013960flagpd1("fno-schedule-insns2"),
53023961flagpd1("fschedule-insns"),
......@@ -5305,7 +3964,7 @@ flagpd1("fsecond-underscore"),
53053964flagpd1("fno-second-underscore"),
53063965.{
53073966 .name = "sectalign",
5308 .syntax = .{ .multi_arg = 3 },
3967 .syntax = .{.multi_arg=3},
53093968 .zig_equivalent = .other,
53103969 .pd1 = true,
53113970 .pd2 = false,
......@@ -5313,7 +3972,7 @@ flagpd1("fno-second-underscore"),
53133972},
53143973.{
53153974 .name = "sectcreate",
5316 .syntax = .{ .multi_arg = 3 },
3975 .syntax = .{.multi_arg=3},
53173976 .zig_equivalent = .other,
53183977 .pd1 = true,
53193978 .pd2 = false,
......@@ -5321,7 +3980,7 @@ flagpd1("fno-second-underscore"),
53213980},
53223981.{
53233982 .name = "sectobjectsymbols",
5324 .syntax = .{ .multi_arg = 2 },
3983 .syntax = .{.multi_arg=2},
53253984 .zig_equivalent = .other,
53263985 .pd1 = true,
53273986 .pd2 = false,
......@@ -5329,7 +3988,7 @@ flagpd1("fno-second-underscore"),
53293988},
53303989.{
53313990 .name = "sectorder",
5332 .syntax = .{ .multi_arg = 3 },
3991 .syntax = .{.multi_arg=3},
53333992 .zig_equivalent = .other,
53343993 .pd1 = true,
53353994 .pd2 = false,
......@@ -5337,12 +3996,11 @@ flagpd1("fno-second-underscore"),
53373996},
53383997flagpd1("fsee"),
53393998flagpd1("fno-see"),
5340jspd1("seg1addr"),
53413999sepd1("seg_addr_table"),
53424000sepd1("seg_addr_table_filename"),
53434001.{
53444002 .name = "segaddr",
5345 .syntax = .{ .multi_arg = 2 },
4003 .syntax = .{.multi_arg=2},
53464004 .zig_equivalent = .other,
53474005 .pd1 = true,
53484006 .pd2 = false,
......@@ -5350,7 +4008,7 @@ sepd1("seg_addr_table_filename"),
53504008},
53514009.{
53524010 .name = "segcreate",
5353 .syntax = .{ .multi_arg = 3 },
4011 .syntax = .{.multi_arg=3},
53544012 .zig_equivalent = .other,
53554013 .pd1 = true,
53564014 .pd2 = false,
......@@ -5359,20 +4017,19 @@ sepd1("seg_addr_table_filename"),
53594017flagpd1("seglinkedit"),
53604018.{
53614019 .name = "segprot",
5362 .syntax = .{ .multi_arg = 3 },
4020 .syntax = .{.multi_arg=3},
53634021 .zig_equivalent = .other,
53644022 .pd1 = true,
53654023 .pd2 = false,
53664024 .psl = false,
53674025},
5368joinpd1("segs_read_"),
53694026sepd1("segs_read_only_addr"),
53704027sepd1("segs_read_write_addr"),
53714028flagpd1("setup-static-analyzer"),
53724029.{
53734030 .name = "shared",
53744031 .syntax = .flag,
5375 .zig_equivalent = .other,
4032 .zig_equivalent = .shared,
53764033 .pd1 = true,
53774034 .pd2 = true,
53784035 .psl = false,
......@@ -5406,14 +4063,6 @@ flagpd1("fno-spec-constr-count"),
54064063 .pd2 = true,
54074064 .psl = false,
54084065},
5409.{
5410 .name = "specs=",
5411 .syntax = .joined,
5412 .zig_equivalent = .other,
5413 .pd1 = true,
5414 .pd2 = true,
5415 .psl = false,
5416},
54174066sepd1("split-dwarf-file"),
54184067sepd1("split-dwarf-output"),
54194068flagpd1("split-stacks"),
......@@ -5438,47 +4087,10 @@ flagpd1("static-libsan"),
54384087flagpd1("static-libstdc++"),
54394088flagpd1("static-openmp"),
54404089flagpd1("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"),
54604090flagpd1("fstrength-reduce"),
54614091flagpd1("fno-strength-reduce"),
5462jspd1("sub_library"),
5463jspd1("sub_umbrella"),
54644092flagpd1("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},
54734093flagpd1("t"),
5474.{
5475 .name = "target=",
5476 .syntax = .joined,
5477 .zig_equivalent = .target,
5478 .pd1 = false,
5479 .pd2 = true,
5480 .psl = false,
5481},
54824094sepd1("target-abi"),
54834095sepd1("target-cpu"),
54844096sepd1("target-feature"),
......@@ -5491,7 +4103,6 @@ sepd1("target-feature"),
54914103 .psl = false,
54924104},
54934105sepd1("target-linker-version"),
5494joinpd1("target-sdk-version="),
54954106flagpd1("templight-dump"),
54964107flagpd1("test-coverage"),
54974108flagpd1("time"),
......@@ -5541,13 +4152,10 @@ flagpd1("fno-tree-vrp"),
55414152},
55424153flagpd1("trim-egraph"),
55434154sepd1("triple"),
5544joinpd1("triple="),
55454155flagpd1("twolevel_namespace"),
55464156flagpd1("twolevel_namespace_hints"),
5547jspd1("u"),
55484157sepd1("umbrella"),
55494158flagpd1("undef"),
5550jspd1("undefined"),
55514159flagpd1("funderscoring"),
55524160flagpd1("fno-underscoring"),
55534161sepd1("unexported_symbols_list"),
......@@ -5557,14 +4165,6 @@ flagpd1("funsafe-loop-optimizations"),
55574165flagpd1("fno-unsafe-loop-optimizations"),
55584166flagpd1("funswitch-loops"),
55594167flagpd1("fno-unswitch-loops"),
5560.{
5561 .name = "unwindlib=",
5562 .syntax = .joined,
5563 .zig_equivalent = .other,
5564 .pd1 = true,
5565 .pd2 = true,
5566 .psl = false,
5567},
55684168flagpd1("fuse-linker-plugin"),
55694169flagpd1("fno-use-linker-plugin"),
55704170flagpd1("v"),
......@@ -5575,14 +4175,6 @@ flagpd1("fno-vect-cost-model"),
55754175flagpd1("vectorize-loops"),
55764176flagpd1("vectorize-slp"),
55774177flagpd1("verify"),
5578.{
5579 .name = "verify=",
5580 .syntax = .comma_joined,
5581 .zig_equivalent = .other,
5582 .pd1 = true,
5583 .pd2 = false,
5584 .psl = false,
5585},
55864178.{
55874179 .name = "verify-debug-info",
55884180 .syntax = .flag,
......@@ -5592,14 +4184,6 @@ flagpd1("verify"),
55924184 .psl = false,
55934185},
55944186flagpd1("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},
56034187flagpd1("verify-pch"),
56044188flagpd1("version"),
56054189.{
......@@ -5610,12 +4194,10 @@ flagpd1("version"),
56104194 .pd2 = true,
56114195 .psl = false,
56124196},
5613joinpd1("vtordisp-mode="),
56144197flagpd1("w"),
56154198sepd1("weak_framework"),
56164199sepd1("weak_library"),
56174200sepd1("weak_reference_mismatches"),
5618joinpd1("weak-l"),
56194201flagpd1("fweb"),
56204202flagpd1("fno-web"),
56214203flagpd1("whatsloaded"),
......@@ -5624,9 +4206,1455 @@ flagpd1("fno-whole-file"),
56244206flagpd1("fwhole-program"),
56254207flagpd1("fno-whole-program"),
56264208flagpd1("whyload"),
5627jspd1("working-directory"),
5628joinpd1("working-directory="),
5629jspd1("x"),
5630joinpd1("y"),
56314209sepd1("z"),
4210joinpd1("fsanitize-undefined-strip-path-components="),
4211joinpd1("fopenmp-cuda-teams-reduction-recs-num="),
4212joinpd1("analyzer-config-compatibility-mode="),
4213joinpd1("fpatchable-function-entry-offset="),
4214joinpd1("analyzer-inline-max-stack-depth="),
4215joinpd1("fsanitize-address-field-padding="),
4216joinpd1("fdiagnostics-hotness-threshold="),
4217joinpd1("fsanitize-memory-track-origins="),
4218joinpd1("mwatchos-simulator-version-min="),
4219joinpd1("mappletvsimulator-version-min="),
4220joinpd1("fobjc-nonfragile-abi-version="),
4221joinpd1("fprofile-instrument-use-path="),
4222jspd1("fxray-instrumentation-bundle="),
4223joinpd1("miphonesimulator-version-min="),
4224joinpd1("faddress-space-map-mangling="),
4225joinpd1("foptimization-record-passes="),
4226joinpd1("ftest-module-file-extension="),
4227jspd1("fxray-instruction-threshold="),
4228joinpd1("mno-default-build-attributes"),
4229joinpd1("mtvos-simulator-version-min="),
4230joinpd1("mwatchsimulator-version-min="),
4231.{
4232 .name = "include-with-prefix-before=",
4233 .syntax = .joined,
4234 .zig_equivalent = .other,
4235 .pd1 = false,
4236 .pd2 = true,
4237 .psl = false,
4238},
4239joinpd1("objcmt-white-list-dir-path="),
4240joinpd1("error-on-deserialized-decl="),
4241joinpd1("fconstexpr-backtrace-limit="),
4242joinpd1("fdiagnostics-show-category="),
4243joinpd1("fdiagnostics-show-location="),
4244joinpd1("fopenmp-cuda-blocks-per-sm="),
4245joinpd1("fsanitize-system-blacklist="),
4246jspd1("fxray-instruction-threshold"),
4247joinpd1("headerpad_max_install_names"),
4248joinpd1("mios-simulator-version-min="),
4249.{
4250 .name = "include-with-prefix-after=",
4251 .syntax = .joined,
4252 .zig_equivalent = .other,
4253 .pd1 = false,
4254 .pd2 = true,
4255 .psl = false,
4256},
4257joinpd1("fms-compatibility-version="),
4258joinpd1("fopenmp-cuda-number-of-sm="),
4259joinpd1("foptimization-record-file="),
4260joinpd1("fpatchable-function-entry="),
4261joinpd1("fsave-optimization-record="),
4262joinpd1("ftemplate-backtrace-limit="),
4263.{
4264 .name = "gpu-max-threads-per-block=",
4265 .syntax = .joined,
4266 .zig_equivalent = .other,
4267 .pd1 = false,
4268 .pd2 = true,
4269 .psl = false,
4270},
4271joinpd1("malign-branch-prefix-size="),
4272joinpd1("objcmt-whitelist-dir-path="),
4273joinpd1("Wno-nonportable-cfstrings"),
4274joinpd1("analyzer-disable-checker="),
4275joinpd1("fbuild-session-timestamp="),
4276joinpd1("fprofile-instrument-path="),
4277joinpd1("mdefault-build-attributes"),
4278joinpd1("msign-return-address-key="),
4279.{
4280 .name = "verify-ignore-unexpected=",
4281 .syntax = .comma_joined,
4282 .zig_equivalent = .other,
4283 .pd1 = true,
4284 .pd2 = false,
4285 .psl = false,
4286},
4287.{
4288 .name = "include-directory-after=",
4289 .syntax = .joined,
4290 .zig_equivalent = .other,
4291 .pd1 = false,
4292 .pd2 = true,
4293 .psl = false,
4294},
4295.{
4296 .name = "compress-debug-sections=",
4297 .syntax = .joined,
4298 .zig_equivalent = .other,
4299 .pd1 = true,
4300 .pd2 = true,
4301 .psl = false,
4302},
4303.{
4304 .name = "fcomment-block-commands=",
4305 .syntax = .comma_joined,
4306 .zig_equivalent = .other,
4307 .pd1 = true,
4308 .pd2 = false,
4309 .psl = false,
4310},
4311joinpd1("flax-vector-conversions="),
4312joinpd1("fmodules-embed-all-files"),
4313joinpd1("fmodules-prune-interval="),
4314joinpd1("foverride-record-layout="),
4315joinpd1("fprofile-instr-generate="),
4316joinpd1("fprofile-remapping-file="),
4317joinpd1("fsanitize-coverage-type="),
4318joinpd1("fsanitize-hwaddress-abi="),
4319joinpd1("ftime-trace-granularity="),
4320jspd1("fxray-always-instrument="),
4321jspd1("internal-externc-isystem"),
4322.{
4323 .name = "libomptarget-nvptx-path=",
4324 .syntax = .joined,
4325 .zig_equivalent = .other,
4326 .pd1 = false,
4327 .pd2 = true,
4328 .psl = false,
4329},
4330.{
4331 .name = "no-system-header-prefix=",
4332 .syntax = .joined,
4333 .zig_equivalent = .other,
4334 .pd1 = false,
4335 .pd2 = true,
4336 .psl = false,
4337},
4338.{
4339 .name = "output-class-directory=",
4340 .syntax = .joined,
4341 .zig_equivalent = .other,
4342 .pd1 = false,
4343 .pd2 = true,
4344 .psl = false,
4345},
4346joinpd1("analyzer-inlining-mode="),
4347joinpd1("fconstant-string-class="),
4348joinpd1("fcrash-diagnostics-dir="),
4349joinpd1("fdebug-compilation-dir="),
4350joinpd1("fdebug-default-version="),
4351joinpd1("ffp-exception-behavior="),
4352joinpd1("fmacro-backtrace-limit="),
4353joinpd1("fmax-array-constructor="),
4354joinpd1("fprofile-exclude-files="),
4355joinpd1("ftrivial-auto-var-init="),
4356jspd1("fxray-never-instrument="),
4357jspd1("interface-stub-version="),
4358joinpd1("malign-branch-boundary="),
4359joinpd1("mappletvos-version-min="),
4360joinpd1("Wnonportable-cfstrings"),
4361joinpd1("fdefault-calling-conv="),
4362joinpd1("fmax-subrecord-length="),
4363joinpd1("fmodules-ignore-macro="),
4364.{
4365 .name = "fno-sanitize-coverage=",
4366 .syntax = .comma_joined,
4367 .zig_equivalent = .other,
4368 .pd1 = true,
4369 .pd2 = false,
4370 .psl = false,
4371},
4372joinpd1("fobjc-dispatch-method="),
4373joinpd1("foperator-arrow-depth="),
4374joinpd1("fprebuilt-module-path="),
4375joinpd1("fprofile-filter-files="),
4376joinpd1("fspell-checking-limit="),
4377joinpd1("miphoneos-version-min="),
4378joinpd1("msmall-data-threshold="),
4379joinpd1("Wlarge-by-value-copy="),
4380joinpd1("analyzer-constraints="),
4381joinpd1("analyzer-dump-egraph="),
4382jspd1("compatibility_version"),
4383jspd1("dylinker_install_name"),
4384joinpd1("fcs-profile-generate="),
4385joinpd1("fmodules-prune-after="),
4386.{
4387 .name = "fno-sanitize-recover=",
4388 .syntax = .comma_joined,
4389 .zig_equivalent = .other,
4390 .pd1 = true,
4391 .pd2 = false,
4392 .psl = false,
4393},
4394jspd1("iframeworkwithsysroot"),
4395joinpd1("mamdgpu-debugger-abi="),
4396joinpd1("mprefer-vector-width="),
4397joinpd1("msign-return-address="),
4398joinpd1("mwatchos-version-min="),
4399.{
4400 .name = "system-header-prefix=",
4401 .syntax = .joined,
4402 .zig_equivalent = .other,
4403 .pd1 = false,
4404 .pd2 = true,
4405 .psl = false,
4406},
4407.{
4408 .name = "include-with-prefix=",
4409 .syntax = .joined,
4410 .zig_equivalent = .other,
4411 .pd1 = false,
4412 .pd2 = true,
4413 .psl = false,
4414},
4415joinpd1("coverage-notes-file="),
4416joinpd1("fbuild-session-file="),
4417joinpd1("fdiagnostics-format="),
4418joinpd1("fmax-stack-var-size="),
4419joinpd1("fmodules-cache-path="),
4420joinpd1("fmodules-embed-file="),
4421joinpd1("fprofile-instrument="),
4422joinpd1("fprofile-sample-use="),
4423joinpd1("fsanitize-blacklist="),
4424.{
4425 .name = "hip-device-lib-path=",
4426 .syntax = .joined,
4427 .zig_equivalent = .other,
4428 .pd1 = false,
4429 .pd2 = true,
4430 .psl = false,
4431},
4432joinpd1("mmacosx-version-min="),
4433.{
4434 .name = "no-cuda-include-ptx=",
4435 .syntax = .joined,
4436 .zig_equivalent = .other,
4437 .pd1 = false,
4438 .pd2 = true,
4439 .psl = false,
4440},
4441joinpd1("Wframe-larger-than="),
4442joinpd1("code-completion-at="),
4443joinpd1("coverage-data-file="),
4444joinpd1("fblas-matmul-limit="),
4445joinpd1("fdiagnostics-color="),
4446joinpd1("ffixed-line-length-"),
4447joinpd1("flimited-precision="),
4448joinpd1("fprofile-instr-use="),
4449.{
4450 .name = "fsanitize-coverage=",
4451 .syntax = .comma_joined,
4452 .zig_equivalent = .other,
4453 .pd1 = true,
4454 .pd2 = false,
4455 .psl = false,
4456},
4457joinpd1("fthin-link-bitcode="),
4458joinpd1("mbranch-protection="),
4459joinpd1("mmacos-version-min="),
4460joinpd1("pch-through-header="),
4461joinpd1("target-sdk-version="),
4462.{
4463 .name = "execution-charset:",
4464 .syntax = .joined,
4465 .zig_equivalent = .other,
4466 .pd1 = true,
4467 .pd2 = false,
4468 .psl = true,
4469},
4470.{
4471 .name = "include-directory=",
4472 .syntax = .joined,
4473 .zig_equivalent = .other,
4474 .pd1 = false,
4475 .pd2 = true,
4476 .psl = false,
4477},
4478.{
4479 .name = "library-directory=",
4480 .syntax = .joined,
4481 .zig_equivalent = .other,
4482 .pd1 = false,
4483 .pd2 = true,
4484 .psl = false,
4485},
4486.{
4487 .name = "config-system-dir=",
4488 .syntax = .joined,
4489 .zig_equivalent = .other,
4490 .pd1 = false,
4491 .pd2 = true,
4492 .psl = false,
4493},
4494joinpd1("fclang-abi-compat="),
4495joinpd1("fcompile-resource="),
4496joinpd1("fdebug-prefix-map="),
4497joinpd1("fdenormal-fp-math="),
4498joinpd1("fexcess-precision="),
4499joinpd1("ffree-line-length-"),
4500joinpd1("fmacro-prefix-map="),
4501.{
4502 .name = "fno-sanitize-trap=",
4503 .syntax = .comma_joined,
4504 .zig_equivalent = .other,
4505 .pd1 = true,
4506 .pd2 = false,
4507 .psl = false,
4508},
4509joinpd1("fobjc-abi-version="),
4510joinpd1("foutput-class-dir="),
4511joinpd1("fprofile-generate="),
4512joinpd1("frewrite-map-file="),
4513.{
4514 .name = "fsanitize-recover=",
4515 .syntax = .comma_joined,
4516 .zig_equivalent = .other,
4517 .pd1 = true,
4518 .pd2 = false,
4519 .psl = false,
4520},
4521joinpd1("fsymbol-partition="),
4522joinpd1("mcompact-branches="),
4523joinpd1("mstack-probe-size="),
4524joinpd1("mtvos-version-min="),
4525joinpd1("working-directory="),
4526joinpd1("analyze-function="),
4527joinpd1("analyzer-checker="),
4528joinpd1("coverage-version="),
4529.{
4530 .name = "cuda-include-ptx=",
4531 .syntax = .joined,
4532 .zig_equivalent = .other,
4533 .pd1 = false,
4534 .pd2 = true,
4535 .psl = false,
4536},
4537joinpd1("falign-functions="),
4538joinpd1("fconstexpr-depth="),
4539joinpd1("fconstexpr-steps="),
4540joinpd1("ffile-prefix-map="),
4541joinpd1("fmodule-map-file="),
4542joinpd1("fobjc-arc-cxxlib="),
4543jspd1("iwithprefixbefore"),
4544joinpd1("malign-functions="),
4545joinpd1("mios-version-min="),
4546joinpd1("mstack-alignment="),
4547.{
4548 .name = "no-cuda-gpu-arch=",
4549 .syntax = .joined,
4550 .zig_equivalent = .other,
4551 .pd1 = false,
4552 .pd2 = true,
4553 .psl = false,
4554},
4555jspd1("working-directory"),
4556joinpd1("analyzer-output="),
4557.{
4558 .name = "config-user-dir=",
4559 .syntax = .joined,
4560 .zig_equivalent = .other,
4561 .pd1 = false,
4562 .pd2 = true,
4563 .psl = false,
4564},
4565joinpd1("debug-info-kind="),
4566joinpd1("debugger-tuning="),
4567joinpd1("fcf-runtime-abi="),
4568joinpd1("finit-character="),
4569joinpd1("fmax-type-align="),
4570joinpd1("fmessage-length="),
4571.{
4572 .name = "fopenmp-targets=",
4573 .syntax = .comma_joined,
4574 .zig_equivalent = .other,
4575 .pd1 = true,
4576 .pd2 = false,
4577 .psl = false,
4578},
4579joinpd1("fopenmp-version="),
4580joinpd1("fshow-overloads="),
4581joinpd1("ftemplate-depth-"),
4582joinpd1("ftemplate-depth="),
4583jspd1("fxray-attr-list="),
4584jspd1("internal-isystem"),
4585joinpd1("mlinker-version="),
4586.{
4587 .name = "print-file-name=",
4588 .syntax = .joined,
4589 .zig_equivalent = .other,
4590 .pd1 = true,
4591 .pd2 = true,
4592 .psl = false,
4593},
4594.{
4595 .name = "print-prog-name=",
4596 .syntax = .joined,
4597 .zig_equivalent = .other,
4598 .pd1 = true,
4599 .pd2 = true,
4600 .psl = false,
4601},
4602jspd1("stdlib++-isystem"),
4603joinpd1("Rpass-analysis="),
4604.{
4605 .name = "Xopenmp-target=",
4606 .syntax = .joined_and_separate,
4607 .zig_equivalent = .other,
4608 .pd1 = true,
4609 .pd2 = false,
4610 .psl = false,
4611},
4612.{
4613 .name = "source-charset:",
4614 .syntax = .joined,
4615 .zig_equivalent = .other,
4616 .pd1 = true,
4617 .pd2 = false,
4618 .psl = true,
4619},
4620.{
4621 .name = "analyzer-output",
4622 .syntax = .joined_or_separate,
4623 .zig_equivalent = .other,
4624 .pd1 = false,
4625 .pd2 = true,
4626 .psl = false,
4627},
4628.{
4629 .name = "include-prefix=",
4630 .syntax = .joined,
4631 .zig_equivalent = .other,
4632 .pd1 = false,
4633 .pd2 = true,
4634 .psl = false,
4635},
4636.{
4637 .name = "undefine-macro=",
4638 .syntax = .joined,
4639 .zig_equivalent = .other,
4640 .pd1 = false,
4641 .pd2 = true,
4642 .psl = false,
4643},
4644joinpd1("analyzer-purge="),
4645joinpd1("analyzer-store="),
4646jspd1("current_version"),
4647joinpd1("fbootclasspath="),
4648joinpd1("fbracket-depth="),
4649joinpd1("fcf-protection="),
4650joinpd1("fdepfile-entry="),
4651joinpd1("fembed-bitcode="),
4652joinpd1("finput-charset="),
4653joinpd1("fmodule-format="),
4654joinpd1("fms-memptr-rep="),
4655joinpd1("fnew-alignment="),
4656joinpd1("frecord-marker="),
4657.{
4658 .name = "fsanitize-trap=",
4659 .syntax = .comma_joined,
4660 .zig_equivalent = .other,
4661 .pd1 = true,
4662 .pd2 = false,
4663 .psl = false,
4664},
4665joinpd1("fthinlto-index="),
4666joinpd1("ftrap-function="),
4667joinpd1("ftrapv-handler="),
4668.{
4669 .name = "hip-device-lib=",
4670 .syntax = .joined,
4671 .zig_equivalent = .other,
4672 .pd1 = false,
4673 .pd2 = true,
4674 .psl = false,
4675},
4676joinpd1("mdynamic-no-pic"),
4677joinpd1("mframe-pointer="),
4678joinpd1("mindirect-jump="),
4679joinpd1("preamble-bytes="),
4680.{
4681 .name = "bootclasspath=",
4682 .syntax = .joined,
4683 .zig_equivalent = .other,
4684 .pd1 = false,
4685 .pd2 = true,
4686 .psl = false,
4687},
4688.{
4689 .name = "cuda-gpu-arch=",
4690 .syntax = .joined,
4691 .zig_equivalent = .other,
4692 .pd1 = false,
4693 .pd2 = true,
4694 .psl = false,
4695},
4696.{
4697 .name = "dependent-lib=",
4698 .syntax = .joined,
4699 .zig_equivalent = .other,
4700 .pd1 = false,
4701 .pd2 = true,
4702 .psl = false,
4703},
4704joinpd1("dwarf-version="),
4705joinpd1("falign-labels="),
4706joinpd1("fauto-profile="),
4707joinpd1("fexec-charset="),
4708joinpd1("fgnuc-version="),
4709joinpd1("finit-integer="),
4710joinpd1("finit-logical="),
4711joinpd1("finline-limit="),
4712joinpd1("fobjc-runtime="),
4713.{
4714 .name = "gcc-toolchain=",
4715 .syntax = .joined,
4716 .zig_equivalent = .other,
4717 .pd1 = false,
4718 .pd2 = true,
4719 .psl = false,
4720},
4721.{
4722 .name = "linker-option=",
4723 .syntax = .joined,
4724 .zig_equivalent = .other,
4725 .pd1 = false,
4726 .pd2 = true,
4727 .psl = false,
4728},
4729.{
4730 .name = "malign-branch=",
4731 .syntax = .comma_joined,
4732 .zig_equivalent = .other,
4733 .pd1 = true,
4734 .pd2 = false,
4735 .psl = false,
4736},
4737jspd1("objcxx-isystem"),
4738joinpd1("vtordisp-mode="),
4739joinpd1("Rpass-missed="),
4740joinpd1("Wlarger-than-"),
4741joinpd1("Wlarger-than="),
4742.{
4743 .name = "define-macro=",
4744 .syntax = .joined,
4745 .zig_equivalent = .other,
4746 .pd1 = false,
4747 .pd2 = true,
4748 .psl = false,
4749},
4750joinpd1("ast-dump-all="),
4751.{
4752 .name = "autocomplete=",
4753 .syntax = .joined,
4754 .zig_equivalent = .other,
4755 .pd1 = false,
4756 .pd2 = true,
4757 .psl = false,
4758},
4759joinpd1("falign-jumps="),
4760joinpd1("falign-loops="),
4761joinpd1("faligned-new="),
4762joinpd1("ferror-limit="),
4763joinpd1("ffp-contract="),
4764joinpd1("fmodule-file="),
4765joinpd1("fmodule-name="),
4766joinpd1("fmsc-version="),
4767.{
4768 .name = "fno-sanitize=",
4769 .syntax = .comma_joined,
4770 .zig_equivalent = .other,
4771 .pd1 = true,
4772 .pd2 = false,
4773 .psl = false,
4774},
4775joinpd1("fpack-struct="),
4776joinpd1("fpass-plugin="),
4777joinpd1("fprofile-dir="),
4778joinpd1("fprofile-use="),
4779joinpd1("frandom-seed="),
4780joinpd1("gsplit-dwarf="),
4781jspd1("isystem-after"),
4782joinpd1("malign-jumps="),
4783joinpd1("malign-loops="),
4784joinpd1("mimplicit-it="),
4785jspd1("pagezero_size"),
4786joinpd1("resource-dir="),
4787.{
4788 .name = "dyld-prefix=",
4789 .syntax = .joined,
4790 .zig_equivalent = .other,
4791 .pd1 = false,
4792 .pd2 = true,
4793 .psl = false,
4794},
4795.{
4796 .name = "driver-mode=",
4797 .syntax = .joined,
4798 .zig_equivalent = .other,
4799 .pd1 = false,
4800 .pd2 = true,
4801 .psl = false,
4802},
4803joinpd1("fmax-errors="),
4804joinpd1("fno-builtin-"),
4805joinpd1("fvisibility="),
4806joinpd1("fwchar-type="),
4807jspd1("fxray-modes="),
4808jspd1("iwithsysroot"),
4809joinpd1("mhvx-length="),
4810jspd1("objc-isystem"),
4811.{
4812 .name = "rsp-quoting=",
4813 .syntax = .joined,
4814 .zig_equivalent = .other,
4815 .pd1 = false,
4816 .pd2 = true,
4817 .psl = false,
4818},
4819joinpd1("std-default="),
4820jspd1("sub_umbrella"),
4821.{
4822 .name = "Qpar-report",
4823 .syntax = .joined,
4824 .zig_equivalent = .other,
4825 .pd1 = true,
4826 .pd2 = false,
4827 .psl = true,
4828},
4829.{
4830 .name = "Qvec-report",
4831 .syntax = .joined,
4832 .zig_equivalent = .other,
4833 .pd1 = true,
4834 .pd2 = false,
4835 .psl = true,
4836},
4837.{
4838 .name = "errorReport",
4839 .syntax = .joined,
4840 .zig_equivalent = .other,
4841 .pd1 = true,
4842 .pd2 = false,
4843 .psl = true,
4844},
4845.{
4846 .name = "for-linker=",
4847 .syntax = .joined,
4848 .zig_equivalent = .other,
4849 .pd1 = false,
4850 .pd2 = true,
4851 .psl = false,
4852},
4853.{
4854 .name = "force-link=",
4855 .syntax = .joined,
4856 .zig_equivalent = .other,
4857 .pd1 = false,
4858 .pd2 = true,
4859 .psl = false,
4860},
4861jspd1("client_name"),
4862jspd1("cxx-isystem"),
4863joinpd1("fclasspath="),
4864joinpd1("finit-real="),
4865joinpd1("fforce-addr"),
4866joinpd1("ftls-model="),
4867jspd1("ivfsoverlay"),
4868jspd1("iwithprefix"),
4869joinpd1("mfloat-abi="),
4870.{
4871 .name = "plugin-arg-",
4872 .syntax = .joined_and_separate,
4873 .zig_equivalent = .other,
4874 .pd1 = true,
4875 .pd2 = false,
4876 .psl = false,
4877},
4878.{
4879 .name = "ptxas-path=",
4880 .syntax = .joined,
4881 .zig_equivalent = .other,
4882 .pd1 = false,
4883 .pd2 = true,
4884 .psl = false,
4885},
4886.{
4887 .name = "save-stats=",
4888 .syntax = .joined,
4889 .zig_equivalent = .other,
4890 .pd1 = true,
4891 .pd2 = true,
4892 .psl = false,
4893},
4894.{
4895 .name = "save-temps=",
4896 .syntax = .joined,
4897 .zig_equivalent = .other,
4898 .pd1 = true,
4899 .pd2 = true,
4900 .psl = false,
4901},
4902joinpd1("stats-file="),
4903jspd1("sub_library"),
4904.{
4905 .name = "CLASSPATH=",
4906 .syntax = .joined,
4907 .zig_equivalent = .other,
4908 .pd1 = false,
4909 .pd2 = true,
4910 .psl = false,
4911},
4912.{
4913 .name = "constexpr:",
4914 .syntax = .joined,
4915 .zig_equivalent = .other,
4916 .pd1 = true,
4917 .pd2 = false,
4918 .psl = true,
4919},
4920.{
4921 .name = "classpath=",
4922 .syntax = .joined,
4923 .zig_equivalent = .other,
4924 .pd1 = false,
4925 .pd2 = true,
4926 .psl = false,
4927},
4928.{
4929 .name = "cuda-path=",
4930 .syntax = .joined,
4931 .zig_equivalent = .other,
4932 .pd1 = false,
4933 .pd2 = true,
4934 .psl = false,
4935},
4936joinpd1("fencoding="),
4937joinpd1("ffp-model="),
4938joinpd1("ffpe-trap="),
4939joinpd1("flto-jobs="),
4940.{
4941 .name = "fsanitize=",
4942 .syntax = .comma_joined,
4943 .zig_equivalent = .other,
4944 .pd1 = true,
4945 .pd2 = false,
4946 .psl = false,
4947},
4948jspd1("iframework"),
4949joinpd1("mtls-size="),
4950joinpd1("segs_read_"),
4951.{
4952 .name = "unwindlib=",
4953 .syntax = .joined,
4954 .zig_equivalent = .other,
4955 .pd1 = true,
4956 .pd2 = true,
4957 .psl = false,
4958},
4959.{
4960 .name = "cgthreads",
4961 .syntax = .joined,
4962 .zig_equivalent = .other,
4963 .pd1 = true,
4964 .pd2 = false,
4965 .psl = true,
4966},
4967.{
4968 .name = "encoding=",
4969 .syntax = .joined,
4970 .zig_equivalent = .other,
4971 .pd1 = false,
4972 .pd2 = true,
4973 .psl = false,
4974},
4975.{
4976 .name = "language=",
4977 .syntax = .joined,
4978 .zig_equivalent = .other,
4979 .pd1 = false,
4980 .pd2 = true,
4981 .psl = false,
4982},
4983.{
4984 .name = "optimize=",
4985 .syntax = .joined,
4986 .zig_equivalent = .other,
4987 .pd1 = false,
4988 .pd2 = true,
4989 .psl = false,
4990},
4991.{
4992 .name = "resource=",
4993 .syntax = .joined,
4994 .zig_equivalent = .other,
4995 .pd1 = false,
4996 .pd2 = true,
4997 .psl = false,
4998},
4999joinpd1("ast-dump="),
5000jspd1("c-isystem"),
5001joinpd1("fcoarray="),
5002joinpd1("fconvert="),
5003joinpd1("fextdirs="),
5004joinpd1("ftabstop="),
5005jspd1("idirafter"),
5006joinpd1("mregparm="),
5007jspd1("undefined"),
5008.{
5009 .name = "extdirs=",
5010 .syntax = .joined,
5011 .zig_equivalent = .other,
5012 .pd1 = false,
5013 .pd2 = true,
5014 .psl = false,
5015},
5016.{
5017 .name = "imacros=",
5018 .syntax = .joined,
5019 .zig_equivalent = .other,
5020 .pd1 = false,
5021 .pd2 = true,
5022 .psl = false,
5023},
5024.{
5025 .name = "include=",
5026 .syntax = .joined,
5027 .zig_equivalent = .other,
5028 .pd1 = false,
5029 .pd2 = true,
5030 .psl = false,
5031},
5032.{
5033 .name = "sysroot=",
5034 .syntax = .joined,
5035 .zig_equivalent = .other,
5036 .pd1 = false,
5037 .pd2 = true,
5038 .psl = false,
5039},
5040joinpd1("fopenmp="),
5041joinpd1("fplugin="),
5042joinpd1("fuse-ld="),
5043joinpd1("fveclib="),
5044jspd1("isysroot"),
5045joinpd1("mcmodel="),
5046joinpd1("mconsole"),
5047joinpd1("mfpmath="),
5048joinpd1("mhwmult="),
5049joinpd1("mthreads"),
5050joinpd1("municode"),
5051joinpd1("mwindows"),
5052jspd1("seg1addr"),
5053.{
5054 .name = "assert=",
5055 .syntax = .joined,
5056 .zig_equivalent = .other,
5057 .pd1 = false,
5058 .pd2 = true,
5059 .psl = false,
5060},
5061.{
5062 .name = "mhwdiv=",
5063 .syntax = .joined,
5064 .zig_equivalent = .other,
5065 .pd1 = false,
5066 .pd2 = true,
5067 .psl = false,
5068},
5069.{
5070 .name = "output=",
5071 .syntax = .joined,
5072 .zig_equivalent = .other,
5073 .pd1 = false,
5074 .pd2 = true,
5075 .psl = false,
5076},
5077.{
5078 .name = "prefix=",
5079 .syntax = .joined,
5080 .zig_equivalent = .other,
5081 .pd1 = false,
5082 .pd2 = true,
5083 .psl = false,
5084},
5085.{
5086 .name = "cl-ext=",
5087 .syntax = .comma_joined,
5088 .zig_equivalent = .other,
5089 .pd1 = true,
5090 .pd2 = false,
5091 .psl = false,
5092},
5093joinpd1("cl-std="),
5094joinpd1("fcheck="),
5095.{
5096 .name = "imacros",
5097 .syntax = .joined_or_separate,
5098 .zig_equivalent = .other,
5099 .pd1 = true,
5100 .pd2 = true,
5101 .psl = false,
5102},
5103.{
5104 .name = "include",
5105 .syntax = .joined_or_separate,
5106 .zig_equivalent = .other,
5107 .pd1 = true,
5108 .pd2 = true,
5109 .psl = false,
5110},
5111jspd1("iprefix"),
5112jspd1("isystem"),
5113joinpd1("mhwdiv="),
5114joinpd1("moslib="),
5115.{
5116 .name = "mrecip=",
5117 .syntax = .comma_joined,
5118 .zig_equivalent = .other,
5119 .pd1 = true,
5120 .pd2 = false,
5121 .psl = false,
5122},
5123.{
5124 .name = "stdlib=",
5125 .syntax = .joined,
5126 .zig_equivalent = .other,
5127 .pd1 = true,
5128 .pd2 = true,
5129 .psl = false,
5130},
5131.{
5132 .name = "target=",
5133 .syntax = .joined,
5134 .zig_equivalent = .target,
5135 .pd1 = false,
5136 .pd2 = true,
5137 .psl = false,
5138},
5139joinpd1("triple="),
5140.{
5141 .name = "verify=",
5142 .syntax = .comma_joined,
5143 .zig_equivalent = .other,
5144 .pd1 = true,
5145 .pd2 = false,
5146 .psl = false,
5147},
5148joinpd1("Rpass="),
5149.{
5150 .name = "Xarch_",
5151 .syntax = .joined_and_separate,
5152 .zig_equivalent = .other,
5153 .pd1 = true,
5154 .pd2 = false,
5155 .psl = false,
5156},
5157.{
5158 .name = "clang:",
5159 .syntax = .joined,
5160 .zig_equivalent = .other,
5161 .pd1 = true,
5162 .pd2 = false,
5163 .psl = true,
5164},
5165.{
5166 .name = "guard:",
5167 .syntax = .joined,
5168 .zig_equivalent = .other,
5169 .pd1 = true,
5170 .pd2 = false,
5171 .psl = true,
5172},
5173.{
5174 .name = "debug=",
5175 .syntax = .joined,
5176 .zig_equivalent = .other,
5177 .pd1 = false,
5178 .pd2 = true,
5179 .psl = false,
5180},
5181.{
5182 .name = "param=",
5183 .syntax = .joined,
5184 .zig_equivalent = .other,
5185 .pd1 = false,
5186 .pd2 = true,
5187 .psl = false,
5188},
5189.{
5190 .name = "warn-=",
5191 .syntax = .joined,
5192 .zig_equivalent = .other,
5193 .pd1 = false,
5194 .pd2 = true,
5195 .psl = false,
5196},
5197joinpd1("fixit="),
5198joinpd1("gstabs"),
5199joinpd1("gxcoff"),
5200jspd1("iquote"),
5201joinpd1("march="),
5202joinpd1("mtune="),
5203.{
5204 .name = "rtlib=",
5205 .syntax = .joined,
5206 .zig_equivalent = .other,
5207 .pd1 = true,
5208 .pd2 = true,
5209 .psl = false,
5210},
5211.{
5212 .name = "specs=",
5213 .syntax = .joined,
5214 .zig_equivalent = .other,
5215 .pd1 = true,
5216 .pd2 = true,
5217 .psl = false,
5218},
5219joinpd1("weak-l"),
5220joinpd1("Ofast"),
5221jspd1("Tdata"),
5222jspd1("Ttext"),
5223.{
5224 .name = "arch:",
5225 .syntax = .joined,
5226 .zig_equivalent = .other,
5227 .pd1 = true,
5228 .pd2 = false,
5229 .psl = true,
5230},
5231.{
5232 .name = "favor",
5233 .syntax = .joined,
5234 .zig_equivalent = .other,
5235 .pd1 = true,
5236 .pd2 = false,
5237 .psl = true,
5238},
5239.{
5240 .name = "imsvc",
5241 .syntax = .joined_or_separate,
5242 .zig_equivalent = .other,
5243 .pd1 = true,
5244 .pd2 = false,
5245 .psl = true,
5246},
5247.{
5248 .name = "warn-",
5249 .syntax = .joined,
5250 .zig_equivalent = .other,
5251 .pd1 = false,
5252 .pd2 = true,
5253 .psl = false,
5254},
5255joinpd1("flto="),
5256joinpd1("gcoff"),
5257joinpd1("mabi="),
5258joinpd1("mabs="),
5259joinpd1("masm="),
5260joinpd1("mcpu="),
5261joinpd1("mfpu="),
5262joinpd1("mhvx="),
5263joinpd1("mmcu="),
5264joinpd1("mnan="),
5265jspd1("Tbss"),
5266.{
5267 .name = "link",
5268 .syntax = .remaining_args_joined,
5269 .zig_equivalent = .other,
5270 .pd1 = true,
5271 .pd2 = false,
5272 .psl = true,
5273},
5274.{
5275 .name = "std:",
5276 .syntax = .joined,
5277 .zig_equivalent = .other,
5278 .pd1 = true,
5279 .pd2 = false,
5280 .psl = true,
5281},
5282joinpd1("ccc-"),
5283joinpd1("gvms"),
5284joinpd1("mdll"),
5285joinpd1("mtp="),
5286.{
5287 .name = "std=",
5288 .syntax = .joined,
5289 .zig_equivalent = .other,
5290 .pd1 = true,
5291 .pd2 = true,
5292 .psl = false,
5293},
5294.{
5295 .name = "Wa,",
5296 .syntax = .comma_joined,
5297 .zig_equivalent = .other,
5298 .pd1 = true,
5299 .pd2 = false,
5300 .psl = false,
5301},
5302.{
5303 .name = "Wl,",
5304 .syntax = .comma_joined,
5305 .zig_equivalent = .wl,
5306 .pd1 = true,
5307 .pd2 = false,
5308 .psl = false,
5309},
5310.{
5311 .name = "Wp,",
5312 .syntax = .comma_joined,
5313 .zig_equivalent = .other,
5314 .pd1 = true,
5315 .pd2 = false,
5316 .psl = false,
5317},
5318.{
5319 .name = "RTC",
5320 .syntax = .joined,
5321 .zig_equivalent = .other,
5322 .pd1 = true,
5323 .pd2 = false,
5324 .psl = true,
5325},
5326.{
5327 .name = "Zc:",
5328 .syntax = .joined,
5329 .zig_equivalent = .other,
5330 .pd1 = true,
5331 .pd2 = false,
5332 .psl = true,
5333},
5334.{
5335 .name = "clr",
5336 .syntax = .joined,
5337 .zig_equivalent = .other,
5338 .pd1 = true,
5339 .pd2 = false,
5340 .psl = true,
5341},
5342.{
5343 .name = "doc",
5344 .syntax = .joined,
5345 .zig_equivalent = .other,
5346 .pd1 = true,
5347 .pd2 = false,
5348 .psl = true,
5349},
5350joinpd1("gz="),
5351joinpd1("A-"),
5352joinpd1("G="),
5353jspd1("MF"),
5354jspd1("MJ"),
5355jspd1("MQ"),
5356jspd1("MT"),
5357.{
5358 .name = "AI",
5359 .syntax = .joined_or_separate,
5360 .zig_equivalent = .other,
5361 .pd1 = true,
5362 .pd2 = false,
5363 .psl = true,
5364},
5365.{
5366 .name = "EH",
5367 .syntax = .joined,
5368 .zig_equivalent = .other,
5369 .pd1 = true,
5370 .pd2 = false,
5371 .psl = true,
5372},
5373.{
5374 .name = "FA",
5375 .syntax = .joined,
5376 .zig_equivalent = .other,
5377 .pd1 = true,
5378 .pd2 = false,
5379 .psl = true,
5380},
5381.{
5382 .name = "FI",
5383 .syntax = .joined_or_separate,
5384 .zig_equivalent = .other,
5385 .pd1 = true,
5386 .pd2 = false,
5387 .psl = true,
5388},
5389.{
5390 .name = "FR",
5391 .syntax = .joined,
5392 .zig_equivalent = .other,
5393 .pd1 = true,
5394 .pd2 = false,
5395 .psl = true,
5396},
5397.{
5398 .name = "FU",
5399 .syntax = .joined_or_separate,
5400 .zig_equivalent = .other,
5401 .pd1 = true,
5402 .pd2 = false,
5403 .psl = true,
5404},
5405.{
5406 .name = "Fa",
5407 .syntax = .joined,
5408 .zig_equivalent = .other,
5409 .pd1 = true,
5410 .pd2 = false,
5411 .psl = true,
5412},
5413.{
5414 .name = "Fd",
5415 .syntax = .joined,
5416 .zig_equivalent = .other,
5417 .pd1 = true,
5418 .pd2 = false,
5419 .psl = true,
5420},
5421.{
5422 .name = "Fe",
5423 .syntax = .joined,
5424 .zig_equivalent = .other,
5425 .pd1 = true,
5426 .pd2 = false,
5427 .psl = true,
5428},
5429.{
5430 .name = "Fi",
5431 .syntax = .joined,
5432 .zig_equivalent = .other,
5433 .pd1 = true,
5434 .pd2 = false,
5435 .psl = true,
5436},
5437.{
5438 .name = "Fm",
5439 .syntax = .joined,
5440 .zig_equivalent = .other,
5441 .pd1 = true,
5442 .pd2 = false,
5443 .psl = true,
5444},
5445.{
5446 .name = "Fo",
5447 .syntax = .joined,
5448 .zig_equivalent = .other,
5449 .pd1 = true,
5450 .pd2 = false,
5451 .psl = true,
5452},
5453.{
5454 .name = "Fp",
5455 .syntax = .joined,
5456 .zig_equivalent = .other,
5457 .pd1 = true,
5458 .pd2 = false,
5459 .psl = true,
5460},
5461.{
5462 .name = "Fr",
5463 .syntax = .joined,
5464 .zig_equivalent = .other,
5465 .pd1 = true,
5466 .pd2 = false,
5467 .psl = true,
5468},
5469.{
5470 .name = "Gs",
5471 .syntax = .joined,
5472 .zig_equivalent = .other,
5473 .pd1 = true,
5474 .pd2 = false,
5475 .psl = true,
5476},
5477.{
5478 .name = "MP",
5479 .syntax = .joined,
5480 .zig_equivalent = .other,
5481 .pd1 = true,
5482 .pd2 = false,
5483 .psl = true,
5484},
5485.{
5486 .name = "Tc",
5487 .syntax = .joined_or_separate,
5488 .zig_equivalent = .other,
5489 .pd1 = true,
5490 .pd2 = false,
5491 .psl = true,
5492},
5493.{
5494 .name = "Tp",
5495 .syntax = .joined_or_separate,
5496 .zig_equivalent = .other,
5497 .pd1 = true,
5498 .pd2 = false,
5499 .psl = true,
5500},
5501.{
5502 .name = "Yc",
5503 .syntax = .joined,
5504 .zig_equivalent = .other,
5505 .pd1 = true,
5506 .pd2 = false,
5507 .psl = true,
5508},
5509.{
5510 .name = "Yl",
5511 .syntax = .joined,
5512 .zig_equivalent = .other,
5513 .pd1 = true,
5514 .pd2 = false,
5515 .psl = true,
5516},
5517.{
5518 .name = "Yu",
5519 .syntax = .joined,
5520 .zig_equivalent = .other,
5521 .pd1 = true,
5522 .pd2 = false,
5523 .psl = true,
5524},
5525.{
5526 .name = "ZW",
5527 .syntax = .joined,
5528 .zig_equivalent = .other,
5529 .pd1 = true,
5530 .pd2 = false,
5531 .psl = true,
5532},
5533.{
5534 .name = "Zm",
5535 .syntax = .joined,
5536 .zig_equivalent = .other,
5537 .pd1 = true,
5538 .pd2 = false,
5539 .psl = true,
5540},
5541.{
5542 .name = "Zp",
5543 .syntax = .joined,
5544 .zig_equivalent = .other,
5545 .pd1 = true,
5546 .pd2 = false,
5547 .psl = true,
5548},
5549.{
5550 .name = "d2",
5551 .syntax = .joined,
5552 .zig_equivalent = .other,
5553 .pd1 = true,
5554 .pd2 = false,
5555 .psl = true,
5556},
5557.{
5558 .name = "vd",
5559 .syntax = .joined,
5560 .zig_equivalent = .other,
5561 .pd1 = true,
5562 .pd2 = false,
5563 .psl = true,
5564},
5565jspd1("A"),
5566jspd1("B"),
5567jspd1("D"),
5568jspd1("F"),
5569jspd1("G"),
5570jspd1("I"),
5571jspd1("J"),
5572jspd1("L"),
5573joinpd1("O"),
5574joinpd1("R"),
5575jspd1("T"),
5576jspd1("U"),
5577jspd1("V"),
5578joinpd1("W"),
5579joinpd1("X"),
5580joinpd1("Z"),
5581.{
5582 .name = "D",
5583 .syntax = .joined_or_separate,
5584 .zig_equivalent = .other,
5585 .pd1 = true,
5586 .pd2 = false,
5587 .psl = true,
5588},
5589.{
5590 .name = "F",
5591 .syntax = .joined_or_separate,
5592 .zig_equivalent = .other,
5593 .pd1 = true,
5594 .pd2 = false,
5595 .psl = true,
5596},
5597.{
5598 .name = "I",
5599 .syntax = .joined_or_separate,
5600 .zig_equivalent = .other,
5601 .pd1 = true,
5602 .pd2 = false,
5603 .psl = true,
5604},
5605.{
5606 .name = "O",
5607 .syntax = .joined,
5608 .zig_equivalent = .other,
5609 .pd1 = true,
5610 .pd2 = false,
5611 .psl = true,
5612},
5613.{
5614 .name = "U",
5615 .syntax = .joined_or_separate,
5616 .zig_equivalent = .other,
5617 .pd1 = true,
5618 .pd2 = false,
5619 .psl = true,
5620},
5621.{
5622 .name = "o",
5623 .syntax = .joined_or_separate,
5624 .zig_equivalent = .o,
5625 .pd1 = true,
5626 .pd2 = false,
5627 .psl = true,
5628},
5629.{
5630 .name = "w",
5631 .syntax = .joined,
5632 .zig_equivalent = .other,
5633 .pd1 = true,
5634 .pd2 = false,
5635 .psl = true,
5636},
5637joinpd1("a"),
5638jspd1("b"),
5639joinpd1("d"),
5640jspd1("e"),
5641.{
5642 .name = "l",
5643 .syntax = .joined_or_separate,
5644 .zig_equivalent = .l,
5645 .pd1 = true,
5646 .pd2 = false,
5647 .psl = false,
5648},
5649.{
5650 .name = "o",
5651 .syntax = .joined_or_separate,
5652 .zig_equivalent = .o,
5653 .pd1 = true,
5654 .pd2 = false,
5655 .psl = false,
5656},
5657jspd1("u"),
5658jspd1("x"),
5659joinpd1("y"),
56325660};};
src-self-hosted/stage2.zig+10-1
......@@ -1239,6 +1239,14 @@ pub const ClangArgIterator = extern struct {
12391239 other,
12401240 positional,
12411241 l,
1242 ignore,
1243 passthrough,
1244 pic,
1245 no_pic,
1246 nostdlib,
1247 shared,
1248 rdynamic,
1249 wl,
12421250 };
12431251
12441252 fn init(argv: []const [*:0]const u8) ClangArgIterator {
......@@ -1282,7 +1290,8 @@ pub const ClangArgIterator = extern struct {
12821290 break :find_clang_arg;
12831291 },
12841292 .joined, .comma_joined => {
1285 // Example: --target=foo
1293 // joined example: --target=foo
1294 // comma_joined example: -Wl,-soname,libsoundio.so.2
12861295 const prefix_len = clang_arg.matchStartsWith(arg);
12871296 if (prefix_len != 0) {
12881297 self.zig_equivalent = clang_arg.zig_equivalent;
src/main.cpp+140-9
......@@ -430,6 +430,7 @@ static int main0(int argc, char **argv) {
430430 bool enable_dump_analysis = false;
431431 bool enable_doc_generation = false;
432432 bool emit_bin = true;
433 const char *emit_bin_override_path = nullptr;
433434 bool emit_asm = false;
434435 bool emit_llvm_ir = false;
435436 bool emit_h = false;
......@@ -451,6 +452,7 @@ static int main0(int argc, char **argv) {
451452 bool function_sections = false;
452453 const char *mcpu = nullptr;
453454 CodeModel code_model = CodeModelDefault;
455 const char *override_soname = nullptr;
454456
455457 ZigList<const char *> llvm_argv = {0};
456458 llvm_argv.append("zig (LLVM option parsing)");
......@@ -576,10 +578,14 @@ static int main0(int argc, char **argv) {
576578 } else if (argc >= 2 && strcmp(argv[1], "fmt") == 0) {
577579 return stage2_fmt(argc, argv);
578580 } else if (argc >= 2 && strcmp(argv[1], "cc") == 0) {
579 const char *o_arg = nullptr;
581 emit_h = false;
582
580583 bool c_arg = false;
581584 Stage2ClangArgIterator it;
582585 stage2_clang_arg_iterator(&it, argc, argv);
586 bool nostdlib = false;
587 bool is_shared_lib = false;
588 ZigList<Buf *> linker_args = {};
583589 while (it.has_next) {
584590 if ((err = stage2_clang_arg_next(&it))) {
585591 fprintf(stderr, "unable to parse command line parameters: %s\n", err_str(err));
......@@ -590,7 +596,8 @@ static int main0(int argc, char **argv) {
590596 target_string = it.only_arg;
591597 break;
592598 case Stage2ClangArgO: // -o
593 o_arg = it.only_arg;
599 emit_bin_override_path = it.only_arg;
600 enable_cache = CacheOptOn;
594601 break;
595602 case Stage2ClangArgC: // -c
596603 c_arg = true;
......@@ -601,9 +608,17 @@ static int main0(int argc, char **argv) {
601608 }
602609 break;
603610 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);
611 Buf *arg_buf = buf_create_from_str(it.only_arg);
612 if (buf_ends_with_str(arg_buf, ".c") ||
613 buf_ends_with_str(arg_buf, ".cpp") ||
614 buf_ends_with_str(arg_buf, ".s"))
615 {
616 CFile *c_file = heap::c_allocator.create<CFile>();
617 c_file->source_path = it.only_arg;
618 c_source_files.append(c_file);
619 } else {
620 objects.append(it.only_arg);
621 }
607622 break;
608623 }
609624 case Stage2ClangArgL: // -l
......@@ -611,18 +626,111 @@ static int main0(int argc, char **argv) {
611626 have_libc = true;
612627 link_libs.append(it.only_arg);
613628 break;
629 case Stage2ClangArgIgnore:
630 break;
631 case Stage2ClangArgPassthrough:
632 // Never mind what we're doing, just pass the args directly. For example --help.
633 return ZigClang_main(argc, argv);
634 case Stage2ClangArgPIC:
635 want_pic = WantPICEnabled;
636 break;
637 case Stage2ClangArgNoPIC:
638 want_pic = WantPICDisabled;
639 break;
640 case Stage2ClangArgNoStdLib:
641 nostdlib = true;
642 break;
643 case Stage2ClangArgShared:
644 is_dynamic = true;
645 is_shared_lib = true;
646 break;
647 case Stage2ClangArgRDynamic:
648 rdynamic = true;
649 break;
650 case Stage2ClangArgWL: {
651 const char *arg = it.only_arg;
652 for (;;) {
653 size_t pos = 0;
654 while (arg[pos] != ',' && arg[pos] != 0) pos += 1;
655 linker_args.append(buf_create_from_mem(arg, pos));
656 if (arg[pos] == 0) break;
657 arg += pos + 1;
658 }
659 break;
660 }
661 }
662 }
663 // Parse linker args
664 for (size_t i = 0; i < linker_args.length; i += 1) {
665 Buf *arg = linker_args.at(i);
666 if (buf_eql_str(arg, "-soname")) {
667 i += 1;
668 if (i >= linker_args.length) {
669 fprintf(stderr, "expected linker arg after '%s'\n", buf_ptr(arg));
670 return EXIT_FAILURE;
671 }
672 Buf *soname_buf = linker_args.at(i);
673 override_soname = buf_ptr(soname_buf);
674 // use it as --name
675 // example: libsoundio.so.2
676 size_t prefix = 0;
677 if (buf_starts_with_str(soname_buf, "lib")) {
678 prefix = 3;
679 }
680 size_t end = buf_len(soname_buf);
681 if (buf_ends_with_str(soname_buf, ".so")) {
682 end -= 3;
683 } else {
684 bool found_digit = false;
685 while (end > 0 && isdigit(buf_ptr(soname_buf)[end - 1])) {
686 found_digit = true;
687 end -= 1;
688 }
689 if (found_digit && end > 0 && buf_ptr(soname_buf)[end - 1] == '.') {
690 end -= 1;
691 } else {
692 end = buf_len(soname_buf);
693 }
694 if (buf_ends_with_str(buf_slice(soname_buf, prefix, end), ".so")) {
695 end -= 3;
696 }
697 }
698 out_name = buf_ptr(buf_slice(soname_buf, prefix, end));
699 } else if (buf_eql_str(arg, "-rpath")) {
700 i += 1;
701 if (i >= linker_args.length) {
702 fprintf(stderr, "expected linker arg after '%s'\n", buf_ptr(arg));
703 return EXIT_FAILURE;
704 }
705 Buf *rpath = linker_args.at(i);
706 rpath_list.append(buf_ptr(rpath));
707 } else {
708 fprintf(stderr, "warning: unsupported linker arg: %s\n", buf_ptr(arg));
614709 }
615710 }
711
712 if (!nostdlib && !have_libc) {
713 have_libc = true;
714 link_libs.append("c");
715 }
616716 if (!c_arg) {
617717 cmd = CmdBuild;
618 out_type = OutTypeExe;
619 if (o_arg == nullptr) {
620 zig_panic("TODO set out name to a.out");
718 if (is_shared_lib) {
719 out_type = OutTypeLib;
720 } else {
721 out_type = OutTypeExe;
722 }
723 if (emit_bin_override_path == nullptr) {
724 emit_bin_override_path = "a.out";
621725 }
622726 } else {
623727 cmd = CmdBuild;
624728 out_type = OutTypeObj;
625729 }
730 if (c_source_files.length == 0 && objects.length == 0) {
731 // For example `zig cc` and no args should print the "no input files" message.
732 return ZigClang_main(argc, argv);
733 }
626734 } else for (int i = 1; i < argc; i += 1) {
627735 char *arg = argv[i];
628736
......@@ -1184,6 +1292,18 @@ static int main0(int argc, char **argv) {
11841292 buf_out_name = buf_alloc();
11851293 os_path_extname(&basename, buf_out_name, nullptr);
11861294 }
1295 if (need_name && buf_out_name == nullptr && objects.length == 1) {
1296 Buf basename = BUF_INIT;
1297 os_path_split(buf_create_from_str(objects.at(0)), nullptr, &basename);
1298 buf_out_name = buf_alloc();
1299 os_path_extname(&basename, buf_out_name, nullptr);
1300 }
1301 if (need_name && buf_out_name == nullptr && emit_bin_override_path != nullptr) {
1302 Buf basename = BUF_INIT;
1303 os_path_split(buf_create_from_str(emit_bin_override_path), nullptr, &basename);
1304 buf_out_name = buf_alloc();
1305 os_path_extname(&basename, buf_out_name, nullptr);
1306 }
11871307
11881308 if (need_name && buf_out_name == nullptr) {
11891309 fprintf(stderr, "--name [name] not provided and unable to infer\n\n");
......@@ -1259,6 +1379,10 @@ static int main0(int argc, char **argv) {
12591379 g->function_sections = function_sections;
12601380 g->code_model = code_model;
12611381
1382 if (override_soname) {
1383 g->override_soname = buf_create_from_str(override_soname);
1384 }
1385
12621386 for (size_t i = 0; i < lib_dirs.length; i += 1) {
12631387 codegen_add_lib_dir(g, lib_dirs.at(i));
12641388 }
......@@ -1337,7 +1461,14 @@ static int main0(int argc, char **argv) {
13371461 os_spawn_process(args, &term);
13381462 return term.code;
13391463 } else if (cmd == CmdBuild) {
1340 if (g->enable_cache) {
1464 if (emit_bin_override_path != nullptr) {
1465 Buf *dest_path = buf_create_from_str(emit_bin_override_path);
1466 if ((err = os_update_file(&g->bin_file_output_path, dest_path))) {
1467 fprintf(stderr, "unable to copy %s to %s: %s\n", buf_ptr(&g->bin_file_output_path),
1468 buf_ptr(dest_path), err_str(err));
1469 return main_exit(root_progress_node, EXIT_FAILURE);
1470 }
1471 } else if (g->enable_cache) {
13411472#if defined(ZIG_OS_WINDOWS)
13421473 buf_replace(&g->bin_file_output_path, '/', '\\');
13431474 buf_replace(g->output_dir, '/', '\\');
src/stage2.h+8
......@@ -325,6 +325,14 @@ enum Stage2ClangArg {
325325 Stage2ClangArgOther,
326326 Stage2ClangArgPositional,
327327 Stage2ClangArgL,
328 Stage2ClangArgIgnore,
329 Stage2ClangArgPassthrough,
330 Stage2ClangArgPIC,
331 Stage2ClangArgNoPIC,
332 Stage2ClangArgNoStdLib,
333 Stage2ClangArgShared,
334 Stage2ClangArgRDynamic,
335 Stage2ClangArgWL,
328336};
329337
330338// ABI warning
tools/update_clang_options.zig+187-73
......@@ -38,6 +38,42 @@ const known_options = [_]KnownOpt{
3838 .name = "l",
3939 .ident = "l",
4040 },
41 .{
42 .name = "pipe",
43 .ident = "ignore",
44 },
45 .{
46 .name = "help",
47 .ident = "passthrough",
48 },
49 .{
50 .name = "fPIC",
51 .ident = "pic",
52 },
53 .{
54 .name = "fno-PIC",
55 .ident = "no_pic",
56 },
57 .{
58 .name = "nostdlib",
59 .ident = "nostdlib",
60 },
61 .{
62 .name = "no-standard-libraries",
63 .ident = "nostdlib",
64 },
65 .{
66 .name = "shared",
67 .ident = "shared",
68 },
69 .{
70 .name = "rdynamic",
71 .ident = "rdynamic",
72 },
73 .{
74 .name = "Wl,",
75 .ident = "wl",
76 },
4177};
4278
4379const blacklisted_options = [_][]const u8{};
......@@ -110,7 +146,7 @@ pub fn main() anyerror!void {
110146 const tree = try parser.parse(json_text);
111147 const root_map = &tree.root.Object;
112148
113 var all_names = std.ArrayList([]const u8).init(allocator);
149 var all_objects = std.ArrayList(*json.ObjectMap).init(allocator);
114150 {
115151 var it = root_map.iterator();
116152 it_map: while (it.next()) |kv| {
......@@ -123,10 +159,12 @@ pub fn main() anyerror!void {
123159 if (std.mem.eql(u8, blacklisted_key, kv.key)) continue :it_map;
124160 }
125161 if (kv.value.Object.get("Name").?.value.String.len == 0) continue;
126 try all_names.append(kv.key);
162 try all_objects.append(&kv.value.Object);
127163 }
128164 }
129 std.sort.sort([]const u8, all_names.span(), nameLessThan);
165 // Some options have multiple matches. As an example, "-Wl,foo" matches both
166 // "W" and "Wl,". So we sort this list in order of descending priority.
167 std.sort.sort(*json.ObjectMap, all_objects.span(), objectLessThan);
130168
131169 var stdout_bos = std.io.bufferedOutStream(std.io.getStdOut().outStream());
132170 const stdout = stdout_bos.outStream();
......@@ -138,8 +176,7 @@ pub fn main() anyerror!void {
138176 \\
139177 );
140178
141 for (all_names.span()) |key| {
142 const obj = &root_map.get(key).?.value.Object;
179 for (all_objects.span()) |obj| {
143180 const name = obj.get("Name").?.value.String;
144181 var pd1 = false;
145182 var pd2 = false;
......@@ -153,61 +190,12 @@ pub fn main() anyerror!void {
153190 } else if (std.mem.eql(u8, prefix, "/")) {
154191 pslash = true;
155192 } else {
156 std.debug.warn("{} (key {}) has unrecognized prefix '{}'\n", .{ name, key, prefix });
193 std.debug.warn("{} has unrecognized prefix '{}'\n", .{ name, prefix });
157194 std.process.exit(1);
158195 }
159196 }
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 };
197 const syntax = objSyntax(obj);
198
211199 if (knownOption(name)) |ident| {
212200 try stdout.print(
213201 \\.{{
......@@ -219,22 +207,14 @@ pub fn main() anyerror!void {
219207 \\ .psl = {},
220208 \\}},
221209 \\
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 {
210 , .{ name, syntax, ident, pd1, pd2, pslash });
211 } else if (pd1 and !pd2 and !pslash and syntax == .flag) {
226212 try stdout.print("flagpd1(\"{}\"),\n", .{name});
227 } else if (pd1 and !pd2 and !pslash and
228 std.mem.eql(u8, syntax_str, ".joined"))
229 {
213 } else if (pd1 and !pd2 and !pslash and syntax == .joined) {
230214 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 {
215 } else if (pd1 and !pd2 and !pslash and syntax == .joined_or_separate) {
234216 try stdout.print("jspd1(\"{}\"),\n", .{name});
235 } else if (pd1 and !pd2 and !pslash and
236 std.mem.eql(u8, syntax_str, ".separate"))
237 {
217 } else if (pd1 and !pd2 and !pslash and syntax == .separate) {
238218 try stdout.print("sepd1(\"{}\"),\n", .{name});
239219 } else {
240220 try stdout.print(
......@@ -247,7 +227,7 @@ pub fn main() anyerror!void {
247227 \\ .psl = {},
248228 \\}},
249229 \\
250 , .{ name, syntax_str, pd1, pd2, pslash });
230 , .{ name, syntax, pd1, pd2, pslash });
251231 }
252232 }
253233
......@@ -259,8 +239,142 @@ pub fn main() anyerror!void {
259239 try stdout_bos.flush();
260240}
261241
262fn nameLessThan(a: []const u8, b: []const u8) bool {
263 return std.mem.lessThan(u8, a, b);
242// TODO we should be able to import clang_options.zig but currently this is problematic because it will
243// import stage2.zig and that causes a bunch of stuff to get exported
244const Syntax = union(enum) {
245 /// A flag with no values.
246 flag,
247
248 /// An option which prefixes its (single) value.
249 joined,
250
251 /// An option which is followed by its value.
252 separate,
253
254 /// An option which is either joined to its (non-empty) value, or followed by its value.
255 joined_or_separate,
256
257 /// An option which is both joined to its (first) value, and followed by its (second) value.
258 joined_and_separate,
259
260 /// An option followed by its values, which are separated by commas.
261 comma_joined,
262
263 /// An option which consumes an optional joined argument and any other remaining arguments.
264 remaining_args_joined,
265
266 /// An option which is which takes multiple (separate) arguments.
267 multi_arg: u8,
268
269 pub fn format(
270 self: Syntax,
271 comptime fmt: []const u8,
272 options: std.fmt.FormatOptions,
273 out_stream: var,
274 ) !void {
275 switch (self) {
276 .multi_arg => |n| return out_stream.print(".{{.{}={}}}", .{ @tagName(self), n }),
277 else => return out_stream.print(".{}", .{@tagName(self)}),
278 }
279 }
280};
281
282fn objSyntax(obj: *json.ObjectMap) Syntax {
283 const num_args = @intCast(u8, obj.get("NumArgs").?.value.Integer);
284 for (obj.get("!superclasses").?.value.Array.span()) |superclass_json| {
285 const superclass = superclass_json.String;
286 if (std.mem.eql(u8, superclass, "Joined")) {
287 return .joined;
288 } else if (std.mem.eql(u8, superclass, "CLJoined")) {
289 return .joined;
290 } else if (std.mem.eql(u8, superclass, "CLIgnoredJoined")) {
291 return .joined;
292 } else if (std.mem.eql(u8, superclass, "CLCompileJoined")) {
293 return .joined;
294 } else if (std.mem.eql(u8, superclass, "JoinedOrSeparate")) {
295 return .joined_or_separate;
296 } else if (std.mem.eql(u8, superclass, "CLJoinedOrSeparate")) {
297 return .joined_or_separate;
298 } else if (std.mem.eql(u8, superclass, "CLCompileJoinedOrSeparate")) {
299 return .joined_or_separate;
300 } else if (std.mem.eql(u8, superclass, "Flag")) {
301 return .flag;
302 } else if (std.mem.eql(u8, superclass, "CLFlag")) {
303 return .flag;
304 } else if (std.mem.eql(u8, superclass, "CLIgnoredFlag")) {
305 return .flag;
306 } else if (std.mem.eql(u8, superclass, "Separate")) {
307 return .separate;
308 } else if (std.mem.eql(u8, superclass, "JoinedAndSeparate")) {
309 return .joined_and_separate;
310 } else if (std.mem.eql(u8, superclass, "CommaJoined")) {
311 return .comma_joined;
312 } else if (std.mem.eql(u8, superclass, "CLRemainingArgsJoined")) {
313 return .remaining_args_joined;
314 } else if (std.mem.eql(u8, superclass, "MultiArg")) {
315 return .{ .multi_arg = num_args };
316 }
317 }
318 const name = obj.get("Name").?.value.String;
319 if (std.mem.eql(u8, name, "<input>")) {
320 return .flag;
321 } else if (std.mem.eql(u8, name, "<unknown>")) {
322 return .flag;
323 }
324 const kind_def = obj.get("Kind").?.value.Object.get("def").?.value.String;
325 if (std.mem.eql(u8, kind_def, "KIND_FLAG")) {
326 return .flag;
327 }
328 const key = obj.get("!name").?.value.String;
329 std.debug.warn("{} (key {}) has unrecognized superclasses:\n", .{ name, key });
330 for (obj.get("!superclasses").?.value.Array.span()) |superclass_json| {
331 std.debug.warn(" {}\n", .{superclass_json.String});
332 }
333 std.process.exit(1);
334}
335
336fn syntaxMatchesWithEql(syntax: Syntax) bool {
337 return switch (syntax) {
338 .flag,
339 .separate,
340 .multi_arg,
341 => true,
342
343 .joined,
344 .joined_or_separate,
345 .joined_and_separate,
346 .comma_joined,
347 .remaining_args_joined,
348 => false,
349 };
350}
351
352fn objectLessThan(a: *json.ObjectMap, b: *json.ObjectMap) bool {
353 // Priority is determined by exact matches first, followed by prefix matches in descending
354 // length, with key as a final tiebreaker.
355 const a_syntax = objSyntax(a);
356 const b_syntax = objSyntax(b);
357
358 const a_match_with_eql = syntaxMatchesWithEql(a_syntax);
359 const b_match_with_eql = syntaxMatchesWithEql(b_syntax);
360
361 if (a_match_with_eql and !b_match_with_eql) {
362 return true;
363 } else if (!a_match_with_eql and b_match_with_eql) {
364 return false;
365 }
366
367 if (!a_match_with_eql and !b_match_with_eql) {
368 const a_name = a.get("Name").?.value.String;
369 const b_name = b.get("Name").?.value.String;
370 if (a_name.len != b_name.len) {
371 return a_name.len > b_name.len;
372 }
373 }
374
375 const a_key = a.get("!name").?.value.String;
376 const b_key = b.get("!name").?.value.String;
377 return std.mem.lessThan(u8, a_key, b_key);
264378}
265379
266380fn usageAndExit(file: fs.File, arg0: []const u8, code: u8) noreturn {