Skip to content

Commit 3e7ff06

Browse files
committed
Feature: Verify module before print
1 parent 8ac7e49 commit 3e7ff06

2 files changed

Lines changed: 13 additions & 6 deletions

File tree

src/Backend/LLVM/index.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ class Context {
180180
}
181181
}
182182

183-
export function generateFromFile(file: File) {
183+
export function generateModuleFromFile(file: File): llvm.Module {
184184
const ctx = new Context();
185185

186186
let putsFnType = llvm.FunctionType.get(llvm.Type.getInt32Ty(ctx.llvmContext), [
@@ -200,6 +200,5 @@ export function generateFromFile(file: File) {
200200

201201
irBuilder.createRetVoid();
202202

203-
const ll = ctx.llvmModule.print();
204-
console.log(ll);
203+
return ctx.llvmModule;
205204
}

src/cli.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,19 @@
11

2+
import * as llvm from 'llvm-node';
23
import {parseTypeScript} from './Frontend/TypeScript';
3-
import {generateFromFile} from './Backend/LLVM';
4+
import {generateModuleFromFile} from './Backend/LLVM';
45

56
const ast = parseTypeScript();
67

78
// console.log(ast);
89

9-
const ir = generateFromFile(ast);
10+
llvm.initializeAllTargetInfos();
11+
llvm.initializeAllTargets();
12+
llvm.initializeAllTargetMCs();
13+
llvm.initializeAllAsmParsers();
14+
llvm.initializeAllAsmPrinters();
1015

11-
// console.log(ir);
16+
const llvmModule = generateModuleFromFile(ast);
17+
18+
console.log(llvm.verifyModule(llvmModule));
19+
console.log(llvmModule.print());

0 commit comments

Comments
 (0)