From fca2bd2378a51370e99454cfd38239c06c3c163a Mon Sep 17 00:00:00 2001 From: Alexey Stepanov Date: Thu, 18 Aug 2016 12:56:57 +0300 Subject: [PATCH] translator: fix string name resolving --- .../kotlin/org/kotlinnative/translator/BlockCodegen.kt | 2 +- .../org/kotlinnative/translator/llvm/LLVMBuilder.kt | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt b/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt index 026493ba16d..47e4af61416 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt @@ -124,7 +124,7 @@ abstract class BlockCodegen(val state: TranslationState, val variableManager: Va val receiveValue = state.bindingContext.get(BindingContext.COMPILE_TIME_VALUE, expr) val type = (receiveValue as TypedCompileTimeConstant).type val value = receiveValue.getValue(type) ?: return null - val variable = variableManager.receiveVariable(".str", LLVMStringType(value.toString().length, isLoaded = false), LLVMVariableScope(), pointer = 0) + val variable = variableManager.receiveVariable(".str" + LLVMBuilder.UniqueGenerator.generateUniqueString(), LLVMStringType(value.toString().length, isLoaded = false), LLVMVariableScope(), pointer = 0) codeBuilder.addStringConstant(variable, value.toString()) return variable diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/LLVMBuilder.kt b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/LLVMBuilder.kt index 55041be282c..a500ac262b6 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/LLVMBuilder.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/LLVMBuilder.kt @@ -11,6 +11,14 @@ class LLVMBuilder(val arm: Boolean = false) { private var variableCount = 0 private var labelCount = 0 + object UniqueGenerator { + private var unique = 0 + fun generateUniqueString(): String { + unique += 1 + return ".unique." + unique + } + } + init { initBuilder() }