authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-04-07 15:13:33-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-04-08 15:48:27-04:00
logc22a30ac99b9a2b92d9a8e926b9bf0c9dbc3d14e
tree7fd19495c2ba91cc768b4a3aca8c9ff625b40a7d
parentaa45854ec3d94c1b95fb1a5d8e5482a80561b068

zig cc: handle the -r flag

This makes -r treated the same as -c which is to output an object file. Zig's ELF linker code already handles multiple object files into an object file with the -r flag to LLD. closes #11683

3 files changed, 32 insertions(+), 19 deletions(-)

src/clang_options_data.zig+26-18
...@@ -4002,7 +4002,7 @@ flagpd1("malign-double"),...@@ -4002,7 +4002,7 @@ flagpd1("malign-double"),
4002m("maltivec"),4002m("maltivec"),
4003flagpd1("mamdgpu-ieee"),4003flagpd1("mamdgpu-ieee"),
4004m("mamx-bf16"),4004m("mamx-bf16"),
4005flagpd1("mamx-fp16"),4005m("mamx-fp16"),
4006m("mamx-int8"),4006m("mamx-int8"),
4007m("mamx-tile"),4007m("mamx-tile"),
4008flagpd1("marm"),4008flagpd1("marm"),
...@@ -4027,10 +4027,10 @@ m("mavx512vl"),...@@ -4027,10 +4027,10 @@ m("mavx512vl"),
4027m("mavx512vnni"),4027m("mavx512vnni"),
4028m("mavx512vp2intersect"),4028m("mavx512vp2intersect"),
4029m("mavx512vpopcntdq"),4029m("mavx512vpopcntdq"),
4030flagpd1("mavxifma"),4030m("mavxifma"),
4031flagpd1("mavxneconvert"),4031m("mavxneconvert"),
4032m("mavxvnni"),4032m("mavxvnni"),
4033flagpd1("mavxvnniint8"),4033m("mavxvnniint8"),
4034flagpd1("mbackchain"),4034flagpd1("mbackchain"),
4035flagpd1("mbig-endian"),4035flagpd1("mbig-endian"),
4036m("mbmi"),4036m("mbmi"),
...@@ -4039,6 +4039,7 @@ flagpd1("mbranch-likely"),...@@ -4039,6 +4039,7 @@ flagpd1("mbranch-likely"),
4039flagpd1("mbranch-target-enforce"),4039flagpd1("mbranch-target-enforce"),
4040flagpd1("mbranches-within-32B-boundaries"),4040flagpd1("mbranches-within-32B-boundaries"),
4041m("mbulk-memory"),4041m("mbulk-memory"),
4042m("mcabac"),
4042flagpd1("mcheck-zero-division"),4043flagpd1("mcheck-zero-division"),
4043m("mcldemote"),4044m("mcldemote"),
4044m("mclflushopt"),4045m("mclflushopt"),
...@@ -4047,7 +4048,7 @@ m("mclzero"),...@@ -4047,7 +4048,7 @@ m("mclzero"),
4047flagpd1("mcmodel=medany"),4048flagpd1("mcmodel=medany"),
4048flagpd1("mcmodel=medlow"),4049flagpd1("mcmodel=medlow"),
4049m("mcmpb"),4050m("mcmpb"),
4050flagpd1("mcmpccxadd"),4051m("mcmpccxadd"),
4051flagpd1("mcmse"),4052flagpd1("mcmse"),
4052flagpd1("mcode-object-v3"),4053flagpd1("mcode-object-v3"),
4053flagpd1("mconstant-cfstrings"),4054flagpd1("mconstant-cfstrings"),
...@@ -4185,7 +4186,7 @@ m("mno-aes"),...@@ -4185,7 +4186,7 @@ m("mno-aes"),
4185m("mno-altivec"),4186m("mno-altivec"),
4186flagpd1("mno-amdgpu-ieee"),4187flagpd1("mno-amdgpu-ieee"),
4187m("mno-amx-bf16"),4188m("mno-amx-bf16"),
4188flagpd1("mno-amx-fp16"),4189m("mno-amx-fp16"),
4189m("mno-amx-int8"),4190m("mno-amx-int8"),
4190m("mno-amx-tile"),4191m("mno-amx-tile"),
4191m("mno-atomics"),4192m("mno-atomics"),
...@@ -4207,10 +4208,10 @@ m("mno-avx512vl"),...@@ -4207,10 +4208,10 @@ m("mno-avx512vl"),
4207m("mno-avx512vnni"),4208m("mno-avx512vnni"),
4208m("mno-avx512vp2intersect"),4209m("mno-avx512vp2intersect"),
4209m("mno-avx512vpopcntdq"),4210m("mno-avx512vpopcntdq"),
4210flagpd1("mno-avxifma"),4211m("mno-avxifma"),
4211flagpd1("mno-avxneconvert"),4212m("mno-avxneconvert"),
4212m("mno-avxvnni"),4213m("mno-avxvnni"),
4213flagpd1("mno-avxvnniint8"),4214m("mno-avxvnniint8"),
4214flagpd1("mno-backchain"),4215flagpd1("mno-backchain"),
4215m("mno-bmi"),4216m("mno-bmi"),
4216m("mno-bmi2"),4217m("mno-bmi2"),
...@@ -4223,7 +4224,7 @@ m("mno-clflushopt"),...@@ -4223,7 +4224,7 @@ m("mno-clflushopt"),
4223m("mno-clwb"),4224m("mno-clwb"),
4224m("mno-clzero"),4225m("mno-clzero"),
4225m("mno-cmpb"),4226m("mno-cmpb"),
4226flagpd1("mno-cmpccxadd"),4227m("mno-cmpccxadd"),
4227flagpd1("mno-code-object-v3"),4228flagpd1("mno-code-object-v3"),
4228flagpd1("mno-constant-cfstrings"),4229flagpd1("mno-constant-cfstrings"),
4229flagpd1("mno-constructor-aliases"),4230flagpd1("mno-constructor-aliases"),
...@@ -4249,7 +4250,7 @@ flagpd1("mno-fix-cortex-a72-aes-1655431"),...@@ -4249,7 +4250,7 @@ flagpd1("mno-fix-cortex-a72-aes-1655431"),
4249m("mno-float128"),4250m("mno-float128"),
4250m("mno-fma"),4251m("mno-fma"),
4251m("mno-fma4"),4252m("mno-fma4"),
4252flagpd1("mno-fmv"),4253m("mno-fmv"),
4253flagpd1("mno-fp-ret-in-387"),4254flagpd1("mno-fp-ret-in-387"),
4254m("mno-fprnd"),4255m("mno-fprnd"),
4255m("mno-fpu"),4256m("mno-fpu"),
...@@ -4322,13 +4323,13 @@ m("mno-popcntd"),...@@ -4322,13 +4323,13 @@ m("mno-popcntd"),
4322m("mno-power10-vector"),4323m("mno-power10-vector"),
4323m("mno-power8-vector"),4324m("mno-power8-vector"),
4324m("mno-power9-vector"),4325m("mno-power9-vector"),
4325flagpd1("mno-prefetchi"),4326m("mno-prefetchi"),
4326m("mno-prefetchwt1"),4327m("mno-prefetchwt1"),
4327flagpd1("mno-prefixed"),4328flagpd1("mno-prefixed"),
4328m("mno-prfchw"),4329m("mno-prfchw"),
4329m("mno-ptwrite"),4330m("mno-ptwrite"),
4330flagpd1("mno-pure-code"),4331flagpd1("mno-pure-code"),
4331flagpd1("mno-raoint"),4332m("mno-raoint"),
4332m("mno-rdpid"),4333m("mno-rdpid"),
4333m("mno-rdpru"),4334m("mno-rdpru"),
4334m("mno-rdrnd"),4335m("mno-rdrnd"),
...@@ -4438,7 +4439,7 @@ m("mpower10-vector"),...@@ -4438,7 +4439,7 @@ m("mpower10-vector"),
4438m("mcrypto"),4439m("mcrypto"),
4439m("mpower8-vector"),4440m("mpower8-vector"),
4440m("mpower9-vector"),4441m("mpower9-vector"),
4441flagpd1("mprefetchi"),4442m("mprefetchi"),
4442m("mprefetchwt1"),4443m("mprefetchwt1"),
4443flagpd1("mprefixed"),4444flagpd1("mprefixed"),
4444m("mprfchw"),4445m("mprfchw"),
...@@ -4446,7 +4447,7 @@ m("mprivileged"),...@@ -4446,7 +4447,7 @@ m("mprivileged"),
4446m("mptwrite"),4447m("mptwrite"),
4447flagpd1("mpure-code"),4448flagpd1("mpure-code"),
4448flagpd1("mqdsp6-compat"),4449flagpd1("mqdsp6-compat"),
4449flagpd1("mraoint"),4450m("mraoint"),
4450m("mrdpid"),4451m("mrdpid"),
4451m("mrdpru"),4452m("mrdpru"),
4452m("mrdrnd"),4453m("mrdrnd"),
...@@ -4533,9 +4534,9 @@ m("mv67"),...@@ -4533,9 +4534,9 @@ m("mv67"),
4533flagpd1("mv67t"),4534flagpd1("mv67t"),
4534m("mv68"),4535m("mv68"),
4535m("mv69"),4536m("mv69"),
4536flagpd1("mv71"),4537m("mv71"),
4537flagpd1("mv71t"),4538flagpd1("mv71t"),
4538flagpd1("mv73"),4539m("mv73"),
4539m("mvaes"),4540m("mvaes"),
4540m("mvirt"),4541m("mvirt"),
4541m("mvis"),4542m("mvis"),
...@@ -4950,7 +4951,14 @@ flagpd1("print-stats"),...@@ -4950,7 +4951,14 @@ flagpd1("print-stats"),
4950flagpd1("private_bundle"),4951flagpd1("private_bundle"),
4951flagpd1("pthread"),4952flagpd1("pthread"),
4952flagpd1("pthreads"),4953flagpd1("pthreads"),
4953flagpd1("r"),4954.{
4955 .name = "r",
4956 .syntax = .flag,
4957 .zig_equivalent = .r,
4958 .pd1 = true,
4959 .pd2 = false,
4960 .psl = false,
4961},
4954.{4962.{
4955 .name = "rdynamic",4963 .name = "rdynamic",
4956 .syntax = .flag,4964 .syntax = .flag,
src/main.zig+2-1
...@@ -1569,7 +1569,7 @@ fn buildOutputType(...@@ -1569,7 +1569,7 @@ fn buildOutputType(
1569 out_path = it.only_arg;1569 out_path = it.only_arg;
1570 }1570 }
1571 },1571 },
1572 .c => c_out_mode = .object, // -c1572 .c, .r => c_out_mode = .object, // -c or -r
1573 .asm_only => c_out_mode = .assembly, // -S1573 .asm_only => c_out_mode = .assembly, // -S
1574 .preprocess_only => c_out_mode = .preprocessor, // -E1574 .preprocess_only => c_out_mode = .preprocessor, // -E
1575 .emit_llvm => emit_llvm = true,1575 .emit_llvm => emit_llvm = true,
...@@ -5134,6 +5134,7 @@ pub const ClangArgIterator = struct {...@@ -5134,6 +5134,7 @@ pub const ClangArgIterator = struct {
5134 target,5134 target,
5135 o,5135 o,
5136 c,5136 c,
5137 r,
5137 m,5138 m,
5138 x,5139 x,
5139 other,5140 other,
tools/update_clang_options.zig+4
...@@ -34,6 +34,10 @@ const known_options = [_]KnownOpt{...@@ -34,6 +34,10 @@ const known_options = [_]KnownOpt{
34 .name = "c",34 .name = "c",
35 .ident = "c",35 .ident = "c",
36 },36 },
37 .{
38 .name = "r",
39 .ident = "r",
40 },
37 .{41 .{
38 .name = "l",42 .name = "l",
39 .ident = "l",43 .ident = "l",