[Codegen] Do not emit unneeded external accessor declarations
This commit is contained in:
committed by
Sergey Bogolepov
parent
9b5513ca37
commit
eec5547213
+4
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.ir.types.isUnit
|
||||
import org.jetbrains.kotlin.ir.util.*
|
||||
import org.jetbrains.kotlin.resolve.annotations.argumentValue
|
||||
import org.jetbrains.kotlin.resolve.constants.StringValue
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
/**
|
||||
@@ -293,3 +294,6 @@ fun IrFunction.externalSymbolOrThrow(): String? {
|
||||
}
|
||||
|
||||
val IrFunction.isBuiltInOperator get() = origin == IrBuiltIns.BUILTIN_OPERATOR
|
||||
|
||||
fun IrDeclaration.isFromMetadataInteropLibrary() =
|
||||
descriptor.module.isFromInteropLibrary()
|
||||
+3
@@ -340,6 +340,9 @@ private class DeclarationsGeneratorVisitor(override val context: Context) :
|
||||
|
||||
val llvmFunction = if (declaration.isExternal) {
|
||||
if (declaration.isTypedIntrinsic || declaration.isObjCBridgeBased()
|
||||
// All call-sites to external accessors to interop properties
|
||||
// are lowered by InteropLowering.
|
||||
|| (declaration.isAccessor && declaration.isFromMetadataInteropLibrary())
|
||||
|| declaration.annotations.hasAnnotation(RuntimeNames.cCall)) return
|
||||
|
||||
context.llvm.externalFunction(declaration.symbolName, llvmFunctionType,
|
||||
|
||||
Reference in New Issue
Block a user