From 6a996d14606d974eda89e400fd32f57fffbfaf5b Mon Sep 17 00:00:00 2001 From: Tanner Gooding Date: Sun, 28 Sep 2025 06:49:30 -0700 Subject: [PATCH 1/3] Update dependencies to their latest versions --- Directory.Packages.props | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 7344aac2..0c42f2f1 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -13,9 +13,9 @@ - - - + + + From fed35d3a9b15eaa3c2b2249af02d7e4caecb3fff Mon Sep 17 00:00:00 2001 From: Tanner Gooding Date: Sun, 28 Sep 2025 07:06:33 -0700 Subject: [PATCH 2/3] Make sure JIT tests free allocated functions --- tests/LLVMSharp.UnitTests/IR.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/LLVMSharp.UnitTests/IR.cs b/tests/LLVMSharp.UnitTests/IR.cs index 147a4e2f..62a8db94 100644 --- a/tests/LLVMSharp.UnitTests/IR.cs +++ b/tests/LLVMSharp.UnitTests/IR.cs @@ -35,6 +35,8 @@ public void AddsSigned() var func = engine.GetPointerToGlobal(def); var result = op1 + op2; Assert.That(func(op1, op2), Is.EqualTo(result)); + + engine.FreeMachineCodeForFunction(def); } [Test] @@ -60,6 +62,7 @@ public void ShiftsRight([Range(0, 256)] int op1, [Range(0, 8)] int op2) var func = engine.GetPointerToGlobal(def); var result = op1 >> op2; Assert.That(func(op1, op2), Is.EqualTo(result)); + engine.FreeMachineCodeForFunction(def); } [Test] @@ -85,6 +88,7 @@ public void ComparesGreaterThan([Range(0, 10)] int op1, [Range(0, 10)] int op2) var func = engine.GetPointerToGlobal(def); var result = op1 > op2 ? 1 : 0; Assert.That(func(op1, op2), Is.EqualTo(result)); + engine.FreeMachineCodeForFunction(def); } [Test] @@ -116,6 +120,9 @@ public void CallsFunction([Range(0, 10)] int op1, [Range(0, 10)] int op2) var func = engine.GetPointerToGlobal(entryDef); var result = op1 + op2; Assert.That(func(op1, op2), Is.EqualTo(result)); + + engine.FreeMachineCodeForFunction(entryDef); + engine.FreeMachineCodeForFunction(addDef); } [Test] @@ -139,6 +146,8 @@ public void ReturnsConstant([Range(0, 10)] int input) var engine = module.CreateMCJITCompiler(); var func = engine.GetPointerToGlobal(def); Assert.That(func(), Is.EqualTo(input)); + + engine.FreeMachineCodeForFunction(def); } [Test] @@ -163,5 +172,7 @@ public void ReturnsSizeOf() var engine = module.CreateMCJITCompiler(); var func = engine.GetPointerToGlobal(def); Assert.That(func(), Is.EqualTo(8)); + + engine.FreeMachineCodeForFunction(def); } } From f1a6a9f14507a3e3168f305523ef885cdf839262 Mon Sep 17 00:00:00 2001 From: Tanner Gooding Date: Sun, 28 Sep 2025 07:13:19 -0700 Subject: [PATCH 3/3] Make sure the execution engine is also freed --- tests/LLVMSharp.UnitTests/IR.cs | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/tests/LLVMSharp.UnitTests/IR.cs b/tests/LLVMSharp.UnitTests/IR.cs index 62a8db94..4fb03743 100644 --- a/tests/LLVMSharp.UnitTests/IR.cs +++ b/tests/LLVMSharp.UnitTests/IR.cs @@ -31,12 +31,13 @@ public void AddsSigned() _ = LLVM.InitializeNativeAsmParser(); _ = LLVM.InitializeNativeAsmPrinter(); - var engine = module.CreateMCJITCompiler(); + using var engine = module.CreateMCJITCompiler(); var func = engine.GetPointerToGlobal(def); var result = op1 + op2; Assert.That(func(op1, op2), Is.EqualTo(result)); engine.FreeMachineCodeForFunction(def); + _ = engine.RemoveModule(module); } [Test] @@ -58,11 +59,13 @@ public void ShiftsRight([Range(0, 256)] int op1, [Range(0, 8)] int op2) _ = LLVM.InitializeNativeAsmParser(); _ = LLVM.InitializeNativeAsmPrinter(); - var engine = module.CreateMCJITCompiler(); + using var engine = module.CreateMCJITCompiler(); var func = engine.GetPointerToGlobal(def); var result = op1 >> op2; Assert.That(func(op1, op2), Is.EqualTo(result)); + engine.FreeMachineCodeForFunction(def); + _ = engine.RemoveModule(module); } [Test] @@ -84,11 +87,13 @@ public void ComparesGreaterThan([Range(0, 10)] int op1, [Range(0, 10)] int op2) _ = LLVM.InitializeNativeAsmParser(); _ = LLVM.InitializeNativeAsmPrinter(); - var engine = module.CreateMCJITCompiler(); + using var engine = module.CreateMCJITCompiler(); var func = engine.GetPointerToGlobal(def); var result = op1 > op2 ? 1 : 0; Assert.That(func(op1, op2), Is.EqualTo(result)); + engine.FreeMachineCodeForFunction(def); + _ = engine.RemoveModule(module); } [Test] @@ -116,13 +121,14 @@ public void CallsFunction([Range(0, 10)] int op1, [Range(0, 10)] int op2) _ = LLVM.InitializeNativeAsmParser(); _ = LLVM.InitializeNativeAsmPrinter(); - var engine = module.CreateMCJITCompiler(); + using var engine = module.CreateMCJITCompiler(); var func = engine.GetPointerToGlobal(entryDef); var result = op1 + op2; Assert.That(func(op1, op2), Is.EqualTo(result)); engine.FreeMachineCodeForFunction(entryDef); engine.FreeMachineCodeForFunction(addDef); + _ = engine.RemoveModule(module); } [Test] @@ -143,11 +149,12 @@ public void ReturnsConstant([Range(0, 10)] int input) _ = LLVM.InitializeNativeAsmParser(); _ = LLVM.InitializeNativeAsmPrinter(); - var engine = module.CreateMCJITCompiler(); + using var engine = module.CreateMCJITCompiler(); var func = engine.GetPointerToGlobal(def); Assert.That(func(), Is.EqualTo(input)); engine.FreeMachineCodeForFunction(def); + _ = engine.RemoveModule(module); } [Test] @@ -169,10 +176,11 @@ public void ReturnsSizeOf() _ = LLVM.InitializeNativeAsmParser(); _ = LLVM.InitializeNativeAsmPrinter(); - var engine = module.CreateMCJITCompiler(); + using var engine = module.CreateMCJITCompiler(); var func = engine.GetPointerToGlobal(def); Assert.That(func(), Is.EqualTo(8)); engine.FreeMachineCodeForFunction(def); + _ = engine.RemoveModule(module); } }