aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2025-03-08 13:07:26 +0000
committerMichael Williamson <mike@zwobble.org>2025-03-08 13:07:26 +0000
commit0b6048e7557748be50881d348448af77f53892fc (patch)
tree319ae94cb3c3d13189bd79640b3debb138d27b3d /src/main/java
parentc25a7bd63bc7c056c79f234e86fb4c30fd44f0bf (diff)
Compile Patio mutable data declarations into LLVM IR
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java20
1 files changed, 19 insertions, 1 deletions
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