diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2021-08-31 22:50:10 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2021-08-31 23:36:25 -0700 |
| commit | 77516af118f219f9d73494c8a1d5df3e23672680 (patch) | |
| tree | b9e6a0ef5556fca556a22ec2dc29610c4ad68041 /src/codegen/llvm.zig | |
| parent | 7efca2e6f51458de8e70a6f5cbbc292026321681 (diff) | |
| download | zig-77516af118f219f9d73494c8a1d5df3e23672680.tar.gz zig-77516af118f219f9d73494c8a1d5df3e23672680.zip | |
stage2: update LLVM backend to for LLVM 13
There was some new code in master branch enumerating all the targets and
a new target was added so we needed to add the glue code.
This commit also introduces some build options to support experimental
LLVM targets.
Diffstat (limited to 'src/codegen/llvm.zig')
| -rw-r--r-- | src/codegen/llvm.zig | 80 |
1 files changed, 61 insertions, 19 deletions
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 4b2de9fd93..2a608945c1 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -7,6 +7,7 @@ const link = @import("../link.zig"); const log = std.log.scoped(.codegen); const math = std.math; +const build_options = @import("build_options"); const Module = @import("../Module.zig"); const TypedValue = @import("../TypedValue.zig"); const Zir = @import("../Zir.zig"); @@ -1969,7 +1970,7 @@ fn initializeLLVMTarget(arch: std.Target.Cpu.Arch) void { llvm.LLVMInitializeAMDGPUAsmPrinter(); llvm.LLVMInitializeAMDGPUAsmParser(); }, - .arm, .armeb => { + .thumb, .thumbeb, .arm, .armeb => { llvm.LLVMInitializeARMTarget(); llvm.LLVMInitializeARMTargetInfo(); llvm.LLVMInitializeARMTargetMC(); @@ -2072,24 +2073,65 @@ fn initializeLLVMTarget(arch: std.Target.Cpu.Arch) void { llvm.LLVMInitializeXCoreTargetInfo(); llvm.LLVMInitializeXCoreTargetMC(); llvm.LLVMInitializeXCoreAsmPrinter(); - // There is no LLVMInitializeXCoreAsmParser function available. + // There is no LLVMInitializeXCoreAsmParser function. }, - .arc => {}, - .csky => {}, - .r600 => {}, - .tce, .tcele => {}, - .thumb, .thumbeb => {}, - .le32, .le64 => {}, - .amdil, .amdil64 => {}, - .hsail, .hsail64 => {}, - .spir, .spir64 => {}, - .kalimba => {}, - .shave => {}, - .renderscript32 => {}, - .renderscript64 => {}, - .ve => {}, - .spu_2 => {}, - .spirv32 => {}, - .spirv64 => {}, + .m68k => { + if (build_options.llvm_has_m68k) { + llvm.LLVMInitializeM68kTarget(); + llvm.LLVMInitializeM68kTargetInfo(); + llvm.LLVMInitializeM68kTargetMC(); + llvm.LLVMInitializeM68kAsmPrinter(); + llvm.LLVMInitializeM68kAsmParser(); + } + }, + .csky => { + if (build_options.llvm_has_csky) { + llvm.LLVMInitializeCSKYTarget(); + llvm.LLVMInitializeCSKYTargetInfo(); + llvm.LLVMInitializeCSKYTargetMC(); + // There is no LLVMInitializeCSKYAsmPrinter function. + llvm.LLVMInitializeCSKYAsmParser(); + } + }, + .ve => { + if (build_options.llvm_has_ve) { + llvm.LLVMInitializeVETarget(); + llvm.LLVMInitializeVETargetInfo(); + llvm.LLVMInitializeVETargetMC(); + llvm.LLVMInitializeVEAsmPrinter(); + llvm.LLVMInitializeVEAsmParser(); + } + }, + .arc => { + if (build_options.llvm_has_arc) { + llvm.LLVMInitializeARCTarget(); + llvm.LLVMInitializeARCTargetInfo(); + llvm.LLVMInitializeARCTargetMC(); + llvm.LLVMInitializeARCAsmPrinter(); + // There is no LLVMInitializeARCAsmParser function. + } + }, + + // LLVM backends that have no initialization functions. + .tce, + .tcele, + .r600, + .le32, + .le64, + .amdil, + .amdil64, + .hsail, + .hsail64, + .shave, + .spir, + .spir64, + .kalimba, + .renderscript32, + .renderscript64, + => {}, + + .spu_2 => unreachable, // LLVM does not support this backend + .spirv32 => unreachable, // LLVM does not support this backend + .spirv64 => unreachable, // LLVM does not support this backend } } |
