Interop, backend: remove code avoiding zero-length C arrays

This commit is contained in:
Svyatoslav Scherbina
2016-11-30 13:22:16 +07:00
committed by SvyatoslavScherbina
parent 8dc42bbe35
commit badecf8210
4 changed files with 5 additions and 11 deletions
@@ -319,7 +319,7 @@ fun buildNativeIndexImpl(headerFile: File, args: List<String>): NativeIndex {
indexEntityReference.value = null
}
val commandLineArgs = if (args1.size != 0) nativeHeap.allocArrayOfPointersTo(*args1)[0].ptr else null
val commandLineArgs = nativeHeap.allocArrayOfPointersTo(*args1)[0].ptr
clang_indexSourceFile(indexAction, clientData, callbacks.ptr, IndexerCallbacks.size.toInt(),
0, headerFile.path, commandLineArgs, args1.size, null, 0, null, 0)
@@ -123,7 +123,7 @@ internal class CodeGenerator(override val context: Context) : ContextUtils {
result: String?): LLVMValueRef {
memScoped {
val rargs = if (args.size != 0) allocArrayOf(args)[0].ptr else null
val rargs = allocArrayOf(args)[0].ptr
return LLVMBuildInvoke(builder, llvmFunction, rargs, args.size, then, landingpad, result)!!
}
@@ -131,7 +131,7 @@ internal class CodeGenerator(override val context: Context) : ContextUtils {
fun call(llvmFunction: LLVMValueRef?, args: List<LLVMValueRef?>, result: String?): LLVMValueRef {
memScoped {
val rargs = if (args.size != 0) allocArrayOf(args)[0].ptr else null
val rargs = allocArrayOf(args)[0].ptr
return LLVMBuildCall(builder, llvmFunction, rargs, args.size, result)!!
}
}
@@ -116,7 +116,6 @@ internal fun getLlvmFunctionType(function: FunctionDescriptor): LLVMTypeRef? {
val paramTypes:List<LLVMTypeRef?> = params.map { getLLVMType(it.type) }
extraParam += paramTypes
if (extraParam.size == 0) return LLVMFunctionType(returnType, null, 0, 0)
memScoped {
val paramTypesPtr = allocArrayOf(extraParam)[0].ptr
return LLVMFunctionType(returnType, paramTypesPtr, extraParam.size, 0)
@@ -159,6 +158,6 @@ internal fun ContextUtils.externalGlobal(name: String, type: LLVMTypeRef): LLVMV
internal fun functionType(returnType: LLVMTypeRef?, isVarArg: Boolean = false, vararg paramTypes: LLVMTypeRef?) =
memScoped {
val paramTypesPtr = if (paramTypes.size != 0) allocArrayOf(*paramTypes)[0].ptr else null
val paramTypesPtr = allocArrayOf(*paramTypes)[0].ptr
LLVMFunctionType(returnType, paramTypesPtr, paramTypes.size, if (isVarArg) 1 else 0)!!
}
@@ -64,12 +64,7 @@ internal class RTTIGenerator(override val context: Context) : ContextUtils {
val fieldTypes = fields.map { getLLVMType(it.returnType!!) }.toTypedArray()
memScoped {
val fieldTypesNativeArrayPtr = if (fieldTypes.size > 0) {
allocArrayOf(*fieldTypes)[0].ptr
} else {
null
}
val fieldTypesNativeArrayPtr = allocArrayOf(*fieldTypes)[0].ptr
LLVMStructSetBody(classType, fieldTypesNativeArrayPtr, fieldTypes.size, 0)
}
return classType