FoldConstantLowering

This commit is contained in:
Anton Bannykh
2020-01-26 23:01:27 +03:00
committed by Anton Bannykh
parent 0efe2ab00a
commit 94d2a79d2e
@@ -5,10 +5,10 @@
package org.jetbrains.kotlin.backend.common.lower.optimizations package org.jetbrains.kotlin.backend.common.lower.optimizations
import org.jetbrains.kotlin.backend.common.BodyLoweringPass
import org.jetbrains.kotlin.backend.common.CommonBackendContext import org.jetbrains.kotlin.backend.common.CommonBackendContext
import org.jetbrains.kotlin.backend.common.FileLoweringPass
import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase
import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.declarations.IrDeclaration
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.expressions.impl.IrConstImpl import org.jetbrains.kotlin.ir.expressions.impl.IrConstImpl
@@ -39,7 +39,7 @@ val foldConstantLoweringPhase = makeIrFilePhase(
class FoldConstantLowering( class FoldConstantLowering(
private val context: CommonBackendContext, private val context: CommonBackendContext,
// In K/JS Float and Double are the same so Float constant should be fold similar to Double // In K/JS Float and Double are the same so Float constant should be fold similar to Double
private val floatSpecial: Boolean = false) : IrElementTransformerVoid(), FileLoweringPass { private val floatSpecial: Boolean = false) : IrElementTransformerVoid(), BodyLoweringPass {
/** /**
* ID of an binary operator / method. * ID of an binary operator / method.
* *
@@ -243,8 +243,8 @@ class FoldConstantLowering(
} }
@ExperimentalUnsignedTypes @ExperimentalUnsignedTypes
override fun lower(irFile: IrFile) { override fun lower(irBody: IrBody, container: IrDeclaration) {
irFile.transformChildrenVoid(object : IrElementTransformerVoid() { irBody.transformChildrenVoid(object : IrElementTransformerVoid() {
override fun visitCall(expression: IrCall): IrExpression { override fun visitCall(expression: IrCall): IrExpression {
expression.transformChildrenVoid(this) expression.transformChildrenVoid(this)