numeric literal support:

define i32 @kfun:sum(i32) {
entry:
  %a = alloca i32
  store i32 %0, i32* %a
  %tmp1 = load i32, i32* %a
  %tmp0 = add i32 %tmp1, 33
  ret i32 %tmp0
}
This commit is contained in:
Konstantin Anisimov
2016-10-28 12:31:38 +03:00
parent f02e0af5a2
commit 3617161247
@@ -133,6 +133,20 @@ internal class CodeGeneratorVisitor(val context: Context) : IrElementVisitorVoid
}
TODO()
}
is IrConst<*> -> when (value.kind) {
IrConstKind.Null -> TODO() // LLVMConstPointerNull
IrConstKind.Boolean -> TODO()
IrConstKind.Char -> TODO()
IrConstKind.Byte -> return LLVMConstInt(LLVMInt32Type(), (value.value as Byte).toLong(), 1)
IrConstKind.Short -> return LLVMConstInt(LLVMInt32Type(), (value.value as Short).toLong(), 1)
IrConstKind.Int -> return LLVMConstInt(LLVMInt32Type(), (value.value as Int).toLong(), 1)
IrConstKind.Long -> return LLVMConstInt(LLVMInt64Type(), value.value as Long, 1)
IrConstKind.String -> TODO()
IrConstKind.Float -> TODO()
IrConstKind.Double -> TODO()
}
null -> return null
else -> {
TODO()