blob: e4d31021b01cb421f858be4e5d769570f51c1504 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
import "llvm.src";
let codegen = struct {
llvm_module: *void,
llvm_context: *void,
builder: *void,
};
let codegen_init = (alloc: *arena) => *codegen {
LLVMInitializeX86TargetInfo();
LLVMInitializeX86TargetMC();
LLVMInitializeX86Target();
LLVMInitializeX86AsmPrinter();
LLVMInitializeX86AsmParser();
let module = LLVMModuleCreateWithName("module");
let context = LLVMGetGlobalContext();
let builder = LLVMCreateBuilder();
let c = cast(*codegen, arena_alloc(alloc, sizeof(codegen)));
(*c).llvm_module = module;
(*c).llvm_context = context;
(*c).builder = builder;
return c;
};
let codegen_generate = (c: *codegen) => i64 {
return 0;
};
let codegen_compile = (c: *codegen) => i64 {
LLVMDumpModule((*c).llvm_module);
return 0;
};
let codegen_deinit = (c: *codegen) => void {
LLVMDisposeModule((*c).llvm_module);
LLVMShutdown();
LLVMDisposeBuilder((*c).builder);
return;
};
|