| author | |
| committer | |
| log | e88307dc404b5699a0d4c17dd6598519d8e08ed4 |
| tree | 887ce2cf44b65cd3e526acb87886956846f54c26 |
| parent | cb8817473ab408cd0aec25b9def71f864b338be8 |
| signature |
As of LLVM 22, it can produce assembly and object files. No LLD support,
however, so using it is still a bit of a pain.5 files changed, 7 insertions(+), 5 deletions(-)
src/codegen/llvm.zig+1-1| ... | ... | @@ -4813,7 +4813,7 @@ pub fn initializeLLVMTarget(arch: std.Target.Cpu.Arch) void { |
| 4813 | 4813 | bindings.LLVMInitializeXtensaTarget(); |
| 4814 | 4814 | bindings.LLVMInitializeXtensaTargetInfo(); |
| 4815 | 4815 | bindings.LLVMInitializeXtensaTargetMC(); |
| 4816 | // There is no LLVMInitializeXtensaAsmPrinter function. | |
| 4816 | bindings.LLVMInitializeXtensaAsmPrinter(); | |
| 4817 | 4817 | bindings.LLVMInitializeXtensaAsmParser(); |
| 4818 | 4818 | } |
| 4819 | 4819 | }, |
src/codegen/llvm/bindings.zig+1| ... | ... | @@ -279,6 +279,7 @@ pub extern fn LLVMInitializeSystemZAsmPrinter() void; |
| 279 | 279 | pub extern fn LLVMInitializeWebAssemblyAsmPrinter() void; |
| 280 | 280 | pub extern fn LLVMInitializeX86AsmPrinter() void; |
| 281 | 281 | pub extern fn LLVMInitializeXCoreAsmPrinter() void; |
| 282 | pub extern fn LLVMInitializeXtensaAsmPrinter() void; | |
| 282 | 283 | pub extern fn LLVMInitializeM68kAsmPrinter() void; |
| 283 | 284 | pub extern fn LLVMInitializeVEAsmPrinter() void; |
| 284 | 285 | pub extern fn LLVMInitializeARCAsmPrinter() void; |
src/link/Lld.zig+2-1| ... | ... | @@ -812,7 +812,8 @@ fn elfLink(lld: *Lld, arena: Allocator) !void { |
| 812 | 812 | target.cpu.arch == .m68k or |
| 813 | 813 | target.cpu.arch.isSPARC() or |
| 814 | 814 | target.cpu.arch == .ve or |
| 815 | target.cpu.arch == .xcore)) | |
| 815 | target.cpu.arch == .xcore or | |
| 816 | target.cpu.arch == .xtensa)) | |
| 816 | 817 | { |
| 817 | 818 | // In this case we must do a simple file copy |
| 818 | 819 | // here. TODO: think carefully about how we can avoid this redundant operation when doing |
src/target.zig+1-1| ... | ... | @@ -227,11 +227,11 @@ pub fn hasLlvmSupport(target: *const std.Target, ofmt: std.Target.ObjectFormat) |
| 227 | 227 | .wasm32, |
| 228 | 228 | .wasm64, |
| 229 | 229 | .ve, |
| 230 | .xtensa, | |
| 230 | 231 | => true, |
| 231 | 232 | |
| 232 | 233 | // LLVM backend exists but can produce neither assembly nor object files. |
| 233 | 234 | .csky, |
| 234 | .xtensa, | |
| 235 | 235 | => false, |
| 236 | 236 | |
| 237 | 237 | // Third-party LLVM backend exists. |
test/llvm_targets.zig+2-2| ... | ... | @@ -344,8 +344,8 @@ const targets = [_]std.Target.Query{ |
| 344 | 344 | |
| 345 | 345 | .{ .cpu_arch = .xcore, .os_tag = .freestanding, .abi = .none }, |
| 346 | 346 | |
| 347 | // .{ .cpu_arch = .xtensa, .os_tag = .freestanding, .abi = .none }, | |
| 348 | // .{ .cpu_arch = .xtensa, .os_tag = .linux, .abi = .none }, | |
| 347 | .{ .cpu_arch = .xtensa, .os_tag = .freestanding, .abi = .none }, | |
| 348 | .{ .cpu_arch = .xtensa, .os_tag = .linux, .abi = .none }, | |
| 349 | 349 | }; |
| 350 | 350 | |
| 351 | 351 | pub fn addCases( |