about summary refs log tree commit diff
path: root/src/codegen.zig
diff options
context:
space:
mode:
authorBaitinq <[email protected]>2025-03-12 23:54:06 +0100
committerBaitinq <[email protected]>2025-03-12 23:54:06 +0100
commit7ff04ed6bc90d49763d9197a61ffeaee602687df (patch)
treeddb4715decc8079de6322158d2d6bf29102c918d /src/codegen.zig
parentMisc: Link against llvm 20 (diff)
downloadpry-lang-7ff04ed6bc90d49763d9197a61ffeaee602687df.tar.gz
pry-lang-7ff04ed6bc90d49763d9197a61ffeaee602687df.tar.bz2
pry-lang-7ff04ed6bc90d49763d9197a61ffeaee602687df.zip
Codegen: Fix printing of llvm error messages
Diffstat (limited to 'src/codegen.zig')
-rw-r--r--src/codegen.zig19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/codegen.zig b/src/codegen.zig
index c82c1a6..b6941db 100644
--- a/src/codegen.zig
+++ b/src/codegen.zig
@@ -65,11 +65,12 @@ pub const CodeGen = struct {
         // Generate code
         const triple = llvm.LLVMGetDefaultTargetTriple();
         var target_ref: llvm.LLVMTargetRef = undefined;
-        var message: ?[*c]u8 = undefined;
-        const xd = llvm.LLVMGetTargetFromTriple(triple, &target_ref, &message.?);
-        std.debug.print("XD: {any}.\n", .{xd});
-        // std.debug.print("Target output: {any}.\n", .{message});
-        // core.LLVMDisposeMessage(message);
+        var message: [*c]u8 = undefined;
+        var result = llvm.LLVMGetTargetFromTriple(triple, &target_ref, &message);
+        if (result != 0) {
+            std.debug.print("Target output: {s}.\n", .{message});
+            llvm.LLVMDisposeMessage(message.?);
+        }
         const target_machine = llvm.LLVMCreateTargetMachine(
             target_ref,
             triple,
@@ -91,9 +92,11 @@ pub const CodeGen = struct {
         );
         std.debug.print("Object file generated: {s}\n", .{filename});
 
-        _ = llvm.LLVMVerifyModule(self.llvm_module, llvm.LLVMAbortProcessAction, &message.?);
-        // std.debug.print("Verification output: {any}.\n", .{message});
-        // core.LLVMDisposeMessage(message);
+        result = llvm.LLVMVerifyModule(self.llvm_module, llvm.LLVMAbortProcessAction, &message);
+        if (result != 0) {
+            std.debug.print("Verification output: {any}.\n", .{message});
+            llvm.LLVMDisposeMessage(message);
+        }
 
         // Clean up LLVM resources
         defer llvm.LLVMDisposeBuilder(self.builder);