translator: fix reassigment, add tests
This commit is contained in:
@@ -134,9 +134,12 @@ class LLVMBuilder(val arm: Boolean) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun copyVariableValue(target: LLVMVariable, source: LLVMVariable) {
|
fun copyVariableValue(target: LLVMVariable, source: LLVMVariable) {
|
||||||
val tmp = getNewVariable(source.type, source.pointer)
|
var from = source
|
||||||
llvmLocalCode.appendln("$tmp = load ${source.getType()} $source, align ${tmp.type.align}")
|
if (source.pointer > 0) {
|
||||||
llvmLocalCode.appendln("store ${target.type} $tmp, ${target.getType()} $target, align ${tmp.type.align}")
|
from = getNewVariable(source.type, source.pointer)
|
||||||
|
llvmLocalCode.appendln("$from = load ${source.getType()} $source, align ${from.type.align}")
|
||||||
|
}
|
||||||
|
llvmLocalCode.appendln("store ${target.type} $from, ${target.getType()} $target, align ${from.type.align}")
|
||||||
}
|
}
|
||||||
|
|
||||||
fun loadArgument(llvmVariable: LLVMVariable, store: Boolean = true): LLVMVariable {
|
fun loadArgument(llvmVariable: LLVMVariable, store: Boolean = true): LLVMVariable {
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
reassigment_0(5) == 6
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
reassigment_1(5) == 7
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
fun reassigment_0(x: Int): Int {
|
||||||
|
var b = x + 1
|
||||||
|
return b
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
fun reassigment_1(x: Int): Int {
|
||||||
|
var a = x
|
||||||
|
a = a + 1
|
||||||
|
var b = a + 1
|
||||||
|
b = b + 1
|
||||||
|
return b
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user