From 0b6048e7557748be50881d348448af77f53892fc Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 8 Mar 2025 13:07:26 +0000 Subject: Compile Patio mutable data declarations into LLVM IR --- .../compiler/backends/llvm/codegen/PatioToLlvm.java | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java index 4d838b34..a93b9337 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java @@ -170,7 +170,8 @@ public class PatioToLlvm { generateDataElementImmutableDefinition(patioDataElementImmutableDefinition, context); case PatioDataElementMutableDeclaration patioDataElementMutableDeclaration -> - throw new UnsupportedOperationException("TODO"); + // TODO: how to test this? + generateDataElementMutableDeclaration(patioDataElementMutableDeclaration, context); case PatioDataElementMutableDefinition patioDataElementMutableDefinition -> generateDataElementMutableDefinition(patioDataElementMutableDefinition, context); @@ -206,6 +207,23 @@ public class PatioToLlvm { )); } + private static PatioToLlvmModuleContext generateDataElementMutableDeclaration( + PatioDataElementMutableDeclaration patioDataElementMutableDeclaration, + PatioToLlvmModuleContext context + ) { + return context.addTopLevelEntity(new LlvmGlobalDefinition( + patioDataElementMutableDeclaration.name(), + patioDataLayoutToLlvmType( + patioDataElementMutableDeclaration.layout(), + context.target() + ), + Optional.empty(), + false, + false, + true + )); + } + private static PatioToLlvmModuleContext generateDataElementMutableDefinition( PatioDataElementMutableDefinition patioDataElementMutableDefinition, PatioToLlvmModuleContext context -- cgit v1.2.3