From 0eee98edc1e505486a9ec51a331d3aa322fce9ee Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Sat, 21 Mar 2020 15:29:52 -0400 Subject: [PATCH] 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. --- src-self-hosted/clang_options.zig | 6 +- src-self-hosted/clang_options_data.zig | 2952 ++++++++++++------------ src-self-hosted/stage2.zig | 11 +- src/main.cpp | 149 +- src/stage2.h | 8 + tools/update_clang_options.zig | 260 ++- 6 files changed, 1838 insertions(+), 1548 deletions(-) diff --git a/src-self-hosted/clang_options.zig b/src-self-hosted/clang_options.zig index 9fa35b8f9..538f28170 100644 --- a/src-self-hosted/clang_options.zig +++ b/src-self-hosted/clang_options.zig @@ -20,7 +20,7 @@ pub const CliArg = struct { /// Prefixed by "/" psl: bool = false, - const Syntax = union(enum) { + pub const Syntax = union(enum) { /// A flag with no values. flag, @@ -46,7 +46,7 @@ pub const CliArg = struct { multi_arg: u8, }; - fn matchEql(self: CliArg, arg: []const u8) bool { + pub fn matchEql(self: CliArg, arg: []const u8) bool { if (self.pd1 and arg.len >= self.name.len + 1 and mem.startsWith(u8, arg, "-") and mem.eql(u8, arg[1..], self.name)) { @@ -65,7 +65,7 @@ pub const CliArg = struct { return false; } - fn matchStartsWith(self: CliArg, arg: []const u8) usize { + pub fn matchStartsWith(self: CliArg, arg: []const u8) usize { if (self.pd1 and arg.len >= self.name.len + 1 and mem.startsWith(u8, arg, "-") and mem.startsWith(u8, arg[1..], self.name)) { diff --git a/src-self-hosted/clang_options_data.zig b/src-self-hosted/clang_options_data.zig index a88f3583c..a21069f93 100644 --- a/src-self-hosted/clang_options_data.zig +++ b/src-self-hosted/clang_options_data.zig @@ -2,21 +2,13 @@ // zig fmt: off usingnamespace @import("clang_options.zig"); pub const data = blk: { @setEvalBranchQuota(6000); break :blk &[_]CliArg{ -jspd1("A"), -joinpd1("A-"), -jspd1("B"), flagpd1("C"), flagpd1("CC"), -jspd1("D"), flagpd1("E"), flagpd1("EB"), flagpd1("EL"), flagpd1("Eonly"), -jspd1("F"), -jspd1("G"), -joinpd1("G="), flagpd1("H"), -jspd1("I"), .{ .name = "", .syntax = .flag, @@ -26,42 +18,25 @@ jspd1("I"), .psl = false, }, flagpd1("I-"), -jspd1("J"), -jspd1("L"), flagpd1("M"), flagpd1("MD"), -jspd1("MF"), flagpd1("MG"), -jspd1("MJ"), flagpd1("MM"), flagpd1("MMD"), flagpd1("MP"), -jspd1("MQ"), -jspd1("MT"), flagpd1("MV"), flagpd1("Mach"), -joinpd1("O"), flagpd1("O0"), flagpd1("O4"), flagpd1("O"), flagpd1("ObjC"), flagpd1("ObjC++"), -joinpd1("Ofast"), flagpd1("P"), flagpd1("Q"), flagpd1("Qn"), flagpd1("Qunused-arguments"), flagpd1("Qy"), -joinpd1("R"), -joinpd1("Rpass="), -joinpd1("Rpass-analysis="), -joinpd1("Rpass-missed="), flagpd1("S"), -jspd1("T"), -jspd1("Tbss"), -jspd1("Tdata"), -jspd1("Ttext"), -jspd1("U"), .{ .name = "", .syntax = .flag, @@ -70,74 +45,24 @@ jspd1("U"), .pd2 = false, .psl = false, }, -jspd1("V"), flagpd1("WCL4"), -joinpd1("W"), -.{ - .name = "Wa,", - .syntax = .comma_joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = false, -}, flagpd1("Wall"), flagpd1("Wdeprecated"), -joinpd1("Wframe-larger-than="), -.{ - .name = "Wl,", - .syntax = .comma_joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = false, -}, -joinpd1("Wlarge-by-value-copy="), flagpd1("Wlarge-by-value-copy"), -joinpd1("Wlarger-than-"), -joinpd1("Wlarger-than="), flagpd1("Wno-deprecated"), -joinpd1("Wno-nonportable-cfstrings"), flagpd1("Wno-rewrite-macros"), flagpd1("Wno-write-strings"), -joinpd1("Wnonportable-cfstrings"), -.{ - .name = "Wp,", - .syntax = .comma_joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = false, -}, flagpd1("Wwrite-strings"), flagpd1("X"), -joinpd1("X"), sepd1("Xanalyzer"), -.{ - .name = "Xarch_", - .syntax = .joined_and_separate, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = false, -}, sepd1("Xassembler"), sepd1("Xclang"), sepd1("Xcuda-fatbinary"), sepd1("Xcuda-ptxas"), sepd1("Xlinker"), sepd1("Xopenmp-target"), -.{ - .name = "Xopenmp-target=", - .syntax = .joined_and_separate, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = false, -}, sepd1("Xpreprocessor"), flagpd1("Z"), -joinpd1("Z"), flagpd1("Z-Xlinker-no-demangle"), flagpd1("Z-reserved-lib-cckext"), flagpd1("Z-reserved-lib-stdc++"), @@ -150,23 +75,7 @@ sepd1("Zlinker-input"), .pd2 = true, .psl = false, }, -.{ - .name = "CLASSPATH=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, flagpd1("###"), -.{ - .name = "AI", - .syntax = .joined_or_separate, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "Brepro", .syntax = .flag, @@ -207,14 +116,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "D", - .syntax = .joined_or_separate, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "E", .syntax = .flag, @@ -223,14 +124,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "EH", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "EP", .syntax = .flag, @@ -239,14 +132,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "F", - .syntax = .joined_or_separate, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "FA", .syntax = .flag, @@ -255,14 +140,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "FA", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "FC", .syntax = .flag, @@ -271,22 +148,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "FI", - .syntax = .joined_or_separate, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, -.{ - .name = "FR", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "FS", .syntax = .flag, @@ -295,78 +156,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "FU", - .syntax = .joined_or_separate, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, -.{ - .name = "Fa", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, -.{ - .name = "Fd", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, -.{ - .name = "Fe", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, -.{ - .name = "Fi", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, -.{ - .name = "Fm", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, -.{ - .name = "Fo", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, -.{ - .name = "Fp", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, -.{ - .name = "Fr", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "Fx", .syntax = .flag, @@ -559,14 +348,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "Gs", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "Gv", .syntax = .flag, @@ -631,14 +412,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "I", - .syntax = .joined_or_separate, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "J", .syntax = .flag, @@ -695,14 +468,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "MP", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "MT", .syntax = .flag, @@ -719,14 +484,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "O", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "P", .syntax = .flag, @@ -775,14 +532,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "Qpar-report", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "Qsafe_fp_loads", .syntax = .flag, @@ -815,22 +564,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "Qvec-report", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, -.{ - .name = "RTC", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "TC", .syntax = .flag, @@ -847,30 +580,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "Tc", - .syntax = .joined_or_separate, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, -.{ - .name = "Tp", - .syntax = .joined_or_separate, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, -.{ - .name = "U", - .syntax = .joined_or_separate, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "V", .syntax = .flag, @@ -975,14 +684,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "Yc", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "Yd", .syntax = .flag, @@ -991,22 +692,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "Yl", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, -.{ - .name = "Yu", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "Z7", .syntax = .flag, @@ -1047,14 +732,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "ZW", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "Za", .syntax = .flag, @@ -1063,14 +740,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "Zc:", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "Zc:__cplusplus", .syntax = .flag, @@ -1287,14 +956,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "Zm", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "Zo", .syntax = .flag, @@ -1311,14 +972,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "Zp", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "Zp", .syntax = .flag, @@ -1343,14 +996,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "arch:", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "await", .syntax = .flag, @@ -1375,38 +1020,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "cgthreads", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, -.{ - .name = "clang:", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, -.{ - .name = "clr", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, -.{ - .name = "constexpr:", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "d1PP", .syntax = .flag, @@ -1423,14 +1036,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "d2", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "d2FastFail", .syntax = .flag, @@ -1471,30 +1076,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "doc", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, -.{ - .name = "errorReport", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, -.{ - .name = "execution-charset:", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "fallback", .syntax = .flag, @@ -1503,14 +1084,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "favor", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "fp:except", .syntax = .flag, @@ -1551,18 +1124,10 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "guard:", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "help", .syntax = .flag, - .zig_equivalent = .other, + .zig_equivalent = .passthrough, .pd1 = true, .pd2 = false, .psl = true, @@ -1583,14 +1148,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "imsvc", - .syntax = .joined_or_separate, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "kernel", .syntax = .flag, @@ -1607,14 +1164,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "link", - .syntax = .remaining_args_joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "nologo", .syntax = .flag, @@ -1623,14 +1172,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "o", - .syntax = .joined_or_separate, - .zig_equivalent = .o, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "openmp", .syntax = .flag, @@ -1703,22 +1244,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "source-charset:", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, -.{ - .name = "std:", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "u", .syntax = .flag, @@ -1751,14 +1276,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "vd", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "vmb", .syntax = .flag, @@ -1815,14 +1332,6 @@ flagpd1("###"), .pd2 = false, .psl = true, }, -.{ - .name = "w", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = true, -}, .{ .name = "w", .syntax = .flag, @@ -1895,14 +1404,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "analyzer-output", - .syntax = .joined_or_separate, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "assemble", .syntax = .flag, @@ -1919,14 +1420,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "assert=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "bootclasspath", .syntax = .separate, @@ -1935,14 +1428,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "bootclasspath=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "classpath", .syntax = .separate, @@ -1951,14 +1436,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "classpath=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "comments", .syntax = .flag, @@ -1999,14 +1476,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "debug=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "define-macro", .syntax = .separate, @@ -2015,14 +1484,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "define-macro=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "dependencies", .syntax = .flag, @@ -2039,14 +1500,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "dyld-prefix=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "encoding", .syntax = .separate, @@ -2055,14 +1508,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "encoding=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "entry", .syntax = .flag, @@ -2079,14 +1524,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "extdirs=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "extra-warnings", .syntax = .flag, @@ -2103,14 +1540,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "for-linker=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "force-link", .syntax = .separate, @@ -2119,14 +1548,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "force-link=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "help-hidden", .syntax = .flag, @@ -2135,22 +1556,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "imacros=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, -.{ - .name = "include=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "include-barrier", .syntax = .flag, @@ -2167,14 +1572,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "include-directory=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "include-directory-after", .syntax = .separate, @@ -2183,14 +1580,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "include-directory-after=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "include-prefix", .syntax = .separate, @@ -2199,14 +1588,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "include-prefix=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "include-with-prefix", .syntax = .separate, @@ -2215,14 +1596,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "include-with-prefix=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "include-with-prefix-after", .syntax = .separate, @@ -2231,14 +1604,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "include-with-prefix-after=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "include-with-prefix-before", .syntax = .separate, @@ -2247,14 +1612,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "include-with-prefix-before=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "language", .syntax = .separate, @@ -2263,14 +1620,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "language=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "library-directory", .syntax = .separate, @@ -2279,14 +1628,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "library-directory=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "mhwdiv", .syntax = .separate, @@ -2295,14 +1636,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "mhwdiv=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "migrate", .syntax = .flag, @@ -2330,7 +1663,7 @@ flagpd1("###"), .{ .name = "no-standard-libraries", .syntax = .flag, - .zig_equivalent = .other, + .zig_equivalent = .nostdlib, .pd1 = false, .pd2 = true, .psl = false, @@ -2359,14 +1692,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "optimize=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "output", .syntax = .separate, @@ -2375,14 +1700,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "output=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "output-class-directory", .syntax = .separate, @@ -2391,14 +1708,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "output-class-directory=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "param", .syntax = .separate, @@ -2407,14 +1716,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "param=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "precompile", .syntax = .flag, @@ -2431,14 +1732,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "prefix=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "preprocess", .syntax = .flag, @@ -2503,14 +1796,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "resource=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "rtlib", .syntax = .separate, @@ -2559,14 +1844,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "sysroot=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "target-help", .syntax = .flag, @@ -2591,14 +1868,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "undefine-macro=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "unsigned-char", .syntax = .flag, @@ -2631,22 +1900,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -.{ - .name = "warn-", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, -.{ - .name = "warn-=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "write-dependencies", .syntax = .flag, @@ -2663,7 +1916,6 @@ flagpd1("###"), .pd2 = true, .psl = false, }, -joinpd1("a"), sepd1("add-plugin"), flagpd1("faggressive-function-elimination"), flagpd1("fno-aggressive-function-elimination"), @@ -2684,9 +1936,7 @@ flagpd1("cfg-add-implicit-dtors"), flagpd1("unoptimized-cfg"), flagpd1("analyze"), sepd1("analyze-function"), -joinpd1("analyze-function="), sepd1("analyzer-checker"), -joinpd1("analyzer-checker="), flagpd1("analyzer-checker-help"), flagpd1("analyzer-checker-help-alpha"), flagpd1("analyzer-checker-help-developer"), @@ -2695,32 +1945,23 @@ flagpd1("analyzer-checker-option-help-alpha"), flagpd1("analyzer-checker-option-help-developer"), sepd1("analyzer-config"), sepd1("analyzer-config-compatibility-mode"), -joinpd1("analyzer-config-compatibility-mode="), flagpd1("analyzer-config-help"), sepd1("analyzer-constraints"), -joinpd1("analyzer-constraints="), flagpd1("analyzer-disable-all-checks"), sepd1("analyzer-disable-checker"), -joinpd1("analyzer-disable-checker="), flagpd1("analyzer-disable-retry-exhausted"), flagpd1("analyzer-display-progress"), sepd1("analyzer-dump-egraph"), -joinpd1("analyzer-dump-egraph="), sepd1("analyzer-inline-max-stack-depth"), -joinpd1("analyzer-inline-max-stack-depth="), sepd1("analyzer-inlining-mode"), -joinpd1("analyzer-inlining-mode="), flagpd1("analyzer-list-enabled-checkers"), sepd1("analyzer-max-loop"), flagpd1("analyzer-opt-analyze-headers"), flagpd1("analyzer-opt-analyze-nested-blocks"), sepd1("analyzer-output"), -joinpd1("analyzer-output="), sepd1("analyzer-purge"), -joinpd1("analyzer-purge="), flagpd1("analyzer-stats"), sepd1("analyzer-store"), -joinpd1("analyzer-store="), flagpd1("analyzer-viz-egraph-graphviz"), flagpd1("analyzer-werror"), flagpd1("fslp-vectorize-aggressive"), @@ -2735,7 +1976,6 @@ flagpd1("fhonor-infinites"), flagpd1("fno-honor-infinites"), flagpd1("findirect-virtual-calls"), sepd1("fnew-alignment"), -joinpd1("objcmt-white-list-dir-path="), flagpd1("faligned-new"), flagpd1("fno-aligned-new"), flagpd1("fsched-interblock"), @@ -2912,27 +2152,16 @@ flagpd1("arcmt-migrate-emit-errors"), sepd1("arcmt-migrate-report-output"), flagpd1("arcmt-modify"), flagpd1("ast-dump"), -joinpd1("ast-dump="), flagpd1("ast-dump-all"), -joinpd1("ast-dump-all="), sepd1("ast-dump-filter"), flagpd1("ast-dump-lookups"), flagpd1("ast-list"), sepd1("ast-merge"), flagpd1("ast-print"), flagpd1("ast-view"), -.{ - .name = "autocomplete=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, flagpd1("fautomatic"), flagpd1("fno-automatic"), sepd1("aux-triple"), -jspd1("b"), flagpd1("fbackslash"), flagpd1("fno-backslash"), flagpd1("fbacktrace"), @@ -2953,12 +2182,10 @@ sepd1("bundle_loader"), .pd2 = false, .psl = false, }, -jspd1("c-isystem"), flagpd1("fcaller-saves"), flagpd1("fno-caller-saves"), flagpd1("cc1"), flagpd1("cc1as"), -joinpd1("ccc-"), flagpd1("ccc-arcmt-check"), sepd1("ccc-arcmt-migrate"), flagpd1("ccc-arcmt-modify"), @@ -2973,14 +2200,6 @@ sepd1("chain-include"), flagpd1("fcheck-array-temporaries"), flagpd1("fno-check-array-temporaries"), flagpd1("cl-denorms-are-zero"), -.{ - .name = "cl-ext=", - .syntax = .comma_joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = false, -}, flagpd1("cl-fast-relaxed-math"), flagpd1("cl-finite-math-only"), flagpd1("cl-fp32-correctly-rounded-divide-sqrt"), @@ -2989,13 +2208,10 @@ flagpd1("cl-mad-enable"), flagpd1("cl-no-signed-zeros"), flagpd1("cl-opt-disable"), flagpd1("cl-single-precision-constant"), -joinpd1("cl-std="), flagpd1("cl-strict-aliasing"), flagpd1("cl-uniform-work-group-size"), flagpd1("cl-unsafe-math-optimizations"), -jspd1("client_name"), sepd1("code-completion-at"), -joinpd1("code-completion-at="), flagpd1("code-completion-brief-comments"), flagpd1("code-completion-macros"), flagpd1("code-completion-patterns"), @@ -3008,7 +2224,6 @@ flagpd1("code-completion-with-fixits"), .pd2 = true, .psl = false, }, -jspd1("compatibility_version"), flagpd1("compiler-options-dump"), .{ .name = "compress-debug-sections", @@ -3018,14 +2233,6 @@ flagpd1("compiler-options-dump"), .pd2 = true, .psl = false, }, -.{ - .name = "compress-debug-sections=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = true, - .psl = false, -}, .{ .name = "config", .syntax = .separate, @@ -3034,22 +2241,6 @@ flagpd1("compiler-options-dump"), .pd2 = true, .psl = false, }, -.{ - .name = "config-system-dir=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, -.{ - .name = "config-user-dir=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "coverage", .syntax = .flag, @@ -3060,12 +2251,9 @@ flagpd1("compiler-options-dump"), }, flagpd1("coverage-cfg-checksum"), sepd1("coverage-data-file"), -joinpd1("coverage-data-file="), flagpd1("coverage-exit-block-before-body"), flagpd1("coverage-no-function-names-in-data"), sepd1("coverage-notes-file"), -joinpd1("coverage-notes-file="), -joinpd1("coverage-version="), flagpd1("cpp"), flagpd1("cpp-precomp"), flagpd1("fcray-pointer"), @@ -3086,14 +2274,6 @@ flagpd1("fno-cray-pointer"), .pd2 = true, .psl = false, }, -.{ - .name = "cuda-gpu-arch=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "cuda-host-only", .syntax = .flag, @@ -3102,14 +2282,6 @@ flagpd1("fno-cray-pointer"), .pd2 = true, .psl = false, }, -.{ - .name = "cuda-include-ptx=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "cuda-noopt-device-debug", .syntax = .flag, @@ -3118,14 +2290,6 @@ flagpd1("fno-cray-pointer"), .pd2 = true, .psl = false, }, -.{ - .name = "cuda-path=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "cuda-path-ignore-env", .syntax = .flag, @@ -3134,23 +2298,18 @@ flagpd1("fno-cray-pointer"), .pd2 = true, .psl = false, }, -jspd1("current_version"), -jspd1("cxx-isystem"), flagpd1("dA"), flagpd1("dD"), flagpd1("dI"), flagpd1("dM"), flagpd1("d"), -joinpd1("d"), flagpd1("fd-lines-as-code"), flagpd1("fno-d-lines-as-code"), flagpd1("fd-lines-as-comments"), flagpd1("fno-d-lines-as-comments"), flagpd1("dead_strip"), flagpd1("debug-forward-template-params"), -joinpd1("debug-info-kind="), flagpd1("debug-info-macro"), -joinpd1("debugger-tuning="), flagpd1("fdefault-double-8"), flagpd1("fno-default-double-8"), sepd1("default-function-attr"), @@ -3163,14 +2322,6 @@ flagpd1("fno-default-real-8"), sepd1("defsym"), sepd1("dependency-dot"), sepd1("dependency-file"), -.{ - .name = "dependent-lib=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, flagpd1("detailed-preprocessing-record"), flagpd1("fdevirtualize"), flagpd1("fno-devirtualize"), @@ -3190,14 +2341,6 @@ flagpd1("disable-red-zone"), flagpd1("discard-value-names"), flagpd1("fdollar-ok"), flagpd1("fno-dollar-ok"), -.{ - .name = "driver-mode=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, flagpd1("dump-coverage-mapping"), flagpd1("dump-deserialized-decls"), flagpd1("fdump-fortran-optimized"), @@ -3216,13 +2359,10 @@ sepd1("dwarf-debug-flags"), sepd1("dwarf-debug-producer"), flagpd1("dwarf-explicit-import"), flagpd1("dwarf-ext-refs"), -joinpd1("dwarf-version="), sepd1("dylib_file"), flagpd1("dylinker"), -jspd1("dylinker_install_name"), flagpd1("dynamic"), flagpd1("dynamiclib"), -jspd1("e"), flagpd1("feliminate-unused-debug-types"), flagpd1("fno-eliminate-unused-debug-types"), flagpd1("emit-ast"), @@ -3241,24 +2381,24 @@ flagpd1("emit-obj"), flagpd1("emit-pch"), flagpd1("enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang"), sepd1("error-on-deserialized-decl"), -joinpd1("error-on-deserialized-decl="), sepd1("exported_symbols_list"), flagpd1("fexternal-blas"), flagpd1("fno-external-blas"), flagpd1("ff2c"), flagpd1("fno-f2c"), -flagpd1("fPIC"), +.{ + .name = "fPIC", + .syntax = .flag, + .zig_equivalent = .pic, + .pd1 = true, + .pd2 = false, + .psl = false, +}, flagpd1("fPIE"), flagpd1("faccess-control"), -joinpd1("faddress-space-map-mangling="), flagpd1("faddrsig"), flagpd1("falign-functions"), -joinpd1("falign-functions="), -joinpd1("falign-jumps="), -joinpd1("falign-labels="), -joinpd1("falign-loops="), flagpd1("faligned-allocation"), -joinpd1("faligned-new="), flagpd1("fallow-editor-placeholders"), flagpd1("fallow-half-arguments-and-returns"), flagpd1("fallow-pch-with-compiler-errors"), @@ -3281,18 +2421,12 @@ flagpd1("fasynchronous-unwind-tables"), flagpd1("ffat-lto-objects"), flagpd1("fno-fat-lto-objects"), flagpd1("fauto-profile"), -joinpd1("fauto-profile="), flagpd1("fauto-profile-accurate"), flagpd1("fautolink"), -joinpd1("fblas-matmul-limit="), flagpd1("fblocks"), flagpd1("fblocks-runtime-optional"), -joinpd1("fbootclasspath="), flagpd1("fborland-extensions"), sepd1("fbracket-depth"), -joinpd1("fbracket-depth="), -joinpd1("fbuild-session-file="), -joinpd1("fbuild-session-timestamp="), flagpd1("fbuiltin"), flagpd1("fbuiltin-module-map"), flagpd1("fcall-saved-x10"), @@ -3307,46 +2441,24 @@ flagpd1("fcall-saved-x9"), flagpd1("fcaret-diagnostics"), sepd1("fcaret-diagnostics-max-lines"), flagpd1("fcf-protection"), -joinpd1("fcf-protection="), -joinpd1("fcf-runtime-abi="), flagpd1("fchar8_t"), -joinpd1("fcheck="), flagpd1("fcheck-new"), flagpd1("fno-check-new"), -joinpd1("fclang-abi-compat="), -joinpd1("fclasspath="), -joinpd1("fcoarray="), flagpd1("fcolor-diagnostics"), -.{ - .name = "fcomment-block-commands=", - .syntax = .comma_joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = false, -}, flagpd1("fcommon"), -joinpd1("fcompile-resource="), flagpd1("fcomplete-member-pointers"), flagpd1("fconcepts-ts"), flagpd1("fconst-strings"), flagpd1("fconstant-cfstrings"), sepd1("fconstant-string-class"), -joinpd1("fconstant-string-class="), sepd1("fconstexpr-backtrace-limit"), -joinpd1("fconstexpr-backtrace-limit="), sepd1("fconstexpr-depth"), -joinpd1("fconstexpr-depth="), sepd1("fconstexpr-steps"), -joinpd1("fconstexpr-steps="), flagpd1("fconvergent-functions"), -joinpd1("fconvert="), flagpd1("fcoroutines-ts"), flagpd1("fcoverage-mapping"), -joinpd1("fcrash-diagnostics-dir="), flagpd1("fcreate-profile"), flagpd1("fcs-profile-generate"), -joinpd1("fcs-profile-generate="), flagpd1("fcuda-allow-variadic-functions"), flagpd1("fcuda-approx-transcendentals"), flagpd1("fcuda-flush-denormals-to-zero"), @@ -3358,14 +2470,11 @@ flagpd1("fcxx-modules"), flagpd1("fc++-static-destructors"), flagpd1("fdata-sections"), sepd1("fdebug-compilation-dir"), -joinpd1("fdebug-compilation-dir="), -joinpd1("fdebug-default-version="), flagpd1("fdebug-info-for-profiling"), flagpd1("fdebug-macro"), flagpd1("fdebug-pass-arguments"), flagpd1("fdebug-pass-manager"), flagpd1("fdebug-pass-structure"), -joinpd1("fdebug-prefix-map="), flagpd1("fdebug-ranges-base-address"), flagpd1("fdebug-types-section"), flagpd1("fdebugger-cast-result-to-id"), @@ -3373,25 +2482,17 @@ flagpd1("fdebugger-objc-literal"), flagpd1("fdebugger-support"), flagpd1("fdeclare-opencl-builtins"), flagpd1("fdeclspec"), -joinpd1("fdefault-calling-conv="), flagpd1("fdelayed-template-parsing"), flagpd1("fdelete-null-pointer-checks"), -joinpd1("fdenormal-fp-math="), -joinpd1("fdepfile-entry="), flagpd1("fdeprecated-macro"), flagpd1("fdiagnostics-absolute-paths"), flagpd1("fdiagnostics-color"), -joinpd1("fdiagnostics-color="), flagpd1("fdiagnostics-fixit-info"), sepd1("fdiagnostics-format"), -joinpd1("fdiagnostics-format="), -joinpd1("fdiagnostics-hotness-threshold="), flagpd1("fdiagnostics-parseable-fixits"), flagpd1("fdiagnostics-print-source-range-info"), sepd1("fdiagnostics-show-category"), -joinpd1("fdiagnostics-show-category="), flagpd1("fdiagnostics-show-hotness"), -joinpd1("fdiagnostics-show-location="), flagpd1("fdiagnostics-show-note-include-stack"), flagpd1("fdiagnostics-show-option"), flagpd1("fdiagnostics-show-template-tree"), @@ -3409,7 +2510,6 @@ flagpd1("fdwarf-exceptions"), flagpd1("felide-constructors"), flagpd1("feliminate-unused-debug-symbols"), flagpd1("fembed-bitcode"), -joinpd1("fembed-bitcode="), flagpd1("fembed-bitcode-marker"), flagpd1("femit-all-decls"), flagpd1("femit-coverage-data"), @@ -3417,24 +2517,17 @@ flagpd1("femit-coverage-notes"), flagpd1("femit-debug-entry-values"), flagpd1("femulated-tls"), flagpd1("fencode-extended-block-signature"), -joinpd1("fencoding="), sepd1("ferror-limit"), -joinpd1("ferror-limit="), flagpd1("fescaping-block-tail-calls"), flagpd1("fexceptions"), -joinpd1("fexcess-precision="), -joinpd1("fexec-charset="), flagpd1("fexperimental-isel"), flagpd1("fexperimental-new-constant-interpreter"), flagpd1("fexperimental-new-pass-manager"), -joinpd1("fextdirs="), flagpd1("fexternc-nounwind"), flagpd1("ffake-address-space-map"), flagpd1("ffast-math"), -joinpd1("ffile-prefix-map="), flagpd1("ffine-grained-bitfield-accesses"), flagpd1("ffinite-math-only"), -joinpd1("ffixed-line-length-"), flagpd1("ffixed-point"), flagpd1("ffixed-r19"), flagpd1("ffixed-r9"), @@ -3474,18 +2567,12 @@ flagpd1("fforbid-guard-variables"), flagpd1("fforce-dwarf-frame"), flagpd1("fforce-emit-vtables"), flagpd1("fforce-enable-int128"), -joinpd1("ffp-contract="), -joinpd1("ffp-exception-behavior="), -joinpd1("ffp-model="), -joinpd1("ffpe-trap="), -joinpd1("ffree-line-length-"), flagpd1("ffreestanding"), flagpd1("ffunction-sections"), flagpd1("fgnu89-inline"), flagpd1("fgnu-inline-asm"), flagpd1("fgnu-keywords"), flagpd1("fgnu-runtime"), -joinpd1("fgnuc-version="), flagpd1("fgpu-allow-device-init"), flagpd1("fgpu-rdc"), flagpd1("fheinous-gnu-extensions"), @@ -3499,17 +2586,11 @@ sepd1("filetype"), flagpd1("fimplicit-module-maps"), flagpd1("fimplicit-modules"), flagpd1("finclude-default-header"), -joinpd1("finit-character="), -joinpd1("finit-integer="), -joinpd1("finit-logical="), -joinpd1("finit-real="), flagpd1("finline"), flagpd1("finline-functions"), flagpd1("finline-hint-functions"), -joinpd1("finline-limit="), flagpd1("finline-limit"), flagpd1("fno-inline-limit"), -joinpd1("finput-charset="), flagpd1("finstrument-function-entry-bare"), flagpd1("finstrument-functions"), flagpd1("finstrument-functions-after-inlining"), @@ -3520,59 +2601,36 @@ flagpd1("fix-what-you-can"), flagpd1("ffixed-form"), flagpd1("fno-fixed-form"), flagpd1("fixit"), -joinpd1("fixit="), flagpd1("fixit-recompile"), flagpd1("fixit-to-temporary"), flagpd1("fjump-tables"), flagpd1("fkeep-static-consts"), flagpd1("flat_namespace"), flagpd1("flax-vector-conversions"), -joinpd1("flax-vector-conversions="), flagpd1("flimit-debug-info"), -joinpd1("flimited-precision="), flagpd1("ffloat-store"), flagpd1("fno-float-store"), flagpd1("flto"), -joinpd1("flto="), -joinpd1("flto-jobs="), flagpd1("flto-unit"), flagpd1("flto-visibility-public-std"), sepd1("fmacro-backtrace-limit"), -joinpd1("fmacro-backtrace-limit="), -joinpd1("fmacro-prefix-map="), flagpd1("fmath-errno"), -joinpd1("fmax-array-constructor="), -joinpd1("fmax-errors="), -joinpd1("fmax-stack-var-size="), -joinpd1("fmax-subrecord-length="), -joinpd1("fmax-type-align="), flagpd1("fmerge-all-constants"), flagpd1("fmerge-functions"), sepd1("fmessage-length"), -joinpd1("fmessage-length="), sepd1("fmodule-feature"), -joinpd1("fmodule-file="), flagpd1("fmodule-file-deps"), -joinpd1("fmodule-format="), sepd1("fmodule-implementation-of"), -joinpd1("fmodule-map-file="), flagpd1("fmodule-map-file-home-is-cwd"), flagpd1("fmodule-maps"), sepd1("fmodule-name"), -joinpd1("fmodule-name="), flagpd1("fmodules"), -joinpd1("fmodules-cache-path="), flagpd1("fmodules-codegen"), flagpd1("fmodules-debuginfo"), flagpd1("fmodules-decluse"), flagpd1("fmodules-disable-diagnostic-validation"), -joinpd1("fmodules-embed-all-files"), -joinpd1("fmodules-embed-file="), flagpd1("fmodules-hash-content"), -joinpd1("fmodules-ignore-macro="), flagpd1("fmodules-local-submodule-visibility"), -joinpd1("fmodules-prune-after="), -joinpd1("fmodules-prune-interval="), flagpd1("fmodules-search-all"), flagpd1("fmodules-strict-context-hash"), flagpd1("fmodules-strict-decluse"), @@ -3582,19 +2640,22 @@ flagpd1("fmodules-validate-input-files-content"), flagpd1("fmodules-validate-once-per-build-session"), flagpd1("fmodules-validate-system-headers"), flagpd1("fms-compatibility"), -joinpd1("fms-compatibility-version="), flagpd1("fms-extensions"), -joinpd1("fms-memptr-rep="), flagpd1("fms-volatile"), -joinpd1("fmsc-version="), flagpd1("fmudflap"), flagpd1("fmudflapth"), flagpd1("fnative-half-arguments-and-returns"), flagpd1("fnative-half-type"), flagpd1("fnested-functions"), -joinpd1("fnew-alignment="), flagpd1("fnext-runtime"), -flagpd1("fno-PIC"), +.{ + .name = "fno-PIC", + .syntax = .flag, + .zig_equivalent = .no_pic, + .pd1 = true, + .pd2 = false, + .psl = false, +}, flagpd1("fno-PIE"), flagpd1("fno-access-control"), flagpd1("fno-addrsig"), @@ -3616,7 +2677,6 @@ flagpd1("fno-bitfield-type-align"), flagpd1("fno-blocks"), flagpd1("fno-borland-extensions"), flagpd1("fno-builtin"), -joinpd1("fno-builtin-"), flagpd1("fno-caret-diagnostics"), flagpd1("fno-char8_t"), flagpd1("fno-color-diagnostics"), @@ -3755,54 +2815,22 @@ flagpd1("fno-rtlib-add-rpath"), flagpd1("fno-rtti"), flagpd1("fno-rtti-data"), flagpd1("fno-rwpi"), -.{ - .name = "fno-sanitize=", - .syntax = .comma_joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = false, -}, flagpd1("fno-sanitize-address-poison-custom-array-cookie"), flagpd1("fno-sanitize-address-use-after-scope"), flagpd1("fno-sanitize-address-use-odr-indicator"), flagpd1("fno-sanitize-blacklist"), flagpd1("fno-sanitize-cfi-canonical-jump-tables"), flagpd1("fno-sanitize-cfi-cross-dso"), -.{ - .name = "fno-sanitize-coverage=", - .syntax = .comma_joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = false, -}, flagpd1("fno-sanitize-link-c++-runtime"), flagpd1("fno-sanitize-link-runtime"), flagpd1("fno-sanitize-memory-track-origins"), flagpd1("fno-sanitize-memory-use-after-dtor"), flagpd1("fno-sanitize-minimal-runtime"), flagpd1("fno-sanitize-recover"), -.{ - .name = "fno-sanitize-recover=", - .syntax = .comma_joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = false, -}, flagpd1("fno-sanitize-stats"), flagpd1("fno-sanitize-thread-atomics"), flagpd1("fno-sanitize-thread-func-entry-exit"), flagpd1("fno-sanitize-thread-memory-access"), -.{ - .name = "fno-sanitize-trap=", - .syntax = .comma_joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = false, -}, flagpd1("fno-sanitize-undefined-trap-on-error"), flagpd1("fno-save-optimization-record"), flagpd1("fno-short-enums"), @@ -3858,14 +2886,11 @@ flagpd1("fno-xray-always-emit-customevents"), flagpd1("fno-xray-always-emit-typedevents"), flagpd1("fno-xray-instrument"), flagpd1("fnoxray-link-deps"), -joinpd1("fobjc-abi-version="), flagpd1("fobjc-arc"), -joinpd1("fobjc-arc-cxxlib="), flagpd1("fobjc-arc-exceptions"), flagpd1("fobjc-atdefs"), flagpd1("fobjc-call-cxx-cdtors"), flagpd1("fobjc-convert-messages-to-runtime-calls"), -joinpd1("fobjc-dispatch-method="), flagpd1("fobjc-exceptions"), flagpd1("fobjc-gc"), flagpd1("fobjc-gc-only"), @@ -3874,91 +2899,50 @@ flagpd1("fobjc-legacy-dispatch"), flagpd1("fobjc-link-runtime"), flagpd1("fobjc-new-property"), flagpd1("fobjc-nonfragile-abi"), -joinpd1("fobjc-nonfragile-abi-version="), -joinpd1("fobjc-runtime="), flagpd1("fobjc-runtime-has-weak"), flagpd1("fobjc-sender-dependent-dispatch"), flagpd1("fobjc-subscripting-legacy-runtime"), flagpd1("fobjc-weak"), flagpd1("fomit-frame-pointer"), flagpd1("fopenmp"), -joinpd1("fopenmp="), -joinpd1("fopenmp-cuda-blocks-per-sm="), flagpd1("fopenmp-cuda-force-full-runtime"), flagpd1("fopenmp-cuda-mode"), -joinpd1("fopenmp-cuda-number-of-sm="), -joinpd1("fopenmp-cuda-teams-reduction-recs-num="), flagpd1("fopenmp-enable-irbuilder"), sepd1("fopenmp-host-ir-file-path"), flagpd1("fopenmp-is-device"), flagpd1("fopenmp-optimistic-collapse"), flagpd1("fopenmp-relocatable-target"), flagpd1("fopenmp-simd"), -.{ - .name = "fopenmp-targets=", - .syntax = .comma_joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = false, -}, flagpd1("fopenmp-use-tls"), -joinpd1("fopenmp-version="), sepd1("foperator-arrow-depth"), -joinpd1("foperator-arrow-depth="), -joinpd1("foptimization-record-file="), -joinpd1("foptimization-record-passes="), flagpd1("foptimize-sibling-calls"), flagpd1("force_cpusubtype_ALL"), flagpd1("force_flat_namespace"), sepd1("force_load"), -joinpd1("fforce-addr"), flagpd1("forder-file-instrumentation"), -joinpd1("foutput-class-dir="), -joinpd1("foverride-record-layout="), flagpd1("fpack-struct"), -joinpd1("fpack-struct="), flagpd1("fpadding-on-unsigned-fixed-point"), flagpd1("fparse-all-comments"), flagpd1("fpascal-strings"), -joinpd1("fpass-plugin="), -joinpd1("fpatchable-function-entry="), -joinpd1("fpatchable-function-entry-offset="), flagpd1("fpcc-struct-return"), flagpd1("fpch-preprocess"), flagpd1("fpch-validate-input-files-content"), flagpd1("fpic"), flagpd1("fpie"), flagpd1("fplt"), -joinpd1("fplugin="), -joinpd1("fprebuilt-module-path="), flagpd1("fpreserve-as-comments"), flagpd1("fpreserve-vec3-type"), flagpd1("fprofile-arcs"), -joinpd1("fprofile-dir="), -joinpd1("fprofile-exclude-files="), -joinpd1("fprofile-filter-files="), flagpd1("fprofile-generate"), -joinpd1("fprofile-generate="), flagpd1("fprofile-instr-generate"), -joinpd1("fprofile-instr-generate="), flagpd1("fprofile-instr-use"), -joinpd1("fprofile-instr-use="), -joinpd1("fprofile-instrument="), -joinpd1("fprofile-instrument-path="), -joinpd1("fprofile-instrument-use-path="), sepd1("fprofile-remapping-file"), -joinpd1("fprofile-remapping-file="), flagpd1("fprofile-sample-accurate"), flagpd1("fprofile-sample-use"), -joinpd1("fprofile-sample-use="), flagpd1("fprofile-use"), -joinpd1("fprofile-use="), sepd1("framework"), -joinpd1("frandom-seed="), flagpd1("freciprocal-math"), flagpd1("frecord-command-line"), -joinpd1("frecord-marker="), flagpd1("ffree-form"), flagpd1("fno-free-form"), flagpd1("freg-struct-return"), @@ -3969,7 +2953,6 @@ flagpd1("fretain-comments-from-system-headers"), flagpd1("frewrite-imports"), flagpd1("frewrite-includes"), sepd1("frewrite-map-file"), -joinpd1("frewrite-map-file="), flagpd1("ffriend-injection"), flagpd1("fno-friend-injection"), flagpd1("ffrontend-optimize"), @@ -3979,31 +2962,13 @@ flagpd1("frounding-math"), flagpd1("frtlib-add-rpath"), flagpd1("frtti"), flagpd1("frwpi"), -.{ - .name = "fsanitize=", - .syntax = .comma_joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = false, -}, -joinpd1("fsanitize-address-field-padding="), flagpd1("fsanitize-address-globals-dead-stripping"), flagpd1("fsanitize-address-poison-custom-array-cookie"), flagpd1("fsanitize-address-use-after-scope"), flagpd1("fsanitize-address-use-odr-indicator"), -joinpd1("fsanitize-blacklist="), flagpd1("fsanitize-cfi-canonical-jump-tables"), flagpd1("fsanitize-cfi-cross-dso"), flagpd1("fsanitize-cfi-icall-generalize-pointers"), -.{ - .name = "fsanitize-coverage=", - .syntax = .comma_joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = false, -}, flagpd1("fsanitize-coverage-8bit-counters"), flagpd1("fsanitize-coverage-indirect-calls"), flagpd1("fsanitize-coverage-inline-8bit-counters"), @@ -4016,45 +2981,22 @@ flagpd1("fsanitize-coverage-trace-div"), flagpd1("fsanitize-coverage-trace-gep"), flagpd1("fsanitize-coverage-trace-pc"), flagpd1("fsanitize-coverage-trace-pc-guard"), -joinpd1("fsanitize-coverage-type="), -joinpd1("fsanitize-hwaddress-abi="), flagpd1("fsanitize-link-c++-runtime"), flagpd1("fsanitize-link-runtime"), flagpd1("fsanitize-memory-track-origins"), -joinpd1("fsanitize-memory-track-origins="), flagpd1("fsanitize-memory-use-after-dtor"), flagpd1("fsanitize-minimal-runtime"), flagpd1("fsanitize-recover"), -.{ - .name = "fsanitize-recover=", - .syntax = .comma_joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = false, -}, flagpd1("fsanitize-stats"), -joinpd1("fsanitize-system-blacklist="), flagpd1("fsanitize-thread-atomics"), flagpd1("fsanitize-thread-func-entry-exit"), flagpd1("fsanitize-thread-memory-access"), -.{ - .name = "fsanitize-trap=", - .syntax = .comma_joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = false, -}, -joinpd1("fsanitize-undefined-strip-path-components="), flagpd1("fsanitize-undefined-trap-on-error"), flagpd1("fsave-optimization-record"), -joinpd1("fsave-optimization-record="), flagpd1("fseh-exceptions"), flagpd1("fshort-enums"), flagpd1("fshort-wchar"), flagpd1("fshow-column"), -joinpd1("fshow-overloads="), flagpd1("fshow-source-location"), flagpd1("fsignaling-math"), flagpd1("fsigned-bitfields"), @@ -4066,7 +3008,6 @@ flagpd1("fsjlj-exceptions"), flagpd1("fslp-vectorize"), flagpd1("fspell-checking"), sepd1("fspell-checking-limit"), -joinpd1("fspell-checking-limit="), flagpd1("fsplit-dwarf-inlining"), flagpd1("fsplit-lto-unit"), flagpd1("fsplit-stack"), @@ -4083,31 +3024,18 @@ flagpd1("fstrict-return"), flagpd1("fstrict-vtable-pointers"), flagpd1("fstruct-path-tbaa"), flagpd1("fsycl-is-device"), -joinpd1("fsymbol-partition="), flagpd1("fsyntax-only"), sepd1("ftabstop"), -joinpd1("ftabstop="), sepd1("ftemplate-backtrace-limit"), -joinpd1("ftemplate-backtrace-limit="), sepd1("ftemplate-depth"), -joinpd1("ftemplate-depth-"), -joinpd1("ftemplate-depth="), flagpd1("ftest-coverage"), -joinpd1("ftest-module-file-extension="), -joinpd1("fthin-link-bitcode="), -joinpd1("fthinlto-index="), flagpd1("fthreadsafe-statics"), flagpd1("ftime-report"), flagpd1("ftime-trace"), -joinpd1("ftime-trace-granularity="), -joinpd1("ftls-model="), -joinpd1("ftrap-function="), flagpd1("ftrapping-math"), flagpd1("ftrapv"), sepd1("ftrapv-handler"), -joinpd1("ftrapv-handler="), flagpd1("ftrigraphs"), -joinpd1("ftrivial-auto-var-init="), sepd1("ftype-visibility"), sepd1("function-alignment"), flagpd1("ffunction-attribute-list"), @@ -4122,35 +3050,24 @@ flagpd1("funsigned-char"), flagpd1("funwind-tables"), flagpd1("fuse-cxa-atexit"), flagpd1("fuse-init-array"), -joinpd1("fuse-ld="), flagpd1("fuse-line-directives"), flagpd1("fuse-register-sized-bitfield-access"), flagpd1("fvalidate-ast-input-files-content"), -joinpd1("fveclib="), flagpd1("fvectorize"), flagpd1("fverbose-asm"), flagpd1("fvirtual-function-elimination"), sepd1("fvisibility"), -joinpd1("fvisibility="), flagpd1("fvisibility-global-new-delete-hidden"), flagpd1("fvisibility-inlines-hidden"), flagpd1("fvisibility-ms-compat"), flagpd1("fwasm-exceptions"), -joinpd1("fwchar-type="), flagpd1("fwhole-program-vtables"), flagpd1("fwrapv"), flagpd1("fwritable-strings"), flagpd1("fxray-always-emit-customevents"), flagpd1("fxray-always-emit-typedevents"), -jspd1("fxray-always-instrument="), -jspd1("fxray-attr-list="), -jspd1("fxray-instruction-threshold"), -jspd1("fxray-instruction-threshold="), flagpd1("fxray-instrument"), -jspd1("fxray-instrumentation-bundle="), flagpd1("fxray-link-deps"), -jspd1("fxray-modes="), -jspd1("fxray-never-instrument="), flagpd1("fzero-initialized-in-bss"), flagpd1("fzvector"), flagpd1("g0"), @@ -4158,18 +3075,9 @@ flagpd1("g1"), flagpd1("g2"), flagpd1("g3"), flagpd1("g"), -.{ - .name = "gcc-toolchain=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, sepd1("gcc-toolchain"), flagpd1("gcodeview"), flagpd1("gcodeview-ghash"), -joinpd1("gcoff"), flagpd1("gcolumn-info"), flagpd1("fgcse-after-reload"), flagpd1("fno-gcse-after-reload"), @@ -4211,53 +3119,23 @@ flagpd1("gno-record-command-line"), flagpd1("gno-strict-dwarf"), flagpd1("fgnu"), flagpd1("fno-gnu"), -.{ - .name = "gpu-max-threads-per-block=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, flagpd1("gpubnames"), flagpd1("grecord-command-line"), flagpd1("gsce"), flagpd1("gsplit-dwarf"), -joinpd1("gsplit-dwarf="), -joinpd1("gstabs"), flagpd1("gstrict-dwarf"), flagpd1("gtoggle"), flagpd1("gused"), -joinpd1("gvms"), -joinpd1("gxcoff"), flagpd1("gz"), -joinpd1("gz="), sepd1("header-include-file"), -joinpd1("headerpad_max_install_names"), .{ .name = "help", .syntax = .flag, - .zig_equivalent = .other, + .zig_equivalent = .passthrough, .pd1 = true, .pd2 = true, .psl = false, }, -.{ - .name = "hip-device-lib=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, -.{ - .name = "hip-device-lib-path=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "hip-link", .syntax = .flag, @@ -4266,17 +3144,6 @@ joinpd1("headerpad_max_install_names"), .pd2 = true, .psl = false, }, -jspd1("idirafter"), -jspd1("iframework"), -jspd1("iframeworkwithsysroot"), -.{ - .name = "imacros", - .syntax = .joined_or_separate, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = true, - .psl = false, -}, sepd1("image_base"), flagpd1("fimplement-inlines"), flagpd1("fno-implement-inlines"), @@ -4285,14 +3152,6 @@ flagpd1("fno-implicit-none"), flagpd1("fimplicit-templates"), flagpd1("fno-implicit-templates"), sepd1("imultilib"), -.{ - .name = "include", - .syntax = .joined_or_separate, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = true, - .psl = false, -}, sepd1("include-pch"), flagpd1("index-header-map"), sepd1("init"), @@ -4306,51 +3165,15 @@ flagpd1("fno-inline-small-functions"), sepd1("install_name"), flagpd1("finteger-4-integer-8"), flagpd1("fno-integer-4-integer-8"), -jspd1("interface-stub-version="), -jspd1("internal-externc-isystem"), -jspd1("internal-isystem"), flagpd1("fintrinsic-modules-path"), flagpd1("fno-intrinsic-modules-path"), flagpd1("fipa-cp"), flagpd1("fno-ipa-cp"), -jspd1("iprefix"), -jspd1("iquote"), -jspd1("isysroot"), -jspd1("isystem"), -jspd1("isystem-after"), -jspd1("ivfsoverlay"), flagpd1("fivopts"), flagpd1("fno-ivopts"), -jspd1("iwithprefix"), -jspd1("iwithprefixbefore"), -jspd1("iwithsysroot"), flagpd1("keep_private_externs"), -.{ - .name = "l", - .syntax = .joined_or_separate, - .zig_equivalent = .l, - .pd1 = true, - .pd2 = false, - .psl = false, -}, sepd1("lazy_framework"), sepd1("lazy_library"), -.{ - .name = "libomptarget-nvptx-path=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, -.{ - .name = "linker-option=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, sepd1("load"), flagpd1("m16"), flagpd1("m32"), @@ -4358,34 +3181,14 @@ flagpd1("m3dnow"), flagpd1("m3dnowa"), flagpd1("m64"), flagpd1("m80387"), -joinpd1("mabi="), flagpd1("mabi=ieeelongdouble"), flagpd1("mabicalls"), -joinpd1("mabs="), flagpd1("madx"), flagpd1("maes"), sepd1("main-file-name"), -.{ - .name = "malign-branch=", - .syntax = .comma_joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = false, -}, -joinpd1("malign-branch-boundary="), -joinpd1("malign-branch-prefix-size="), flagpd1("malign-double"), -joinpd1("malign-functions="), -joinpd1("malign-jumps="), -joinpd1("malign-loops="), flagpd1("maltivec"), -joinpd1("mamdgpu-debugger-abi="), -joinpd1("mappletvos-version-min="), -joinpd1("mappletvsimulator-version-min="), -joinpd1("march="), flagpd1("marm"), -joinpd1("masm="), flagpd1("masm-verbose"), flagpd1("massembler-fatal-warnings"), flagpd1("massembler-no-warn"), @@ -4414,7 +3217,6 @@ flagpd1("mbig-endian"), flagpd1("mbmi"), flagpd1("mbmi2"), flagpd1("mbranch-likely"), -joinpd1("mbranch-protection="), flagpd1("mbranch-target-enforce"), flagpd1("mbranches-within-32B-boundaries"), flagpd1("mbulk-memory"), @@ -4423,32 +3225,25 @@ flagpd1("mcldemote"), flagpd1("mclflushopt"), flagpd1("mclwb"), flagpd1("mclzero"), -joinpd1("mcmodel="), flagpd1("mcmodel=medany"), flagpd1("mcmodel=medlow"), flagpd1("mcmpb"), flagpd1("mcmse"), sepd1("mcode-model"), flagpd1("mcode-object-v3"), -joinpd1("mcompact-branches="), -joinpd1("mconsole"), flagpd1("mconstant-cfstrings"), flagpd1("mconstructor-aliases"), -joinpd1("mcpu="), flagpd1("mcpu=?"), flagpd1("mcrbits"), flagpd1("mcrc"), flagpd1("mcumode"), flagpd1("mcx16"), sepd1("mdebug-pass"), -joinpd1("mdefault-build-attributes"), flagpd1("mdirect-move"), flagpd1("mdisable-tail-calls"), -joinpd1("mdll"), flagpd1("mdouble-float"), flagpd1("mdsp"), flagpd1("mdspr2"), -joinpd1("mdynamic-no-pic"), sepd1("meabi"), flagpd1("membedded-data"), flagpd1("menable-no-infs"), @@ -4467,17 +3262,13 @@ flagpd1("mfix-and-continue"), flagpd1("mfix-cortex-a53-835769"), flagpd1("mfloat128"), sepd1("mfloat-abi"), -joinpd1("mfloat-abi="), flagpd1("mfma"), flagpd1("mfma4"), flagpd1("mfp32"), flagpd1("mfp64"), sepd1("mfpmath"), -joinpd1("mfpmath="), flagpd1("mfprnd"), -joinpd1("mfpu="), flagpd1("mfpxx"), -joinpd1("mframe-pointer="), flagpd1("mfsgsbase"), flagpd1("mfxsr"), flagpd1("mgeneral-regs-only"), @@ -4488,11 +3279,7 @@ flagpd1("mglobal-merge"), flagpd1("mgpopt"), flagpd1("mhard-float"), flagpd1("mhvx"), -joinpd1("mhvx="), -joinpd1("mhvx-length="), flagpd1("mhtm"), -joinpd1("mhwdiv="), -joinpd1("mhwmult="), flagpd1("miamcu"), flagpd1("mieee-fp"), flagpd1("mieee-rnd-near"), @@ -4500,16 +3287,10 @@ flagpd1("migrate"), flagpd1("no-finalize-removal"), flagpd1("no-ns-alloc-error"), flagpd1("mimplicit-float"), -joinpd1("mimplicit-it="), flagpd1("mincremental-linker-compatible"), -joinpd1("mindirect-jump="), flagpd1("minline-all-stringops"), flagpd1("minvariant-function-descriptors"), flagpd1("minvpcid"), -joinpd1("mios-simulator-version-min="), -joinpd1("mios-version-min="), -joinpd1("miphoneos-version-min="), -joinpd1("miphonesimulator-version-min="), flagpd1("mips1"), flagpd1("mips16"), flagpd1("mips2"), @@ -4533,7 +3314,6 @@ sepd1("mlimit-float-precision"), sepd1("mlink-bitcode-file"), sepd1("mlink-builtin-bitcode"), sepd1("mlink-cuda-bitcode"), -joinpd1("mlinker-version="), flagpd1("mlittle-endian"), sepd1("mllvm"), flagpd1("mlocal-sdata"), @@ -4544,10 +3324,7 @@ flagpd1("mlong-double-80"), flagpd1("mlongcall"), flagpd1("mlwp"), flagpd1("mlzcnt"), -joinpd1("mmacos-version-min="), -joinpd1("mmacosx-version-min="), flagpd1("mmadd4"), -joinpd1("mmcu="), flagpd1("mmemops"), flagpd1("mmfcrf"), flagpd1("mmfocrf"), @@ -4563,7 +3340,6 @@ flagpd1("mmt"), flagpd1("mmultivalue"), flagpd1("mmutable-globals"), flagpd1("mmwaitx"), -joinpd1("mnan="), flagpd1("mno-3dnow"), flagpd1("mno-3dnowa"), flagpd1("mno-80387"), @@ -4606,7 +3382,6 @@ flagpd1("mno-crbits"), flagpd1("mno-crc"), flagpd1("mno-cumode"), flagpd1("mno-cx16"), -joinpd1("mno-default-build-attributes"), flagpd1("mno-dsp"), flagpd1("mno-dspr2"), flagpd1("mno-embedded-data"), @@ -4761,7 +3536,6 @@ flagpd1("fno-modulo-sched-allow-regmoves"), flagpd1("fmodulo-sched"), flagpd1("fno-modulo-sched"), flagpd1("momit-leaf-frame-pointer"), -joinpd1("moslib="), flagpd1("moutline"), flagpd1("mpacked-stack"), flagpd1("mpackets"), @@ -4775,7 +3549,6 @@ flagpd1("mpopcntd"), flagpd1("mcrypto"), flagpd1("mpower8-vector"), flagpd1("mpower9-vector"), -joinpd1("mprefer-vector-width="), flagpd1("mprefetchwt1"), flagpd1("mprfchw"), flagpd1("mptwrite"), @@ -4787,19 +3560,10 @@ flagpd1("mrdrnd"), flagpd1("mrdseed"), flagpd1("mreassociate"), flagpd1("mrecip"), -.{ - .name = "mrecip=", - .syntax = .comma_joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = false, -}, flagpd1("mrecord-mcount"), flagpd1("mred-zone"), flagpd1("mreference-types"), sepd1("mregparm"), -joinpd1("mregparm="), flagpd1("mrelax"), flagpd1("mrelax-all"), flagpd1("mrelax-pic-calls"), @@ -4825,11 +3589,8 @@ flagpd1("msgx"), flagpd1("msha"), flagpd1("mshstk"), flagpd1("msign-ext"), -joinpd1("msign-return-address="), -joinpd1("msign-return-address-key="), flagpd1("msimd128"), flagpd1("msingle-float"), -joinpd1("msmall-data-threshold="), flagpd1("msoft-float"), flagpd1("mspe"), flagpd1("mspeculative-load-hardening"), @@ -4842,31 +3603,22 @@ flagpd1("msse4.1"), flagpd1("msse4.2"), flagpd1("msse4a"), flagpd1("mssse3"), -joinpd1("mstack-alignment="), flagpd1("mstack-arg-probe"), -joinpd1("mstack-probe-size="), flagpd1("mstackrealign"), flagpd1("mstrict-align"), sepd1("mt-migrate-directory"), flagpd1("mtail-call"), flagpd1("mtbm"), sepd1("mthread-model"), -joinpd1("mthreads"), flagpd1("mthumb"), flagpd1("mtls-direct-seg-refs"), -joinpd1("mtls-size="), sepd1("mtp"), -joinpd1("mtp="), -joinpd1("mtune="), flagpd1("mtune=?"), -joinpd1("mtvos-simulator-version-min="), -joinpd1("mtvos-version-min="), flagpd1("muclibc"), flagpd1("multi_module"), sepd1("multiply_defined"), sepd1("multiply_defined_unused"), flagpd1("munaligned-access"), -joinpd1("municode"), flagpd1("munimplemented-simd128"), flagpd1("munwind-tables"), flagpd1("mv5"), @@ -4883,12 +3635,8 @@ flagpd1("mvx"), flagpd1("mvzeroupper"), flagpd1("mwaitpkg"), flagpd1("mwarn-nonportable-cfstrings"), -joinpd1("mwatchos-simulator-version-min="), -joinpd1("mwatchos-version-min="), -joinpd1("mwatchsimulator-version-min="), flagpd1("mwavefrontsize64"), flagpd1("mwbnoinvd"), -joinpd1("mwindows"), flagpd1("mx32"), flagpd1("mx87"), flagpd1("mxgot"), @@ -4906,22 +3654,6 @@ flagpd1("no-canonical-prefixes"), flagpd1("no-code-completion-globals"), flagpd1("no-code-completion-ns-level-decls"), flagpd1("no-cpp-precomp"), -.{ - .name = "no-cuda-gpu-arch=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, -.{ - .name = "no-cuda-include-ptx=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, .{ .name = "no-cuda-noopt-device-debug", .syntax = .flag, @@ -4959,14 +3691,6 @@ flagpd1("no-implicit-float"), flagpd1("no-pie"), flagpd1("no-pthread"), flagpd1("no-struct-path-tbaa"), -.{ - .name = "no-system-header-prefix=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, flagpd1("nobuiltininc"), flagpd1("nocpp"), flagpd1("nocudainc"), @@ -4984,19 +3708,17 @@ flagpd1("noseglinkedit"), flagpd1("nostartfiles"), flagpd1("nostdinc"), flagpd1("nostdinc++"), -flagpd1("nostdlib"), -flagpd1("nostdlibinc"), -flagpd1("nostdlib++"), -flagpd1("nostdsysteminc"), .{ - .name = "o", - .syntax = .joined_or_separate, - .zig_equivalent = .o, + .name = "nostdlib", + .syntax = .flag, + .zig_equivalent = .nostdlib, .pd1 = true, .pd2 = false, .psl = false, }, -jspd1("objc-isystem"), +flagpd1("nostdlibinc"), +flagpd1("nostdlib++"), +flagpd1("nostdsysteminc"), flagpd1("objcmt-atomic-property"), flagpd1("objcmt-migrate-all"), flagpd1("objcmt-migrate-annotation"), @@ -5012,8 +3734,6 @@ flagpd1("objcmt-migrate-readwrite-property"), flagpd1("objcmt-migrate-subscripting"), flagpd1("objcmt-ns-nonatomic-iosonly"), flagpd1("objcmt-returns-innerpointer-property"), -joinpd1("objcmt-whitelist-dir-path="), -jspd1("objcxx-isystem"), flagpd1("object"), sepd1("opt-record-file"), sepd1("opt-record-format"), @@ -5022,7 +3742,6 @@ sepd1("output-asm-variant"), flagpd1("p"), flagpd1("fpack-derived"), flagpd1("fno-pack-derived"), -jspd1("pagezero_size"), .{ .name = "pass-exit-codes", .syntax = .flag, @@ -5033,7 +3752,6 @@ jspd1("pagezero_size"), }, flagpd1("pch-through-hdrstop-create"), flagpd1("pch-through-hdrstop-use"), -joinpd1("pch-through-header="), .{ .name = "pedantic", .syntax = .flag, @@ -5061,21 +3779,12 @@ flagpd1("pie"), .{ .name = "pipe", .syntax = .flag, - .zig_equivalent = .other, + .zig_equivalent = .ignore, .pd1 = true, .pd2 = true, .psl = false, }, sepd1("plugin"), -.{ - .name = "plugin-arg-", - .syntax = .joined_and_separate, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = false, -}, -joinpd1("preamble-bytes="), flagpd1("prebind"), flagpd1("prebind_all_twolevel_modules"), flagpd1("fprefetch-loop-arrays"), @@ -5090,14 +3799,6 @@ flagpd1("print-dependency-directives-minimized-source"), .pd2 = true, .psl = false, }, -.{ - .name = "print-file-name=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = true, - .psl = false, -}, flagpd1("print-ivar-layout"), .{ .name = "print-libgcc-file-name", @@ -5132,14 +3833,6 @@ flagpd1("print-ivar-layout"), .psl = false, }, flagpd1("print-preamble"), -.{ - .name = "print-prog-name=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = true, - .psl = false, -}, .{ .name = "print-resource-dir", .syntax = .flag, @@ -5190,18 +3883,17 @@ flagpd1("fprotect-parens"), flagpd1("fno-protect-parens"), flagpd1("pthread"), flagpd1("pthreads"), -.{ - .name = "ptxas-path=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, flagpd1("r"), flagpd1("frange-check"), flagpd1("fno-range-check"), -flagpd1("rdynamic"), +.{ + .name = "rdynamic", + .syntax = .flag, + .zig_equivalent = .rdynamic, + .pd1 = true, + .pd2 = false, + .psl = false, +}, sepd1("read_only_relocs"), flagpd1("freal-4-real-10"), flagpd1("fno-real-4-real-10"), @@ -5240,7 +3932,6 @@ flagpd1("fno-reorder-blocks"), flagpd1("frepack-arrays"), flagpd1("fno-repack-arrays"), sepd1("resource-dir"), -joinpd1("resource-dir="), flagpd1("rewrite-legacy-objc"), flagpd1("rewrite-macros"), flagpd1("rewrite-objc"), @@ -5248,22 +3939,6 @@ flagpd1("rewrite-test"), flagpd1("fripa"), flagpd1("fno-ripa"), sepd1("rpath"), -.{ - .name = "rsp-quoting=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, -.{ - .name = "rtlib=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = true, - .psl = false, -}, flagpd1("s"), .{ .name = "save-stats", @@ -5273,14 +3948,6 @@ flagpd1("s"), .pd2 = true, .psl = false, }, -.{ - .name = "save-stats=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = true, - .psl = false, -}, .{ .name = "save-temps", .syntax = .flag, @@ -5289,14 +3956,6 @@ flagpd1("s"), .pd2 = true, .psl = false, }, -.{ - .name = "save-temps=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = true, - .psl = false, -}, flagpd1("fschedule-insns2"), flagpd1("fno-schedule-insns2"), flagpd1("fschedule-insns"), @@ -5305,7 +3964,7 @@ flagpd1("fsecond-underscore"), flagpd1("fno-second-underscore"), .{ .name = "sectalign", - .syntax = .{ .multi_arg = 3 }, + .syntax = .{.multi_arg=3}, .zig_equivalent = .other, .pd1 = true, .pd2 = false, @@ -5313,7 +3972,7 @@ flagpd1("fno-second-underscore"), }, .{ .name = "sectcreate", - .syntax = .{ .multi_arg = 3 }, + .syntax = .{.multi_arg=3}, .zig_equivalent = .other, .pd1 = true, .pd2 = false, @@ -5321,7 +3980,7 @@ flagpd1("fno-second-underscore"), }, .{ .name = "sectobjectsymbols", - .syntax = .{ .multi_arg = 2 }, + .syntax = .{.multi_arg=2}, .zig_equivalent = .other, .pd1 = true, .pd2 = false, @@ -5329,7 +3988,7 @@ flagpd1("fno-second-underscore"), }, .{ .name = "sectorder", - .syntax = .{ .multi_arg = 3 }, + .syntax = .{.multi_arg=3}, .zig_equivalent = .other, .pd1 = true, .pd2 = false, @@ -5337,12 +3996,11 @@ flagpd1("fno-second-underscore"), }, flagpd1("fsee"), flagpd1("fno-see"), -jspd1("seg1addr"), sepd1("seg_addr_table"), sepd1("seg_addr_table_filename"), .{ .name = "segaddr", - .syntax = .{ .multi_arg = 2 }, + .syntax = .{.multi_arg=2}, .zig_equivalent = .other, .pd1 = true, .pd2 = false, @@ -5350,7 +4008,7 @@ sepd1("seg_addr_table_filename"), }, .{ .name = "segcreate", - .syntax = .{ .multi_arg = 3 }, + .syntax = .{.multi_arg=3}, .zig_equivalent = .other, .pd1 = true, .pd2 = false, @@ -5359,20 +4017,19 @@ sepd1("seg_addr_table_filename"), flagpd1("seglinkedit"), .{ .name = "segprot", - .syntax = .{ .multi_arg = 3 }, + .syntax = .{.multi_arg=3}, .zig_equivalent = .other, .pd1 = true, .pd2 = false, .psl = false, }, -joinpd1("segs_read_"), sepd1("segs_read_only_addr"), sepd1("segs_read_write_addr"), flagpd1("setup-static-analyzer"), .{ .name = "shared", .syntax = .flag, - .zig_equivalent = .other, + .zig_equivalent = .shared, .pd1 = true, .pd2 = true, .psl = false, @@ -5406,14 +4063,6 @@ flagpd1("fno-spec-constr-count"), .pd2 = true, .psl = false, }, -.{ - .name = "specs=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = true, - .psl = false, -}, sepd1("split-dwarf-file"), sepd1("split-dwarf-output"), flagpd1("split-stacks"), @@ -5438,47 +4087,10 @@ flagpd1("static-libsan"), flagpd1("static-libstdc++"), flagpd1("static-openmp"), flagpd1("static-pie"), -joinpd1("stats-file="), -.{ - .name = "std=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = true, - .psl = false, -}, -joinpd1("std-default="), -.{ - .name = "stdlib=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = true, - .psl = false, -}, -jspd1("stdlib++-isystem"), flagpd1("fstrength-reduce"), flagpd1("fno-strength-reduce"), -jspd1("sub_library"), -jspd1("sub_umbrella"), flagpd1("sys-header-deps"), -.{ - .name = "system-header-prefix=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = false, - .pd2 = true, - .psl = false, -}, flagpd1("t"), -.{ - .name = "target=", - .syntax = .joined, - .zig_equivalent = .target, - .pd1 = false, - .pd2 = true, - .psl = false, -}, sepd1("target-abi"), sepd1("target-cpu"), sepd1("target-feature"), @@ -5491,7 +4103,6 @@ sepd1("target-feature"), .psl = false, }, sepd1("target-linker-version"), -joinpd1("target-sdk-version="), flagpd1("templight-dump"), flagpd1("test-coverage"), flagpd1("time"), @@ -5541,13 +4152,10 @@ flagpd1("fno-tree-vrp"), }, flagpd1("trim-egraph"), sepd1("triple"), -joinpd1("triple="), flagpd1("twolevel_namespace"), flagpd1("twolevel_namespace_hints"), -jspd1("u"), sepd1("umbrella"), flagpd1("undef"), -jspd1("undefined"), flagpd1("funderscoring"), flagpd1("fno-underscoring"), sepd1("unexported_symbols_list"), @@ -5557,14 +4165,6 @@ flagpd1("funsafe-loop-optimizations"), flagpd1("fno-unsafe-loop-optimizations"), flagpd1("funswitch-loops"), flagpd1("fno-unswitch-loops"), -.{ - .name = "unwindlib=", - .syntax = .joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = true, - .psl = false, -}, flagpd1("fuse-linker-plugin"), flagpd1("fno-use-linker-plugin"), flagpd1("v"), @@ -5575,14 +4175,6 @@ flagpd1("fno-vect-cost-model"), flagpd1("vectorize-loops"), flagpd1("vectorize-slp"), flagpd1("verify"), -.{ - .name = "verify=", - .syntax = .comma_joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = false, -}, .{ .name = "verify-debug-info", .syntax = .flag, @@ -5592,14 +4184,6 @@ flagpd1("verify"), .psl = false, }, flagpd1("verify-ignore-unexpected"), -.{ - .name = "verify-ignore-unexpected=", - .syntax = .comma_joined, - .zig_equivalent = .other, - .pd1 = true, - .pd2 = false, - .psl = false, -}, flagpd1("verify-pch"), flagpd1("version"), .{ @@ -5610,12 +4194,10 @@ flagpd1("version"), .pd2 = true, .psl = false, }, -joinpd1("vtordisp-mode="), flagpd1("w"), sepd1("weak_framework"), sepd1("weak_library"), sepd1("weak_reference_mismatches"), -joinpd1("weak-l"), flagpd1("fweb"), flagpd1("fno-web"), flagpd1("whatsloaded"), @@ -5624,9 +4206,1455 @@ flagpd1("fno-whole-file"), flagpd1("fwhole-program"), flagpd1("fno-whole-program"), flagpd1("whyload"), -jspd1("working-directory"), +sepd1("z"), +joinpd1("fsanitize-undefined-strip-path-components="), +joinpd1("fopenmp-cuda-teams-reduction-recs-num="), +joinpd1("analyzer-config-compatibility-mode="), +joinpd1("fpatchable-function-entry-offset="), +joinpd1("analyzer-inline-max-stack-depth="), +joinpd1("fsanitize-address-field-padding="), +joinpd1("fdiagnostics-hotness-threshold="), +joinpd1("fsanitize-memory-track-origins="), +joinpd1("mwatchos-simulator-version-min="), +joinpd1("mappletvsimulator-version-min="), +joinpd1("fobjc-nonfragile-abi-version="), +joinpd1("fprofile-instrument-use-path="), +jspd1("fxray-instrumentation-bundle="), +joinpd1("miphonesimulator-version-min="), +joinpd1("faddress-space-map-mangling="), +joinpd1("foptimization-record-passes="), +joinpd1("ftest-module-file-extension="), +jspd1("fxray-instruction-threshold="), +joinpd1("mno-default-build-attributes"), +joinpd1("mtvos-simulator-version-min="), +joinpd1("mwatchsimulator-version-min="), +.{ + .name = "include-with-prefix-before=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +joinpd1("objcmt-white-list-dir-path="), +joinpd1("error-on-deserialized-decl="), +joinpd1("fconstexpr-backtrace-limit="), +joinpd1("fdiagnostics-show-category="), +joinpd1("fdiagnostics-show-location="), +joinpd1("fopenmp-cuda-blocks-per-sm="), +joinpd1("fsanitize-system-blacklist="), +jspd1("fxray-instruction-threshold"), +joinpd1("headerpad_max_install_names"), +joinpd1("mios-simulator-version-min="), +.{ + .name = "include-with-prefix-after=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +joinpd1("fms-compatibility-version="), +joinpd1("fopenmp-cuda-number-of-sm="), +joinpd1("foptimization-record-file="), +joinpd1("fpatchable-function-entry="), +joinpd1("fsave-optimization-record="), +joinpd1("ftemplate-backtrace-limit="), +.{ + .name = "gpu-max-threads-per-block=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +joinpd1("malign-branch-prefix-size="), +joinpd1("objcmt-whitelist-dir-path="), +joinpd1("Wno-nonportable-cfstrings"), +joinpd1("analyzer-disable-checker="), +joinpd1("fbuild-session-timestamp="), +joinpd1("fprofile-instrument-path="), +joinpd1("mdefault-build-attributes"), +joinpd1("msign-return-address-key="), +.{ + .name = "verify-ignore-unexpected=", + .syntax = .comma_joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +.{ + .name = "include-directory-after=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "compress-debug-sections=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = true, + .psl = false, +}, +.{ + .name = "fcomment-block-commands=", + .syntax = .comma_joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +joinpd1("flax-vector-conversions="), +joinpd1("fmodules-embed-all-files"), +joinpd1("fmodules-prune-interval="), +joinpd1("foverride-record-layout="), +joinpd1("fprofile-instr-generate="), +joinpd1("fprofile-remapping-file="), +joinpd1("fsanitize-coverage-type="), +joinpd1("fsanitize-hwaddress-abi="), +joinpd1("ftime-trace-granularity="), +jspd1("fxray-always-instrument="), +jspd1("internal-externc-isystem"), +.{ + .name = "libomptarget-nvptx-path=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "no-system-header-prefix=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "output-class-directory=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +joinpd1("analyzer-inlining-mode="), +joinpd1("fconstant-string-class="), +joinpd1("fcrash-diagnostics-dir="), +joinpd1("fdebug-compilation-dir="), +joinpd1("fdebug-default-version="), +joinpd1("ffp-exception-behavior="), +joinpd1("fmacro-backtrace-limit="), +joinpd1("fmax-array-constructor="), +joinpd1("fprofile-exclude-files="), +joinpd1("ftrivial-auto-var-init="), +jspd1("fxray-never-instrument="), +jspd1("interface-stub-version="), +joinpd1("malign-branch-boundary="), +joinpd1("mappletvos-version-min="), +joinpd1("Wnonportable-cfstrings"), +joinpd1("fdefault-calling-conv="), +joinpd1("fmax-subrecord-length="), +joinpd1("fmodules-ignore-macro="), +.{ + .name = "fno-sanitize-coverage=", + .syntax = .comma_joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +joinpd1("fobjc-dispatch-method="), +joinpd1("foperator-arrow-depth="), +joinpd1("fprebuilt-module-path="), +joinpd1("fprofile-filter-files="), +joinpd1("fspell-checking-limit="), +joinpd1("miphoneos-version-min="), +joinpd1("msmall-data-threshold="), +joinpd1("Wlarge-by-value-copy="), +joinpd1("analyzer-constraints="), +joinpd1("analyzer-dump-egraph="), +jspd1("compatibility_version"), +jspd1("dylinker_install_name"), +joinpd1("fcs-profile-generate="), +joinpd1("fmodules-prune-after="), +.{ + .name = "fno-sanitize-recover=", + .syntax = .comma_joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +jspd1("iframeworkwithsysroot"), +joinpd1("mamdgpu-debugger-abi="), +joinpd1("mprefer-vector-width="), +joinpd1("msign-return-address="), +joinpd1("mwatchos-version-min="), +.{ + .name = "system-header-prefix=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "include-with-prefix=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +joinpd1("coverage-notes-file="), +joinpd1("fbuild-session-file="), +joinpd1("fdiagnostics-format="), +joinpd1("fmax-stack-var-size="), +joinpd1("fmodules-cache-path="), +joinpd1("fmodules-embed-file="), +joinpd1("fprofile-instrument="), +joinpd1("fprofile-sample-use="), +joinpd1("fsanitize-blacklist="), +.{ + .name = "hip-device-lib-path=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +joinpd1("mmacosx-version-min="), +.{ + .name = "no-cuda-include-ptx=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +joinpd1("Wframe-larger-than="), +joinpd1("code-completion-at="), +joinpd1("coverage-data-file="), +joinpd1("fblas-matmul-limit="), +joinpd1("fdiagnostics-color="), +joinpd1("ffixed-line-length-"), +joinpd1("flimited-precision="), +joinpd1("fprofile-instr-use="), +.{ + .name = "fsanitize-coverage=", + .syntax = .comma_joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +joinpd1("fthin-link-bitcode="), +joinpd1("mbranch-protection="), +joinpd1("mmacos-version-min="), +joinpd1("pch-through-header="), +joinpd1("target-sdk-version="), +.{ + .name = "execution-charset:", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "include-directory=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "library-directory=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "config-system-dir=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +joinpd1("fclang-abi-compat="), +joinpd1("fcompile-resource="), +joinpd1("fdebug-prefix-map="), +joinpd1("fdenormal-fp-math="), +joinpd1("fexcess-precision="), +joinpd1("ffree-line-length-"), +joinpd1("fmacro-prefix-map="), +.{ + .name = "fno-sanitize-trap=", + .syntax = .comma_joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +joinpd1("fobjc-abi-version="), +joinpd1("foutput-class-dir="), +joinpd1("fprofile-generate="), +joinpd1("frewrite-map-file="), +.{ + .name = "fsanitize-recover=", + .syntax = .comma_joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +joinpd1("fsymbol-partition="), +joinpd1("mcompact-branches="), +joinpd1("mstack-probe-size="), +joinpd1("mtvos-version-min="), joinpd1("working-directory="), +joinpd1("analyze-function="), +joinpd1("analyzer-checker="), +joinpd1("coverage-version="), +.{ + .name = "cuda-include-ptx=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +joinpd1("falign-functions="), +joinpd1("fconstexpr-depth="), +joinpd1("fconstexpr-steps="), +joinpd1("ffile-prefix-map="), +joinpd1("fmodule-map-file="), +joinpd1("fobjc-arc-cxxlib="), +jspd1("iwithprefixbefore"), +joinpd1("malign-functions="), +joinpd1("mios-version-min="), +joinpd1("mstack-alignment="), +.{ + .name = "no-cuda-gpu-arch=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +jspd1("working-directory"), +joinpd1("analyzer-output="), +.{ + .name = "config-user-dir=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +joinpd1("debug-info-kind="), +joinpd1("debugger-tuning="), +joinpd1("fcf-runtime-abi="), +joinpd1("finit-character="), +joinpd1("fmax-type-align="), +joinpd1("fmessage-length="), +.{ + .name = "fopenmp-targets=", + .syntax = .comma_joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +joinpd1("fopenmp-version="), +joinpd1("fshow-overloads="), +joinpd1("ftemplate-depth-"), +joinpd1("ftemplate-depth="), +jspd1("fxray-attr-list="), +jspd1("internal-isystem"), +joinpd1("mlinker-version="), +.{ + .name = "print-file-name=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = true, + .psl = false, +}, +.{ + .name = "print-prog-name=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = true, + .psl = false, +}, +jspd1("stdlib++-isystem"), +joinpd1("Rpass-analysis="), +.{ + .name = "Xopenmp-target=", + .syntax = .joined_and_separate, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +.{ + .name = "source-charset:", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "analyzer-output", + .syntax = .joined_or_separate, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "include-prefix=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "undefine-macro=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +joinpd1("analyzer-purge="), +joinpd1("analyzer-store="), +jspd1("current_version"), +joinpd1("fbootclasspath="), +joinpd1("fbracket-depth="), +joinpd1("fcf-protection="), +joinpd1("fdepfile-entry="), +joinpd1("fembed-bitcode="), +joinpd1("finput-charset="), +joinpd1("fmodule-format="), +joinpd1("fms-memptr-rep="), +joinpd1("fnew-alignment="), +joinpd1("frecord-marker="), +.{ + .name = "fsanitize-trap=", + .syntax = .comma_joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +joinpd1("fthinlto-index="), +joinpd1("ftrap-function="), +joinpd1("ftrapv-handler="), +.{ + .name = "hip-device-lib=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +joinpd1("mdynamic-no-pic"), +joinpd1("mframe-pointer="), +joinpd1("mindirect-jump="), +joinpd1("preamble-bytes="), +.{ + .name = "bootclasspath=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "cuda-gpu-arch=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "dependent-lib=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +joinpd1("dwarf-version="), +joinpd1("falign-labels="), +joinpd1("fauto-profile="), +joinpd1("fexec-charset="), +joinpd1("fgnuc-version="), +joinpd1("finit-integer="), +joinpd1("finit-logical="), +joinpd1("finline-limit="), +joinpd1("fobjc-runtime="), +.{ + .name = "gcc-toolchain=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "linker-option=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "malign-branch=", + .syntax = .comma_joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +jspd1("objcxx-isystem"), +joinpd1("vtordisp-mode="), +joinpd1("Rpass-missed="), +joinpd1("Wlarger-than-"), +joinpd1("Wlarger-than="), +.{ + .name = "define-macro=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +joinpd1("ast-dump-all="), +.{ + .name = "autocomplete=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +joinpd1("falign-jumps="), +joinpd1("falign-loops="), +joinpd1("faligned-new="), +joinpd1("ferror-limit="), +joinpd1("ffp-contract="), +joinpd1("fmodule-file="), +joinpd1("fmodule-name="), +joinpd1("fmsc-version="), +.{ + .name = "fno-sanitize=", + .syntax = .comma_joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +joinpd1("fpack-struct="), +joinpd1("fpass-plugin="), +joinpd1("fprofile-dir="), +joinpd1("fprofile-use="), +joinpd1("frandom-seed="), +joinpd1("gsplit-dwarf="), +jspd1("isystem-after"), +joinpd1("malign-jumps="), +joinpd1("malign-loops="), +joinpd1("mimplicit-it="), +jspd1("pagezero_size"), +joinpd1("resource-dir="), +.{ + .name = "dyld-prefix=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "driver-mode=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +joinpd1("fmax-errors="), +joinpd1("fno-builtin-"), +joinpd1("fvisibility="), +joinpd1("fwchar-type="), +jspd1("fxray-modes="), +jspd1("iwithsysroot"), +joinpd1("mhvx-length="), +jspd1("objc-isystem"), +.{ + .name = "rsp-quoting=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +joinpd1("std-default="), +jspd1("sub_umbrella"), +.{ + .name = "Qpar-report", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "Qvec-report", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "errorReport", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "for-linker=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "force-link=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +jspd1("client_name"), +jspd1("cxx-isystem"), +joinpd1("fclasspath="), +joinpd1("finit-real="), +joinpd1("fforce-addr"), +joinpd1("ftls-model="), +jspd1("ivfsoverlay"), +jspd1("iwithprefix"), +joinpd1("mfloat-abi="), +.{ + .name = "plugin-arg-", + .syntax = .joined_and_separate, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +.{ + .name = "ptxas-path=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "save-stats=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = true, + .psl = false, +}, +.{ + .name = "save-temps=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = true, + .psl = false, +}, +joinpd1("stats-file="), +jspd1("sub_library"), +.{ + .name = "CLASSPATH=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "constexpr:", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "classpath=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "cuda-path=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +joinpd1("fencoding="), +joinpd1("ffp-model="), +joinpd1("ffpe-trap="), +joinpd1("flto-jobs="), +.{ + .name = "fsanitize=", + .syntax = .comma_joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +jspd1("iframework"), +joinpd1("mtls-size="), +joinpd1("segs_read_"), +.{ + .name = "unwindlib=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = true, + .psl = false, +}, +.{ + .name = "cgthreads", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "encoding=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "language=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "optimize=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "resource=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +joinpd1("ast-dump="), +jspd1("c-isystem"), +joinpd1("fcoarray="), +joinpd1("fconvert="), +joinpd1("fextdirs="), +joinpd1("ftabstop="), +jspd1("idirafter"), +joinpd1("mregparm="), +jspd1("undefined"), +.{ + .name = "extdirs=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "imacros=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "include=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "sysroot=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +joinpd1("fopenmp="), +joinpd1("fplugin="), +joinpd1("fuse-ld="), +joinpd1("fveclib="), +jspd1("isysroot"), +joinpd1("mcmodel="), +joinpd1("mconsole"), +joinpd1("mfpmath="), +joinpd1("mhwmult="), +joinpd1("mthreads"), +joinpd1("municode"), +joinpd1("mwindows"), +jspd1("seg1addr"), +.{ + .name = "assert=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "mhwdiv=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "output=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "prefix=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "cl-ext=", + .syntax = .comma_joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +joinpd1("cl-std="), +joinpd1("fcheck="), +.{ + .name = "imacros", + .syntax = .joined_or_separate, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = true, + .psl = false, +}, +.{ + .name = "include", + .syntax = .joined_or_separate, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = true, + .psl = false, +}, +jspd1("iprefix"), +jspd1("isystem"), +joinpd1("mhwdiv="), +joinpd1("moslib="), +.{ + .name = "mrecip=", + .syntax = .comma_joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +.{ + .name = "stdlib=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = true, + .psl = false, +}, +.{ + .name = "target=", + .syntax = .joined, + .zig_equivalent = .target, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +joinpd1("triple="), +.{ + .name = "verify=", + .syntax = .comma_joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +joinpd1("Rpass="), +.{ + .name = "Xarch_", + .syntax = .joined_and_separate, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +.{ + .name = "clang:", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "guard:", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "debug=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "param=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +.{ + .name = "warn-=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +joinpd1("fixit="), +joinpd1("gstabs"), +joinpd1("gxcoff"), +jspd1("iquote"), +joinpd1("march="), +joinpd1("mtune="), +.{ + .name = "rtlib=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = true, + .psl = false, +}, +.{ + .name = "specs=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = true, + .psl = false, +}, +joinpd1("weak-l"), +joinpd1("Ofast"), +jspd1("Tdata"), +jspd1("Ttext"), +.{ + .name = "arch:", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "favor", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "imsvc", + .syntax = .joined_or_separate, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "warn-", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = false, + .pd2 = true, + .psl = false, +}, +joinpd1("flto="), +joinpd1("gcoff"), +joinpd1("mabi="), +joinpd1("mabs="), +joinpd1("masm="), +joinpd1("mcpu="), +joinpd1("mfpu="), +joinpd1("mhvx="), +joinpd1("mmcu="), +joinpd1("mnan="), +jspd1("Tbss"), +.{ + .name = "link", + .syntax = .remaining_args_joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "std:", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +joinpd1("ccc-"), +joinpd1("gvms"), +joinpd1("mdll"), +joinpd1("mtp="), +.{ + .name = "std=", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = true, + .psl = false, +}, +.{ + .name = "Wa,", + .syntax = .comma_joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +.{ + .name = "Wl,", + .syntax = .comma_joined, + .zig_equivalent = .wl, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +.{ + .name = "Wp,", + .syntax = .comma_joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +.{ + .name = "RTC", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "Zc:", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "clr", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "doc", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +joinpd1("gz="), +joinpd1("A-"), +joinpd1("G="), +jspd1("MF"), +jspd1("MJ"), +jspd1("MQ"), +jspd1("MT"), +.{ + .name = "AI", + .syntax = .joined_or_separate, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "EH", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "FA", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "FI", + .syntax = .joined_or_separate, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "FR", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "FU", + .syntax = .joined_or_separate, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "Fa", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "Fd", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "Fe", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "Fi", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "Fm", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "Fo", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "Fp", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "Fr", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "Gs", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "MP", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "Tc", + .syntax = .joined_or_separate, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "Tp", + .syntax = .joined_or_separate, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "Yc", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "Yl", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "Yu", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "ZW", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "Zm", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "Zp", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "d2", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "vd", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +jspd1("A"), +jspd1("B"), +jspd1("D"), +jspd1("F"), +jspd1("G"), +jspd1("I"), +jspd1("J"), +jspd1("L"), +joinpd1("O"), +joinpd1("R"), +jspd1("T"), +jspd1("U"), +jspd1("V"), +joinpd1("W"), +joinpd1("X"), +joinpd1("Z"), +.{ + .name = "D", + .syntax = .joined_or_separate, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "F", + .syntax = .joined_or_separate, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "I", + .syntax = .joined_or_separate, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "O", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "U", + .syntax = .joined_or_separate, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "o", + .syntax = .joined_or_separate, + .zig_equivalent = .o, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +.{ + .name = "w", + .syntax = .joined, + .zig_equivalent = .other, + .pd1 = true, + .pd2 = false, + .psl = true, +}, +joinpd1("a"), +jspd1("b"), +joinpd1("d"), +jspd1("e"), +.{ + .name = "l", + .syntax = .joined_or_separate, + .zig_equivalent = .l, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +.{ + .name = "o", + .syntax = .joined_or_separate, + .zig_equivalent = .o, + .pd1 = true, + .pd2 = false, + .psl = false, +}, +jspd1("u"), jspd1("x"), joinpd1("y"), -sepd1("z"), };}; diff --git a/src-self-hosted/stage2.zig b/src-self-hosted/stage2.zig index 23df042cb..73a053b85 100644 --- a/src-self-hosted/stage2.zig +++ b/src-self-hosted/stage2.zig @@ -1239,6 +1239,14 @@ pub const ClangArgIterator = extern struct { other, positional, l, + ignore, + passthrough, + pic, + no_pic, + nostdlib, + shared, + rdynamic, + wl, }; fn init(argv: []const [*:0]const u8) ClangArgIterator { @@ -1282,7 +1290,8 @@ pub const ClangArgIterator = extern struct { break :find_clang_arg; }, .joined, .comma_joined => { - // Example: --target=foo + // joined example: --target=foo + // comma_joined example: -Wl,-soname,libsoundio.so.2 const prefix_len = clang_arg.matchStartsWith(arg); if (prefix_len != 0) { self.zig_equivalent = clang_arg.zig_equivalent; diff --git a/src/main.cpp b/src/main.cpp index f850b0bc4..0bb6868f1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -430,6 +430,7 @@ static int main0(int argc, char **argv) { bool enable_dump_analysis = false; bool enable_doc_generation = false; bool emit_bin = true; + const char *emit_bin_override_path = nullptr; bool emit_asm = false; bool emit_llvm_ir = false; bool emit_h = false; @@ -451,6 +452,7 @@ static int main0(int argc, char **argv) { bool function_sections = false; const char *mcpu = nullptr; CodeModel code_model = CodeModelDefault; + const char *override_soname = nullptr; ZigList llvm_argv = {0}; llvm_argv.append("zig (LLVM option parsing)"); @@ -576,10 +578,14 @@ static int main0(int argc, char **argv) { } else if (argc >= 2 && strcmp(argv[1], "fmt") == 0) { return stage2_fmt(argc, argv); } else if (argc >= 2 && strcmp(argv[1], "cc") == 0) { - const char *o_arg = nullptr; + emit_h = false; + bool c_arg = false; Stage2ClangArgIterator it; stage2_clang_arg_iterator(&it, argc, argv); + bool nostdlib = false; + bool is_shared_lib = false; + ZigList linker_args = {}; while (it.has_next) { if ((err = stage2_clang_arg_next(&it))) { fprintf(stderr, "unable to parse command line parameters: %s\n", err_str(err)); @@ -590,7 +596,8 @@ static int main0(int argc, char **argv) { target_string = it.only_arg; break; case Stage2ClangArgO: // -o - o_arg = it.only_arg; + emit_bin_override_path = it.only_arg; + enable_cache = CacheOptOn; break; case Stage2ClangArgC: // -c c_arg = true; @@ -601,9 +608,17 @@ static int main0(int argc, char **argv) { } break; case Stage2ClangArgPositional: { - CFile *c_file = heap::c_allocator.create(); - c_file->source_path = it.only_arg; - c_source_files.append(c_file); + Buf *arg_buf = buf_create_from_str(it.only_arg); + if (buf_ends_with_str(arg_buf, ".c") || + buf_ends_with_str(arg_buf, ".cpp") || + buf_ends_with_str(arg_buf, ".s")) + { + CFile *c_file = heap::c_allocator.create(); + c_file->source_path = it.only_arg; + c_source_files.append(c_file); + } else { + objects.append(it.only_arg); + } break; } case Stage2ClangArgL: // -l @@ -611,18 +626,111 @@ static int main0(int argc, char **argv) { have_libc = true; link_libs.append(it.only_arg); break; + case Stage2ClangArgIgnore: + break; + case Stage2ClangArgPassthrough: + // Never mind what we're doing, just pass the args directly. For example --help. + return ZigClang_main(argc, argv); + case Stage2ClangArgPIC: + want_pic = WantPICEnabled; + break; + case Stage2ClangArgNoPIC: + want_pic = WantPICDisabled; + break; + case Stage2ClangArgNoStdLib: + nostdlib = true; + break; + case Stage2ClangArgShared: + is_dynamic = true; + is_shared_lib = true; + break; + case Stage2ClangArgRDynamic: + rdynamic = true; + break; + case Stage2ClangArgWL: { + const char *arg = it.only_arg; + for (;;) { + size_t pos = 0; + while (arg[pos] != ',' && arg[pos] != 0) pos += 1; + linker_args.append(buf_create_from_mem(arg, pos)); + if (arg[pos] == 0) break; + arg += pos + 1; + } + break; + } } } + // Parse linker args + for (size_t i = 0; i < linker_args.length; i += 1) { + Buf *arg = linker_args.at(i); + if (buf_eql_str(arg, "-soname")) { + i += 1; + if (i >= linker_args.length) { + fprintf(stderr, "expected linker arg after '%s'\n", buf_ptr(arg)); + return EXIT_FAILURE; + } + Buf *soname_buf = linker_args.at(i); + override_soname = buf_ptr(soname_buf); + // use it as --name + // example: libsoundio.so.2 + size_t prefix = 0; + if (buf_starts_with_str(soname_buf, "lib")) { + prefix = 3; + } + size_t end = buf_len(soname_buf); + if (buf_ends_with_str(soname_buf, ".so")) { + end -= 3; + } else { + bool found_digit = false; + while (end > 0 && isdigit(buf_ptr(soname_buf)[end - 1])) { + found_digit = true; + end -= 1; + } + if (found_digit && end > 0 && buf_ptr(soname_buf)[end - 1] == '.') { + end -= 1; + } else { + end = buf_len(soname_buf); + } + if (buf_ends_with_str(buf_slice(soname_buf, prefix, end), ".so")) { + end -= 3; + } + } + out_name = buf_ptr(buf_slice(soname_buf, prefix, end)); + } else if (buf_eql_str(arg, "-rpath")) { + i += 1; + if (i >= linker_args.length) { + fprintf(stderr, "expected linker arg after '%s'\n", buf_ptr(arg)); + return EXIT_FAILURE; + } + Buf *rpath = linker_args.at(i); + rpath_list.append(buf_ptr(rpath)); + } else { + fprintf(stderr, "warning: unsupported linker arg: %s\n", buf_ptr(arg)); + } + } + + if (!nostdlib && !have_libc) { + have_libc = true; + link_libs.append("c"); + } if (!c_arg) { cmd = CmdBuild; - out_type = OutTypeExe; - if (o_arg == nullptr) { - zig_panic("TODO set out name to a.out"); + if (is_shared_lib) { + out_type = OutTypeLib; + } else { + out_type = OutTypeExe; + } + if (emit_bin_override_path == nullptr) { + emit_bin_override_path = "a.out"; } } else { cmd = CmdBuild; out_type = OutTypeObj; } + if (c_source_files.length == 0 && objects.length == 0) { + // For example `zig cc` and no args should print the "no input files" message. + return ZigClang_main(argc, argv); + } } else for (int i = 1; i < argc; i += 1) { char *arg = argv[i]; @@ -1184,6 +1292,18 @@ static int main0(int argc, char **argv) { buf_out_name = buf_alloc(); os_path_extname(&basename, buf_out_name, nullptr); } + if (need_name && buf_out_name == nullptr && objects.length == 1) { + Buf basename = BUF_INIT; + os_path_split(buf_create_from_str(objects.at(0)), nullptr, &basename); + buf_out_name = buf_alloc(); + os_path_extname(&basename, buf_out_name, nullptr); + } + if (need_name && buf_out_name == nullptr && emit_bin_override_path != nullptr) { + Buf basename = BUF_INIT; + os_path_split(buf_create_from_str(emit_bin_override_path), nullptr, &basename); + buf_out_name = buf_alloc(); + os_path_extname(&basename, buf_out_name, nullptr); + } if (need_name && buf_out_name == nullptr) { fprintf(stderr, "--name [name] not provided and unable to infer\n\n"); @@ -1259,6 +1379,10 @@ static int main0(int argc, char **argv) { g->function_sections = function_sections; g->code_model = code_model; + if (override_soname) { + g->override_soname = buf_create_from_str(override_soname); + } + for (size_t i = 0; i < lib_dirs.length; i += 1) { codegen_add_lib_dir(g, lib_dirs.at(i)); } @@ -1337,7 +1461,14 @@ static int main0(int argc, char **argv) { os_spawn_process(args, &term); return term.code; } else if (cmd == CmdBuild) { - if (g->enable_cache) { + if (emit_bin_override_path != nullptr) { + Buf *dest_path = buf_create_from_str(emit_bin_override_path); + if ((err = os_update_file(&g->bin_file_output_path, dest_path))) { + fprintf(stderr, "unable to copy %s to %s: %s\n", buf_ptr(&g->bin_file_output_path), + buf_ptr(dest_path), err_str(err)); + return main_exit(root_progress_node, EXIT_FAILURE); + } + } else if (g->enable_cache) { #if defined(ZIG_OS_WINDOWS) buf_replace(&g->bin_file_output_path, '/', '\\'); buf_replace(g->output_dir, '/', '\\'); diff --git a/src/stage2.h b/src/stage2.h index 2abdc4c51..6b94f8780 100644 --- a/src/stage2.h +++ b/src/stage2.h @@ -325,6 +325,14 @@ enum Stage2ClangArg { Stage2ClangArgOther, Stage2ClangArgPositional, Stage2ClangArgL, + Stage2ClangArgIgnore, + Stage2ClangArgPassthrough, + Stage2ClangArgPIC, + Stage2ClangArgNoPIC, + Stage2ClangArgNoStdLib, + Stage2ClangArgShared, + Stage2ClangArgRDynamic, + Stage2ClangArgWL, }; // ABI warning diff --git a/tools/update_clang_options.zig b/tools/update_clang_options.zig index 863c67b68..c820ee34a 100644 --- a/tools/update_clang_options.zig +++ b/tools/update_clang_options.zig @@ -38,6 +38,42 @@ const known_options = [_]KnownOpt{ .name = "l", .ident = "l", }, + .{ + .name = "pipe", + .ident = "ignore", + }, + .{ + .name = "help", + .ident = "passthrough", + }, + .{ + .name = "fPIC", + .ident = "pic", + }, + .{ + .name = "fno-PIC", + .ident = "no_pic", + }, + .{ + .name = "nostdlib", + .ident = "nostdlib", + }, + .{ + .name = "no-standard-libraries", + .ident = "nostdlib", + }, + .{ + .name = "shared", + .ident = "shared", + }, + .{ + .name = "rdynamic", + .ident = "rdynamic", + }, + .{ + .name = "Wl,", + .ident = "wl", + }, }; const blacklisted_options = [_][]const u8{}; @@ -110,7 +146,7 @@ pub fn main() anyerror!void { const tree = try parser.parse(json_text); const root_map = &tree.root.Object; - var all_names = std.ArrayList([]const u8).init(allocator); + var all_objects = std.ArrayList(*json.ObjectMap).init(allocator); { var it = root_map.iterator(); it_map: while (it.next()) |kv| { @@ -123,10 +159,12 @@ pub fn main() anyerror!void { if (std.mem.eql(u8, blacklisted_key, kv.key)) continue :it_map; } if (kv.value.Object.get("Name").?.value.String.len == 0) continue; - try all_names.append(kv.key); + try all_objects.append(&kv.value.Object); } } - std.sort.sort([]const u8, all_names.span(), nameLessThan); + // Some options have multiple matches. As an example, "-Wl,foo" matches both + // "W" and "Wl,". So we sort this list in order of descending priority. + std.sort.sort(*json.ObjectMap, all_objects.span(), objectLessThan); var stdout_bos = std.io.bufferedOutStream(std.io.getStdOut().outStream()); const stdout = stdout_bos.outStream(); @@ -138,8 +176,7 @@ pub fn main() anyerror!void { \\ ); - for (all_names.span()) |key| { - const obj = &root_map.get(key).?.value.Object; + for (all_objects.span()) |obj| { const name = obj.get("Name").?.value.String; var pd1 = false; var pd2 = false; @@ -153,61 +190,12 @@ pub fn main() anyerror!void { } else if (std.mem.eql(u8, prefix, "/")) { pslash = true; } else { - std.debug.warn("{} (key {}) has unrecognized prefix '{}'\n", .{ name, key, prefix }); + std.debug.warn("{} has unrecognized prefix '{}'\n", .{ name, prefix }); std.process.exit(1); } } - const num_args = @intCast(u8, obj.get("NumArgs").?.value.Integer); - const syntax_str: []const u8 = blk: { - for (obj.get("!superclasses").?.value.Array.span()) |superclass_json| { - const superclass = superclass_json.String; - if (std.mem.eql(u8, superclass, "Joined")) { - break :blk ".joined"; - } else if (std.mem.eql(u8, superclass, "CLJoined")) { - break :blk ".joined"; - } else if (std.mem.eql(u8, superclass, "CLIgnoredJoined")) { - break :blk ".joined"; - } else if (std.mem.eql(u8, superclass, "CLCompileJoined")) { - break :blk ".joined"; - } else if (std.mem.eql(u8, superclass, "JoinedOrSeparate")) { - break :blk ".joined_or_separate"; - } else if (std.mem.eql(u8, superclass, "CLJoinedOrSeparate")) { - break :blk ".joined_or_separate"; - } else if (std.mem.eql(u8, superclass, "CLCompileJoinedOrSeparate")) { - break :blk ".joined_or_separate"; - } else if (std.mem.eql(u8, superclass, "Flag")) { - break :blk ".flag"; - } else if (std.mem.eql(u8, superclass, "CLFlag")) { - break :blk ".flag"; - } else if (std.mem.eql(u8, superclass, "CLIgnoredFlag")) { - break :blk ".flag"; - } else if (std.mem.eql(u8, superclass, "Separate")) { - break :blk ".separate"; - } else if (std.mem.eql(u8, superclass, "JoinedAndSeparate")) { - break :blk ".joined_and_separate"; - } else if (std.mem.eql(u8, superclass, "CommaJoined")) { - break :blk ".comma_joined"; - } else if (std.mem.eql(u8, superclass, "CLRemainingArgsJoined")) { - break :blk ".remaining_args_joined"; - } else if (std.mem.eql(u8, superclass, "MultiArg")) { - break :blk try std.fmt.allocPrint(allocator, ".{{ .multi_arg = {} }}", .{num_args}); - } - } - if (std.mem.eql(u8, name, "")) { - break :blk ".flag"; - } else if (std.mem.eql(u8, name, "")) { - break :blk ".flag"; - } - const kind_def = obj.get("Kind").?.value.Object.get("def").?.value.String; - if (std.mem.eql(u8, kind_def, "KIND_FLAG")) { - break :blk ".flag"; - } - std.debug.warn("{} (key {}) has unrecognized superclasses:\n", .{ name, key }); - for (obj.get("!superclasses").?.value.Array.span()) |superclass_json| { - std.debug.warn(" {}\n", .{superclass_json.String}); - } - std.process.exit(1); - }; + const syntax = objSyntax(obj); + if (knownOption(name)) |ident| { try stdout.print( \\.{{ @@ -219,22 +207,14 @@ pub fn main() anyerror!void { \\ .psl = {}, \\}}, \\ - , .{ name, syntax_str, ident, pd1, pd2, pslash }); - } else if (pd1 and !pd2 and !pslash and - std.mem.eql(u8, syntax_str, ".flag")) - { + , .{ name, syntax, ident, pd1, pd2, pslash }); + } else if (pd1 and !pd2 and !pslash and syntax == .flag) { try stdout.print("flagpd1(\"{}\"),\n", .{name}); - } else if (pd1 and !pd2 and !pslash and - std.mem.eql(u8, syntax_str, ".joined")) - { + } else if (pd1 and !pd2 and !pslash and syntax == .joined) { try stdout.print("joinpd1(\"{}\"),\n", .{name}); - } else if (pd1 and !pd2 and !pslash and - std.mem.eql(u8, syntax_str, ".joined_or_separate")) - { + } else if (pd1 and !pd2 and !pslash and syntax == .joined_or_separate) { try stdout.print("jspd1(\"{}\"),\n", .{name}); - } else if (pd1 and !pd2 and !pslash and - std.mem.eql(u8, syntax_str, ".separate")) - { + } else if (pd1 and !pd2 and !pslash and syntax == .separate) { try stdout.print("sepd1(\"{}\"),\n", .{name}); } else { try stdout.print( @@ -247,7 +227,7 @@ pub fn main() anyerror!void { \\ .psl = {}, \\}}, \\ - , .{ name, syntax_str, pd1, pd2, pslash }); + , .{ name, syntax, pd1, pd2, pslash }); } } @@ -259,8 +239,142 @@ pub fn main() anyerror!void { try stdout_bos.flush(); } -fn nameLessThan(a: []const u8, b: []const u8) bool { - return std.mem.lessThan(u8, a, b); +// TODO we should be able to import clang_options.zig but currently this is problematic because it will +// import stage2.zig and that causes a bunch of stuff to get exported +const Syntax = union(enum) { + /// A flag with no values. + flag, + + /// An option which prefixes its (single) value. + joined, + + /// An option which is followed by its value. + separate, + + /// An option which is either joined to its (non-empty) value, or followed by its value. + joined_or_separate, + + /// An option which is both joined to its (first) value, and followed by its (second) value. + joined_and_separate, + + /// An option followed by its values, which are separated by commas. + comma_joined, + + /// An option which consumes an optional joined argument and any other remaining arguments. + remaining_args_joined, + + /// An option which is which takes multiple (separate) arguments. + multi_arg: u8, + + pub fn format( + self: Syntax, + comptime fmt: []const u8, + options: std.fmt.FormatOptions, + out_stream: var, + ) !void { + switch (self) { + .multi_arg => |n| return out_stream.print(".{{.{}={}}}", .{ @tagName(self), n }), + else => return out_stream.print(".{}", .{@tagName(self)}), + } + } +}; + +fn objSyntax(obj: *json.ObjectMap) Syntax { + const num_args = @intCast(u8, obj.get("NumArgs").?.value.Integer); + for (obj.get("!superclasses").?.value.Array.span()) |superclass_json| { + const superclass = superclass_json.String; + if (std.mem.eql(u8, superclass, "Joined")) { + return .joined; + } else if (std.mem.eql(u8, superclass, "CLJoined")) { + return .joined; + } else if (std.mem.eql(u8, superclass, "CLIgnoredJoined")) { + return .joined; + } else if (std.mem.eql(u8, superclass, "CLCompileJoined")) { + return .joined; + } else if (std.mem.eql(u8, superclass, "JoinedOrSeparate")) { + return .joined_or_separate; + } else if (std.mem.eql(u8, superclass, "CLJoinedOrSeparate")) { + return .joined_or_separate; + } else if (std.mem.eql(u8, superclass, "CLCompileJoinedOrSeparate")) { + return .joined_or_separate; + } else if (std.mem.eql(u8, superclass, "Flag")) { + return .flag; + } else if (std.mem.eql(u8, superclass, "CLFlag")) { + return .flag; + } else if (std.mem.eql(u8, superclass, "CLIgnoredFlag")) { + return .flag; + } else if (std.mem.eql(u8, superclass, "Separate")) { + return .separate; + } else if (std.mem.eql(u8, superclass, "JoinedAndSeparate")) { + return .joined_and_separate; + } else if (std.mem.eql(u8, superclass, "CommaJoined")) { + return .comma_joined; + } else if (std.mem.eql(u8, superclass, "CLRemainingArgsJoined")) { + return .remaining_args_joined; + } else if (std.mem.eql(u8, superclass, "MultiArg")) { + return .{ .multi_arg = num_args }; + } + } + const name = obj.get("Name").?.value.String; + if (std.mem.eql(u8, name, "")) { + return .flag; + } else if (std.mem.eql(u8, name, "")) { + return .flag; + } + const kind_def = obj.get("Kind").?.value.Object.get("def").?.value.String; + if (std.mem.eql(u8, kind_def, "KIND_FLAG")) { + return .flag; + } + const key = obj.get("!name").?.value.String; + std.debug.warn("{} (key {}) has unrecognized superclasses:\n", .{ name, key }); + for (obj.get("!superclasses").?.value.Array.span()) |superclass_json| { + std.debug.warn(" {}\n", .{superclass_json.String}); + } + std.process.exit(1); +} + +fn syntaxMatchesWithEql(syntax: Syntax) bool { + return switch (syntax) { + .flag, + .separate, + .multi_arg, + => true, + + .joined, + .joined_or_separate, + .joined_and_separate, + .comma_joined, + .remaining_args_joined, + => false, + }; +} + +fn objectLessThan(a: *json.ObjectMap, b: *json.ObjectMap) bool { + // Priority is determined by exact matches first, followed by prefix matches in descending + // length, with key as a final tiebreaker. + const a_syntax = objSyntax(a); + const b_syntax = objSyntax(b); + + const a_match_with_eql = syntaxMatchesWithEql(a_syntax); + const b_match_with_eql = syntaxMatchesWithEql(b_syntax); + + if (a_match_with_eql and !b_match_with_eql) { + return true; + } else if (!a_match_with_eql and b_match_with_eql) { + return false; + } + + if (!a_match_with_eql and !b_match_with_eql) { + const a_name = a.get("Name").?.value.String; + const b_name = b.get("Name").?.value.String; + if (a_name.len != b_name.len) { + return a_name.len > b_name.len; + } + } + + const a_key = a.get("!name").?.value.String; + const b_key = b.get("!name").?.value.String; + return std.mem.lessThan(u8, a_key, b_key); } fn usageAndExit(file: fs.File, arg0: []const u8, code: u8) noreturn {