diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-16 23:20:50 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-16 23:20:50 +0100 |
| commit | 4ff0e8539505a28c26baa10db603c6271ae3a49a (patch) | |
| tree | bbb2475f8a478aef71d30471f0b645c846ccbdb8 /src/main/java | |
| parent | 60a9adc9154d59dfe904ebda4e3de9dc48cdf235 (diff) | |
Make size of LLVM array type optional
Diffstat (limited to 'src/main/java')
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( |
