From badecf821073d2ba42ba2592b0a0bce26e3f35b6 Mon Sep 17 00:00:00 2001 From: Svyatoslav Scherbina Date: Wed, 30 Nov 2016 13:22:16 +0700 Subject: [PATCH] Interop, backend: remove code avoiding zero-length C arrays --- .../org/jetbrains/kotlin/native/interop/indexer/Indexer.kt | 2 +- .../jetbrains/kotlin/backend/konan/llvm/CodeGenerator.kt | 4 ++-- .../org/jetbrains/kotlin/backend/konan/llvm/LlvmUtils.kt | 3 +-- .../jetbrains/kotlin/backend/konan/llvm/RTTIGenerator.kt | 7 +------ 4 files changed, 5 insertions(+), 11 deletions(-) diff --git a/Interop/Indexer/src/main/kotlin/org/jetbrains/kotlin/native/interop/indexer/Indexer.kt b/Interop/Indexer/src/main/kotlin/org/jetbrains/kotlin/native/interop/indexer/Indexer.kt index 81ab2e5513e..933519467f9 100644 --- a/Interop/Indexer/src/main/kotlin/org/jetbrains/kotlin/native/interop/indexer/Indexer.kt +++ b/Interop/Indexer/src/main/kotlin/org/jetbrains/kotlin/native/interop/indexer/Indexer.kt @@ -319,7 +319,7 @@ fun buildNativeIndexImpl(headerFile: File, args: List): 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) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/CodeGenerator.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/CodeGenerator.kt index 8444440d2a1..ec904591161 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/CodeGenerator.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/CodeGenerator.kt @@ -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, 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)!! } } diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmUtils.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmUtils.kt index 2e5c7311083..1f047e9d797 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmUtils.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmUtils.kt @@ -116,7 +116,6 @@ internal fun getLlvmFunctionType(function: FunctionDescriptor): LLVMTypeRef? { val paramTypes:List = 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)!! } \ No newline at end of file diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/RTTIGenerator.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/RTTIGenerator.kt index a6167ae9771..37af81ad67b 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/RTTIGenerator.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/RTTIGenerator.kt @@ -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