aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-16 23:20:50 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-16 23:20:50 +0100
commit4ff0e8539505a28c26baa10db603c6271ae3a49a (patch)
treebbb2475f8a478aef71d30471f0b645c846ccbdb8 /src/main/java
parent60a9adc9154d59dfe904ebda4e3de9dc48cdf235 (diff)
Make size of LLVM array type optional
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializer.java2
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/types/LlvmTypeArray.java4
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/types/LlvmTypes.java7
3 files changed, 10 insertions, 3 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializer.java b/src/main/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializer.java
index 0c916286..dc6eb3d3 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializer.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializer.java
@@ -191,7 +191,7 @@ public class LlvmIrSerializer {
}
case LlvmTypeArray array -> {
builder.append("[");
- builder.append(array.size());
+ builder.append(array.size().orElse(0));
builder.append(" x ");
serializeType(array.elementType(), builder);
builder.append("]");
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/types/LlvmTypeArray.java b/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/types/LlvmTypeArray.java
index b70755c9..5934d5d8 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/types/LlvmTypeArray.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/types/LlvmTypeArray.java
@@ -1,4 +1,6 @@
package org.shedlang.compiler.backends.llvm.ir.ast.types;
-public record LlvmTypeArray(int size, LlvmType elementType) implements LlvmType {
+import java.util.OptionalInt;
+
+public record LlvmTypeArray(OptionalInt size, LlvmType elementType) implements LlvmType {
}
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/types/LlvmTypes.java b/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/types/LlvmTypes.java
index afa7103f..90a8b1ee 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/types/LlvmTypes.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/types/LlvmTypes.java
@@ -1,6 +1,7 @@
package org.shedlang.compiler.backends.llvm.ir.ast.types;
import java.util.List;
+import java.util.OptionalInt;
public class LlvmTypes {
private LlvmTypes() {
@@ -11,8 +12,12 @@ public class LlvmTypes {
public static final LlvmTypeScalar INT_64 = new LlvmTypeScalar("i64");
public static final LlvmTypeScalar VOID = new LlvmTypeScalar("void");
+ public static LlvmTypeArray array(LlvmType elementType) {
+ return new LlvmTypeArray(OptionalInt.empty(), elementType);
+ }
+
public static LlvmTypeArray array(int size, LlvmType elementType) {
- return new LlvmTypeArray(size, elementType);
+ return new LlvmTypeArray(OptionalInt.of(size), elementType);
}
public static LlvmTypeFunction function(