[IR] Drop inlinePureArguments parameter from FunctionInlining

Replaced its usages with `alwaysCreateTemporaryVariablesForArguments`
This commit is contained in:
Ivan Kylchik
2023-03-29 09:39:52 +02:00
committed by Space Team
parent 2ecbb21a9f
commit 286090a1db
3 changed files with 5 additions and 5 deletions
@@ -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) }
@@ -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
)