| author | |
| committer | |
| log | 4b78dbe068445eb37cb28f2f8d1faf5836dc1175 |
| tree | b03b0b028fb3e38fc407db57e94afde7b90612f7 |
| parent | 6a364b4a5e71b971b753d2b62c7708ae1e76d707 |
| signature | Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM |
2 files changed, 20 insertions(+), 4 deletions(-)
src/Compilation.zig+6-4| ... | ... | @@ -5371,10 +5371,12 @@ pub fn addCCArgs( |
| 5371 | 5371 | try argv.append(include_dir); |
| 5372 | 5372 | } |
| 5373 | 5373 | |
| 5374 | if (target.cpu.model.llvm_name) |llvm_name| { | |
| 5375 | try argv.appendSlice(&[_][]const u8{ | |
| 5376 | "-Xclang", "-target-cpu", "-Xclang", llvm_name, | |
| 5377 | }); | |
| 5374 | if (target_util.clangSupportsTargetCpuArg(target)) { | |
| 5375 | if (target.cpu.model.llvm_name) |llvm_name| { | |
| 5376 | try argv.appendSlice(&[_][]const u8{ | |
| 5377 | "-Xclang", "-target-cpu", "-Xclang", llvm_name, | |
| 5378 | }); | |
| 5379 | } | |
| 5378 | 5380 | } |
| 5379 | 5381 | |
| 5380 | 5382 | // It would be really nice if there was a more compact way to communicate this info to Clang. |
src/target.zig+14| ... | ... | @@ -315,6 +315,20 @@ pub fn clangAssemblerSupportsMcpuArg(target: std.Target) bool { |
| 315 | 315 | }; |
| 316 | 316 | } |
| 317 | 317 | |
| 318 | /// Some experimental or poorly-maintained LLVM targets do not properly process CPU models in their | |
| 319 | /// Clang driver code. For these, we should omit the `-Xclang -target-cpu -Xclang <model>` flags. | |
| 320 | pub fn clangSupportsTargetCpuArg(target: std.Target) bool { | |
| 321 | return switch (target.cpu.arch) { | |
| 322 | .arc, | |
| 323 | .msp430, | |
| 324 | .ve, | |
| 325 | .xcore, | |
| 326 | .xtensa, | |
| 327 | => false, | |
| 328 | else => true, | |
| 329 | }; | |
| 330 | } | |
| 331 | ||
| 318 | 332 | pub fn clangSupportsFloatAbiArg(target: std.Target) bool { |
| 319 | 333 | return switch (target.cpu.arch) { |
| 320 | 334 | .arm, |