Interop, backend: remove code avoiding zero-length C arrays
This commit is contained in:
committed by
SvyatoslavScherbina
parent
8dc42bbe35
commit
badecf8210
+1
-1
@@ -319,7 +319,7 @@ fun buildNativeIndexImpl(headerFile: File, args: List<String>): NativeIndex {
|
|||||||
indexEntityReference.value = null
|
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(),
|
clang_indexSourceFile(indexAction, clientData, callbacks.ptr, IndexerCallbacks.size.toInt(),
|
||||||
0, headerFile.path, commandLineArgs, args1.size, null, 0, null, 0)
|
0, headerFile.path, commandLineArgs, args1.size, null, 0, null, 0)
|
||||||
|
|||||||
+2
-2
@@ -123,7 +123,7 @@ internal class CodeGenerator(override val context: Context) : ContextUtils {
|
|||||||
result: String?): LLVMValueRef {
|
result: String?): LLVMValueRef {
|
||||||
|
|
||||||
memScoped {
|
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)!!
|
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 {
|
fun call(llvmFunction: LLVMValueRef?, args: List<LLVMValueRef?>, result: String?): LLVMValueRef {
|
||||||
memScoped {
|
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)!!
|
return LLVMBuildCall(builder, llvmFunction, rargs, args.size, result)!!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-2
@@ -116,7 +116,6 @@ internal fun getLlvmFunctionType(function: FunctionDescriptor): LLVMTypeRef? {
|
|||||||
val paramTypes:List<LLVMTypeRef?> = params.map { getLLVMType(it.type) }
|
val paramTypes:List<LLVMTypeRef?> = params.map { getLLVMType(it.type) }
|
||||||
extraParam += paramTypes
|
extraParam += paramTypes
|
||||||
|
|
||||||
if (extraParam.size == 0) return LLVMFunctionType(returnType, null, 0, 0)
|
|
||||||
memScoped {
|
memScoped {
|
||||||
val paramTypesPtr = allocArrayOf(extraParam)[0].ptr
|
val paramTypesPtr = allocArrayOf(extraParam)[0].ptr
|
||||||
return LLVMFunctionType(returnType, paramTypesPtr, extraParam.size, 0)
|
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?) =
|
internal fun functionType(returnType: LLVMTypeRef?, isVarArg: Boolean = false, vararg paramTypes: LLVMTypeRef?) =
|
||||||
memScoped {
|
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)!!
|
LLVMFunctionType(returnType, paramTypesPtr, paramTypes.size, if (isVarArg) 1 else 0)!!
|
||||||
}
|
}
|
||||||
+1
-6
@@ -64,12 +64,7 @@ internal class RTTIGenerator(override val context: Context) : ContextUtils {
|
|||||||
val fieldTypes = fields.map { getLLVMType(it.returnType!!) }.toTypedArray()
|
val fieldTypes = fields.map { getLLVMType(it.returnType!!) }.toTypedArray()
|
||||||
|
|
||||||
memScoped {
|
memScoped {
|
||||||
val fieldTypesNativeArrayPtr = if (fieldTypes.size > 0) {
|
val fieldTypesNativeArrayPtr = allocArrayOf(*fieldTypes)[0].ptr
|
||||||
allocArrayOf(*fieldTypes)[0].ptr
|
|
||||||
} else {
|
|
||||||
null
|
|
||||||
}
|
|
||||||
|
|
||||||
LLVMStructSetBody(classType, fieldTypesNativeArrayPtr, fieldTypes.size, 0)
|
LLVMStructSetBody(classType, fieldTypesNativeArrayPtr, fieldTypes.size, 0)
|
||||||
}
|
}
|
||||||
return classType
|
return classType
|
||||||
|
|||||||
Reference in New Issue
Block a user