diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-12 21:34:39 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-12 21:34:39 +0100 |
| commit | fa8b7447149e249e2e938757822dee19f569b9b8 (patch) | |
| tree | 43e22aaf3bdc45e4994419cc3193722e5cd17a4f /src/main/java | |
| parent | f0e7b287bb6aa9faf2de68b76889b3fc279e5584 (diff) | |
Add LLVM operand ptrtoint
Diffstat (limited to 'src/main/java')
3 files changed, 21 insertions, 1 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 c9f6b072..caa6c254 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 @@ -71,6 +71,15 @@ public class LlvmIrSerializer { ); builder.append("}"); } + case LlvmOperandPtrToInt ptrToInt -> { + builder.append("ptrtoint ("); + serializeType(ptrToInt.sourceType(), builder); + builder.append(" "); + serializeOperand(ptrToInt.operand(), builder); + builder.append(" to "); + serializeType(ptrToInt.targetType(), builder); + builder.append(")"); + } case LlvmVariable variable -> { serializeVariable(variable, builder); } diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/operands/LlvmOperand.java b/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/operands/LlvmOperand.java index 6f53dab1..b53734fd 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/operands/LlvmOperand.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/operands/LlvmOperand.java @@ -1,4 +1,4 @@ package org.shedlang.compiler.backends.llvm.ir.ast.operands; -public sealed interface LlvmOperand permits LlvmOperandArray, LlvmOperandInt, LlvmOperandStructure, LlvmVariable { +public sealed interface LlvmOperand permits LlvmOperandArray, LlvmOperandInt, LlvmOperandPtrToInt, LlvmOperandStructure, LlvmVariable { } diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/operands/LlvmOperandPtrToInt.java b/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/operands/LlvmOperandPtrToInt.java new file mode 100644 index 00000000..0eddc061 --- /dev/null +++ b/src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/operands/LlvmOperandPtrToInt.java @@ -0,0 +1,11 @@ +package org.shedlang.compiler.backends.llvm.ir.ast.operands; + +import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmType; +import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmTypePointer; + +public record LlvmOperandPtrToInt( + LlvmTypePointer sourceType, + LlvmOperand operand, + LlvmType targetType +) implements LlvmOperand { +} |
