From fa8b7447149e249e2e938757822dee19f569b9b8 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 12 Jun 2023 21:34:39 +0100 Subject: Add LLVM operand ptrtoint --- .../shedlang/compiler/backends/llvm/ir/LlvmIrSerializer.java | 9 +++++++++ .../compiler/backends/llvm/ir/ast/operands/LlvmOperand.java | 2 +- .../backends/llvm/ir/ast/operands/LlvmOperandPtrToInt.java | 11 +++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/shedlang/compiler/backends/llvm/ir/ast/operands/LlvmOperandPtrToInt.java (limited to 'src/main/java') 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 { +} -- cgit v1.2.3