diff options
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java | 5 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerNamespaces.java | 11 |
2 files changed, 10 insertions, 6 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java index db0be392..fb0c32ed 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java @@ -86,10 +86,7 @@ public class LlvmCompiler { context = context.addTerminatorInstruction(new LlvmReturn( LlvmCompilerTypes.VALUE_TYPE, - new LlvmOperandPtrToInt( - LlvmCompilerNamespaces.operandNamespaceValue(namespaceName), - LlvmCompilerTypes.VALUE_TYPE - ) + LlvmCompilerNamespaces.operandNamespaceValue(namespaceName) )); var basicBlocks = context.basicBlocks(); var namespaceInitFunction = new LlvmFunctionDefinition( diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerNamespaces.java b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerNamespaces.java index 8b4c7622..ceb263f5 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerNamespaces.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerNamespaces.java @@ -32,7 +32,14 @@ public class LlvmCompilerNamespaces { )); } - public static LlvmVariableGlobal operandNamespaceValue(NamespaceName namespaceName) { + public static LlvmOperand operandNamespaceValue(NamespaceName namespaceName) { + return new LlvmOperandPtrToInt( + LlvmCompilerNamespaces.operandNamespaceStruct(namespaceName), + LlvmCompilerTypes.VALUE_TYPE + ); + } + + public static LlvmOperand operandNamespaceStruct(NamespaceName namespaceName) { return new LlvmVariableGlobal(globalNameNamespaceValue(namespaceName)); } @@ -79,7 +86,7 @@ public class LlvmCompilerNamespaces { return context.addInstruction(new LlvmGetElementPtr( fieldPointer, typeNamespacePointer(namespaceTypeInfo), - operandNamespaceValue(namespaceName), + operandNamespaceStruct(namespaceName), List.of( LlvmTypedOperand.arrayIndex(0), LlvmTypedOperand.structureIndex(namespaceTypeInfo.fieldIndex(fieldName)) |
