[IR] Drop inlinePureArguments parameter from FunctionInlining
Replaced its usages with `alwaysCreateTemporaryVariablesForArguments`
This commit is contained in:
@@ -127,6 +127,7 @@ fun IrInlinable.inline(target: IrDeclarationParent, arguments: List<IrValueDecla
|
||||
}
|
||||
}
|
||||
|
||||
// `getAdditionalStatementsFromInlinedBlock` == `getNonDefaultAdditionalStatementsFromInlinedBlock` + `getDefaultAdditionalStatementsFromInlinedBlock`
|
||||
fun IrInlinedFunctionBlock.getAdditionalStatementsFromInlinedBlock(): List<IrStatement> {
|
||||
return this.statements
|
||||
.filterIsInstance<IrComposite>()
|
||||
@@ -146,6 +147,7 @@ fun IrInlinedFunctionBlock.getDefaultAdditionalStatementsFromInlinedBlock(): Lis
|
||||
.singleOrNull { it.origin == INLINED_FUNCTION_DEFAULT_ARGUMENTS }?.statements ?: emptyList()
|
||||
}
|
||||
|
||||
// `IrInlinedFunctionBlock`.statements == `getAdditionalStatementsFromInlinedBlock` + `getOriginalStatementsFromInlinedBlock`
|
||||
fun IrInlinedFunctionBlock.getOriginalStatementsFromInlinedBlock(): List<IrStatement> {
|
||||
return this.statements
|
||||
.filter { it !is IrComposite || !(it.origin == INLINED_FUNCTION_ARGUMENTS || it.origin == INLINED_FUNCTION_DEFAULT_ARGUMENTS) }
|
||||
|
||||
+2
-4
@@ -84,7 +84,6 @@ class FunctionInlining(
|
||||
private val innerClassesSupport: InnerClassesSupport? = null,
|
||||
private val insertAdditionalImplicitCasts: Boolean = false,
|
||||
private val alwaysCreateTemporaryVariablesForArguments: Boolean = false,
|
||||
private val inlinePureArguments: Boolean = true,
|
||||
private val regenerateInlinedAnonymousObjects: Boolean = false,
|
||||
private val inlineArgumentsWithTheirOriginalTypeAndOffset: Boolean = false,
|
||||
private val allowExternalInlining: Boolean = false,
|
||||
@@ -845,8 +844,7 @@ class FunctionInlining(
|
||||
}
|
||||
|
||||
private fun ParameterToArgument.shouldBeSubstitutedViaTemporaryVariable(): Boolean =
|
||||
!(isImmutableVariableLoad && parameter.index >= 0) &&
|
||||
!(argumentExpression.isPure(false, context = context) && inlinePureArguments)
|
||||
!(isImmutableVariableLoad && parameter.index >= 0) && !argumentExpression.isPure(false, context = context)
|
||||
|
||||
private fun createTemporaryVariable(
|
||||
parameter: IrValueParameter,
|
||||
@@ -873,7 +871,7 @@ class FunctionInlining(
|
||||
)
|
||||
|
||||
if (alwaysCreateTemporaryVariablesForArguments) {
|
||||
variable.name = parameter.name
|
||||
variable.name = Name.identifier(parameter.name.asStringStripSpecialMarkers())
|
||||
}
|
||||
|
||||
return variable
|
||||
|
||||
@@ -305,7 +305,7 @@ internal val functionInliningPhase = makeIrModulePhase(
|
||||
|
||||
FunctionInlining(
|
||||
context, JvmInlineFunctionResolver(), context.innerClassesSupport,
|
||||
inlinePureArguments = false,
|
||||
alwaysCreateTemporaryVariablesForArguments = true,
|
||||
regenerateInlinedAnonymousObjects = true,
|
||||
inlineArgumentsWithTheirOriginalTypeAndOffset = true
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user