From 10a3fbf53f984518ad6eed74545e0c4c748c42dc Mon Sep 17 00:00:00 2001 From: Alexey Andreev Date: Tue, 10 Jan 2017 17:47:59 +0300 Subject: [PATCH] JS: disable TemporaryAssignmentElimination, fix KT-15512 --- .../codegen/box/controlStructures/kt9022Return.kt | 3 --- .../kotlin/js/inline/clean/FunctionPostProcessor.kt | 2 +- .../test/optimizer/TemporaryAssignmentEliminationTest.kt | 2 ++ .../js/test/semantics/JsCodegenBoxTestGenerated.java | 8 +------- .../inlineSizeReduction/noDuplicateVariableDeclaration.kt | 2 +- .../box/inlineSizeReduction/propertyAssignment.kt | 2 +- .../testData/box/inlineSizeReduction/returnInlineCall.kt | 2 +- .../testData/box/inlineSizeReduction/valAssignment.kt | 2 +- .../testData/box/inlineSizeReduction/valDeclaration.kt | 2 +- 9 files changed, 9 insertions(+), 16 deletions(-) diff --git a/compiler/testData/codegen/box/controlStructures/kt9022Return.kt b/compiler/testData/codegen/box/controlStructures/kt9022Return.kt index 99f0849c513..f8ec8a28450 100644 --- a/compiler/testData/codegen/box/controlStructures/kt9022Return.kt +++ b/compiler/testData/codegen/box/controlStructures/kt9022Return.kt @@ -1,6 +1,3 @@ -// TODO: muted automatically, investigate should it be ran for JS or not -// IGNORE_BACKEND: JS - fun testOr(b: Boolean): Boolean { return b || return !b; } diff --git a/js/js.inliner/src/org/jetbrains/kotlin/js/inline/clean/FunctionPostProcessor.kt b/js/js.inliner/src/org/jetbrains/kotlin/js/inline/clean/FunctionPostProcessor.kt index 5a59d8f9b18..7835f62aeac 100644 --- a/js/js.inliner/src/org/jetbrains/kotlin/js/inline/clean/FunctionPostProcessor.kt +++ b/js/js.inliner/src/org/jetbrains/kotlin/js/inline/clean/FunctionPostProcessor.kt @@ -20,7 +20,7 @@ import org.jetbrains.kotlin.js.backend.ast.JsFunction class FunctionPostProcessor(root: JsFunction) { val optimizations = listOf( - { TemporaryAssignmentElimination(root.body).apply() }, + //{ TemporaryAssignmentElimination(root.body).apply() }, { RedundantLabelRemoval(root.body).apply() }, { WhileConditionFolding(root.body).apply() }, { DoWhileGuardElimination(root.body).apply() }, diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/optimizer/TemporaryAssignmentEliminationTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/optimizer/TemporaryAssignmentEliminationTest.kt index 2ad278763d4..e2a39d5e1ce 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/optimizer/TemporaryAssignmentEliminationTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/optimizer/TemporaryAssignmentEliminationTest.kt @@ -16,8 +16,10 @@ package org.jetbrains.kotlin.js.test.optimizer +import org.junit.Ignore import org.junit.Test +@Ignore class TemporaryAssignmentEliminationTest : BasicOptimizerTest("temporary-assignment") { @Test fun assignment() = box() diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java index a2cbf709525..9d579919942 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java @@ -4971,13 +4971,7 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { @TestMetadata("kt9022Return.kt") public void testKt9022Return() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/controlStructures/kt9022Return.kt"); - try { - doTest(fileName); - } - catch (Throwable ignore) { - return; - } - throw new AssertionError("Looks like this test can be unmuted. Remove IGNORE_BACKEND directive for that."); + doTest(fileName); } @TestMetadata("kt9022Throw.kt") diff --git a/js/js.translator/testData/box/inlineSizeReduction/noDuplicateVariableDeclaration.kt b/js/js.translator/testData/box/inlineSizeReduction/noDuplicateVariableDeclaration.kt index b5b44d9e045..271281542a6 100644 --- a/js/js.translator/testData/box/inlineSizeReduction/noDuplicateVariableDeclaration.kt +++ b/js/js.translator/testData/box/inlineSizeReduction/noDuplicateVariableDeclaration.kt @@ -1,6 +1,6 @@ package foo -// CHECK_VARS_COUNT: function=test count=2 +// CHECK_VARS_COUNT: function=test count=3 inline fun if1(f: (Int) -> Int, a: Int, b: Int, c: Int): Int { val result = f(a) diff --git a/js/js.translator/testData/box/inlineSizeReduction/propertyAssignment.kt b/js/js.translator/testData/box/inlineSizeReduction/propertyAssignment.kt index 23edffe9ad9..aefc12680ed 100644 --- a/js/js.translator/testData/box/inlineSizeReduction/propertyAssignment.kt +++ b/js/js.translator/testData/box/inlineSizeReduction/propertyAssignment.kt @@ -1,7 +1,7 @@ package foo // CHECK_CONTAINS_NO_CALLS: test except=SumHolder_getInstance -// CHECK_VARS_COUNT: function=test count=1 +// CHECK_VARS_COUNT: function=test count=2 object SumHolder { var sum = 0 diff --git a/js/js.translator/testData/box/inlineSizeReduction/returnInlineCall.kt b/js/js.translator/testData/box/inlineSizeReduction/returnInlineCall.kt index 11bef5562d8..c0e0e38c6d5 100644 --- a/js/js.translator/testData/box/inlineSizeReduction/returnInlineCall.kt +++ b/js/js.translator/testData/box/inlineSizeReduction/returnInlineCall.kt @@ -1,7 +1,7 @@ package foo // CHECK_CONTAINS_NO_CALLS: test -// CHECK_VARS_COUNT: function=test count=0 +// CHECK_VARS_COUNT: function=test count=2 internal inline fun sign(x: Int): Int { if (x < 0) return -1 diff --git a/js/js.translator/testData/box/inlineSizeReduction/valAssignment.kt b/js/js.translator/testData/box/inlineSizeReduction/valAssignment.kt index fa465f6a2ac..4818a8ddcf8 100644 --- a/js/js.translator/testData/box/inlineSizeReduction/valAssignment.kt +++ b/js/js.translator/testData/box/inlineSizeReduction/valAssignment.kt @@ -1,7 +1,7 @@ package foo // CHECK_CONTAINS_NO_CALLS: test -// CHECK_VARS_COUNT: function=test count=1 +// CHECK_VARS_COUNT: function=test count=2 internal inline fun sum(x: Int, y: Int): Int { if (x == 0 || y == 0) return 0 diff --git a/js/js.translator/testData/box/inlineSizeReduction/valDeclaration.kt b/js/js.translator/testData/box/inlineSizeReduction/valDeclaration.kt index dc781650c52..b3efc6458b0 100644 --- a/js/js.translator/testData/box/inlineSizeReduction/valDeclaration.kt +++ b/js/js.translator/testData/box/inlineSizeReduction/valDeclaration.kt @@ -1,7 +1,7 @@ package foo // CHECK_CONTAINS_NO_CALLS: test -// CHECK_VARS_COUNT: function=test count=1 +// CHECK_VARS_COUNT: function=test count=2 internal inline fun sum(x: Int, y: Int): Int { if (x == 0 || y == 0) return 0