authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2025-12-04 23:38:36-08:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-03-17 18:57:07+01:00
logb483ec28e389130af63a6924276db6eef8ea4020
treed0cbd6f671b1a6de458c67033d655b6490ecad15
parent47d2e5de90faec1221f61255c36e2be81c9e3db3

tools: better detect '=' in clang options


2 files changed, 54 insertions(+), 13 deletions(-)

src/clang_options_data.zig+53-12
......@@ -1372,7 +1372,7 @@ flagpsl("MT"),
13721372.{
13731373 .name = "fsanitize=address",
13741374 .syntax = .flag,
1375 .zig_equivalent = .other,
1375 .zig_equivalent = .sanitize,
13761376 .pd1 = true,
13771377 .pd2 = false,
13781378 .psl = true,
......@@ -2214,8 +2214,22 @@ flagpd1("nocudalib"),
22142214 .pd2 = true,
22152215 .psl = false,
22162216},
2217flagpd1("mcpu=help"),
2218flagpd1("mtune=help"),
2217.{
2218 .name = "mcpu=help",
2219 .syntax = .flag,
2220 .zig_equivalent = .mcpu,
2221 .pd1 = true,
2222 .pd2 = false,
2223 .psl = false,
2224},
2225.{
2226 .name = "mtune=help",
2227 .syntax = .flag,
2228 .zig_equivalent = .mcpu,
2229 .pd1 = true,
2230 .pd2 = false,
2231 .psl = false,
2232},
22192233flagpd1("integrated-as"),
22202234flagpd1("no-integrated-as"),
22212235flagpd1("fopenmp-is-device"),
......@@ -2365,12 +2379,12 @@ flagpd1("fno-cuda-approx-transcendentals"),
23652379 .pd2 = false,
23662380 .psl = true,
23672381},
2382flagpd1("shared-libasan"),
23682383sepd1("Xmicrosoft-visualc-tools-root"),
23692384sepd1("Xmicrosoft-visualc-tools-version"),
23702385sepd1("Xmicrosoft-windows-sdk-root"),
23712386sepd1("Xmicrosoft-windows-sdk-version"),
23722387sepd1("Xmicrosoft-windows-sys-root"),
2373flagpd1("shared-libasan"),
23742388.{
23752389 .name = "Qembed_debug",
23762390 .syntax = .flag,
......@@ -3204,6 +3218,7 @@ flagpd1("flang-experimental-hlfir"),
32043218flagpd1("flarge-sizes"),
32053219flagpd1("flat_namespace"),
32063220flagpd1("flax-vector-conversions"),
3221flagpd1("fexperimental-lifetime-safety"),
32073222flagpd1("flimit-debug-info"),
32083223flagpd1("flogical-abbreviations"),
32093224flagpd1("floop-interchange"),
......@@ -3216,8 +3231,22 @@ flagpd1("fversion-loops-for-stride"),
32163231 .pd2 = false,
32173232 .psl = false,
32183233},
3219flagpd1("flto=auto"),
3220flagpd1("flto=jobserver"),
3234.{
3235 .name = "flto=auto",
3236 .syntax = .flag,
3237 .zig_equivalent = .lto,
3238 .pd1 = true,
3239 .pd2 = false,
3240 .psl = false,
3241},
3242.{
3243 .name = "flto=jobserver",
3244 .syntax = .flag,
3245 .zig_equivalent = .lto,
3246 .pd1 = true,
3247 .pd2 = false,
3248 .psl = false,
3249},
32213250flagpd1("flto-unit"),
32223251flagpd1("flto-visibility-public-std"),
32233252flagpd1("fmath-errno"),
......@@ -3519,6 +3548,7 @@ flagpd1("fno-keep-static-consts"),
35193548flagpd1("fno-keep-system-includes"),
35203549flagpd1("fno-knr-functions"),
35213550flagpd1("fno-lax-vector-conversions"),
3551flagpd1("fno-experimental-lifetime-safety"),
35223552flagpd1("fno-limit-debug-info"),
35233553flagpd1("fno-logical-abbreviations"),
35243554flagpd1("fno-loop-interchange"),
......@@ -3651,6 +3681,7 @@ flagpd1("fno-profile-values"),
36513681flagpd1("fno-protect-parens"),
36523682flagpd1("fno-pseudo-probe-for-profiling"),
36533683flagpd1("fno-ptrauth-auth-traps"),
3684flagpd1("fno-ptrauth-block-descriptor-pointers"),
36543685flagpd1("fno-ptrauth-calls"),
36553686flagpd1("fno-ptrauth-elf-got"),
36563687flagpd1("fno-ptrauth-function-pointer-type-discrimination"),
......@@ -3972,6 +4003,7 @@ flagpd1("fprofile-values"),
39724003flagpd1("fprotect-parens"),
39734004flagpd1("fpseudo-probe-for-profiling"),
39744005flagpd1("fptrauth-auth-traps"),
4006flagpd1("fptrauth-block-descriptor-pointers"),
39754007flagpd1("fptrauth-calls"),
39764008flagpd1("fptrauth-elf-got"),
39774009flagpd1("fptrauth-function-pointer-type-discrimination"),
......@@ -4503,9 +4535,9 @@ m("maes"),
45034535sepd1("main-file-name"),
45044536flagpd1("maix32"),
45054537flagpd1("maix64"),
4506m("maix-shared-lib-tls-model-opt"),
4507m("maix-small-local-dynamic-tls"),
4508m("maix-small-local-exec-tls"),
4538flagpd1("maix-shared-lib-tls-model-opt"),
4539flagpd1("maix-small-local-dynamic-tls"),
4540flagpd1("maix-small-local-exec-tls"),
45094541flagpd1("maix-struct-return"),
45104542flagpd1("malign-double"),
45114543m("maltivec"),
......@@ -4530,10 +4562,10 @@ flagpd1("massembler-no-warn"),
45304562m("matomics"),
45314563m("mavx"),
45324564flagpd1("mavx10.1"),
4533m("mavx10.1-256"),
4565flagpd1("mavx10.1-256"),
45344566m("mavx10.1-512"),
45354567flagpd1("mavx10.2"),
4536m("mavx10.2-256"),
4568flagpd1("mavx10.2-256"),
45374569m("mavx10.2-512"),
45384570m("mavx2"),
45394571m("mavx512bf16"),
......@@ -4750,7 +4782,7 @@ flagpd1("mno-apxf"),
47504782m("mno-atomics"),
47514783m("mno-avx"),
47524784flagpd1("mno-avx10.1"),
4753m("mno-avx10.1-256"),
4785flagpd1("mno-avx10.1-256"),
47544786m("mno-avx10.1-512"),
47554787flagpd1("mno-avx10.2"),
47564788m("mno-avx2"),
......@@ -6544,6 +6576,14 @@ joinpd1("msmall-data-threshold="),
65446576joinpd1("mvscale-streaming-max="),
65456577joinpd1("mvscale-streaming-min="),
65466578joinpd1("Wlarge-by-value-copy="),
6579.{
6580 .name = "Xthinlto-distributor=",
6581 .syntax = .comma_joined,
6582 .zig_equivalent = .other,
6583 .pd1 = true,
6584 .pd2 = false,
6585 .psl = false,
6586},
65476587joinpd1("analyzer-constraints="),
65486588joinpd1("analyzer-dump-egraph="),
65496589jspd1("compatibility_version"),
......@@ -6562,6 +6602,7 @@ joinpd1("fmodules-prune-after="),
65626602},
65636603joinpd1("fopenmp-target-debug="),
65646604joinpd1("fsanitize-ignorelist="),
6605joinpd1("fthinlto-distributor="),
65656606joinpd1("fzero-call-used-regs="),
65666607jspd1("iframeworkwithsysroot"),
65676608joinpd1("mcode-object-version="),
tools/update_clang_options.zig+1-1
......@@ -593,7 +593,7 @@ const known_options = [_]KnownOpt{
593593const blacklisted_options = [_][]const u8{};
594594
595595fn knownOption(name: []const u8) ?[]const u8 {
596 const chopped_name = if (std.mem.endsWith(u8, name, "=")) name[0 .. name.len - 1] else name;
596 const chopped_name = if (std.mem.indexOfScalar(u8, name, '=')) |idx| name[0..idx] else name;
597597 for (known_options) |item| {
598598 if (std.mem.eql(u8, chopped_name, item.name)) {
599599 return item.ident;