[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> { fun IrInlinedFunctionBlock.getAdditionalStatementsFromInlinedBlock(): List<IrStatement> {
return this.statements return this.statements
.filterIsInstance<IrComposite>() .filterIsInstance<IrComposite>()
@@ -146,6 +147,7 @@ fun IrInlinedFunctionBlock.getDefaultAdditionalStatementsFromInlinedBlock(): Lis
.singleOrNull { it.origin == INLINED_FUNCTION_DEFAULT_ARGUMENTS }?.statements ?: emptyList() .singleOrNull { it.origin == INLINED_FUNCTION_DEFAULT_ARGUMENTS }?.statements ?: emptyList()
} }
// `IrInlinedFunctionBlock`.statements == `getAdditionalStatementsFromInlinedBlock` + `getOriginalStatementsFromInlinedBlock`
fun IrInlinedFunctionBlock.getOriginalStatementsFromInlinedBlock(): List<IrStatement> { fun IrInlinedFunctionBlock.getOriginalStatementsFromInlinedBlock(): List<IrStatement> {
return this.statements return this.statements
.filter { it !is IrComposite || !(it.origin == INLINED_FUNCTION_ARGUMENTS || it.origin == INLINED_FUNCTION_DEFAULT_ARGUMENTS) } .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 innerClassesSupport: InnerClassesSupport? = null,
private val insertAdditionalImplicitCasts: Boolean = false, private val insertAdditionalImplicitCasts: Boolean = false,
private val alwaysCreateTemporaryVariablesForArguments: Boolean = false, private val alwaysCreateTemporaryVariablesForArguments: Boolean = false,
private val inlinePureArguments: Boolean = true,
private val regenerateInlinedAnonymousObjects: Boolean = false, private val regenerateInlinedAnonymousObjects: Boolean = false,
private val inlineArgumentsWithTheirOriginalTypeAndOffset: Boolean = false, private val inlineArgumentsWithTheirOriginalTypeAndOffset: Boolean = false,
private val allowExternalInlining: Boolean = false, private val allowExternalInlining: Boolean = false,
@@ -845,8 +844,7 @@ class FunctionInlining(
} }
private fun ParameterToArgument.shouldBeSubstitutedViaTemporaryVariable(): Boolean = private fun ParameterToArgument.shouldBeSubstitutedViaTemporaryVariable(): Boolean =
!(isImmutableVariableLoad && parameter.index >= 0) && !(isImmutableVariableLoad && parameter.index >= 0) && !argumentExpression.isPure(false, context = context)
!(argumentExpression.isPure(false, context = context) && inlinePureArguments)
private fun createTemporaryVariable( private fun createTemporaryVariable(
parameter: IrValueParameter, parameter: IrValueParameter,
@@ -873,7 +871,7 @@ class FunctionInlining(
) )
if (alwaysCreateTemporaryVariablesForArguments) { if (alwaysCreateTemporaryVariablesForArguments) {
variable.name = parameter.name variable.name = Name.identifier(parameter.name.asStringStripSpecialMarkers())
} }
return variable return variable
@@ -305,7 +305,7 @@ internal val functionInliningPhase = makeIrModulePhase(
FunctionInlining( FunctionInlining(
context, JvmInlineFunctionResolver(), context.innerClassesSupport, context, JvmInlineFunctionResolver(), context.innerClassesSupport,
inlinePureArguments = false, alwaysCreateTemporaryVariablesForArguments = true,
regenerateInlinedAnonymousObjects = true, regenerateInlinedAnonymousObjects = true,
inlineArgumentsWithTheirOriginalTypeAndOffset = true inlineArgumentsWithTheirOriginalTypeAndOffset = true
) )