| author | |
| committer | |
| log | 4b78dbe068445eb37cb28f2f8d1faf5836dc1175 |
| tree | b03b0b028fb3e38fc407db57e94afde7b90612f7 |
| parent | 6a364b4a5e71b971b753d2b62c7708ae1e76d707 |
| signature |
2 files changed, 20 insertions(+), 4 deletions(-)
src/Compilation.zig+6-4| ... | @@ -5371,10 +5371,12 @@ pub fn addCCArgs( | ... | @@ -5371,10 +5371,12 @@ pub fn addCCArgs( |
| 5371 | try argv.append(include_dir); | 5371 | try argv.append(include_dir); |
| 5372 | } | 5372 | } |
| 5373 | 5373 | ||
| 5374 | if (target.cpu.model.llvm_name) |llvm_name| { | 5374 | if (target_util.clangSupportsTargetCpuArg(target)) { |
| 5375 | try argv.appendSlice(&[_][]const u8{ | 5375 | if (target.cpu.model.llvm_name) |llvm_name| { |
| 5376 | "-Xclang", "-target-cpu", "-Xclang", llvm_name, | 5376 | try argv.appendSlice(&[_][]const u8{ |
| 5377 | }); | 5377 | "-Xclang", "-target-cpu", "-Xclang", llvm_name, |
| 5378 | }); | ||
| 5379 | } | ||
| 5378 | } | 5380 | } |
| 5379 | 5381 | ||
| 5380 | // It would be really nice if there was a more compact way to communicate this info to Clang. | 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,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 | pub fn clangSupportsFloatAbiArg(target: std.Target) bool { | 332 | pub fn clangSupportsFloatAbiArg(target: std.Target) bool { |
| 319 | return switch (target.cpu.arch) { | 333 | return switch (target.cpu.arch) { |
| 320 | .arm, | 334 | .arm, |