fix order of CLI args passed to clang
Commit eb3f7d2f37 changed the order of CLI
args passed to clang, making object-specific "extra flags" passed first.
However, these are supposed to be able to override other flags, and this
behavior is exploited by workarounds in mingw.zig to disable LTO.
This commit rectifies the situation by moving extra flags back to being
passed after the call to addCCArgs().
This commit is contained in:
@@ -3758,7 +3758,6 @@ fn updateCObject(comp: *Compilation, c_object: *CObject, c_obj_prog_node: *std.P
|
||||
"clang",
|
||||
c_object.src.src_path,
|
||||
});
|
||||
try argv.appendSlice(c_object.src.extra_flags);
|
||||
|
||||
const ext = classifyFileExt(c_object.src.src_path);
|
||||
|
||||
@@ -3771,6 +3770,7 @@ fn updateCObject(comp: *Compilation, c_object: *CObject, c_obj_prog_node: *std.P
|
||||
comp.disable_c_depfile and comp.clang_passthrough_mode)
|
||||
{
|
||||
try comp.addCCArgs(arena, &argv, ext, null);
|
||||
try argv.appendSlice(c_object.src.extra_flags);
|
||||
|
||||
const out_obj_path = if (comp.bin_file.options.emit) |emit|
|
||||
try emit.directory.join(arena, &.{emit.sub_path})
|
||||
@@ -3811,6 +3811,7 @@ fn updateCObject(comp: *Compilation, c_object: *CObject, c_obj_prog_node: *std.P
|
||||
else
|
||||
try std.fmt.allocPrint(arena, "{s}.d", .{out_obj_path});
|
||||
try comp.addCCArgs(arena, &argv, ext, out_dep_path);
|
||||
try argv.appendSlice(c_object.src.extra_flags);
|
||||
|
||||
try argv.ensureUnusedCapacity(5);
|
||||
switch (comp.clang_preprocessor_mode) {
|
||||
|
||||
Reference in New Issue
Block a user