diff options
| author | 2022-08-17 16:34:40 +0100 | |
|---|---|---|
| committer | 2022-08-23 13:26:35 +0000 | |
| commit | db692461d217e59684baab57abcaf3055fa8ccf5 (patch) | |
| tree | dd080f23ff8619ad9b5cf3ad60b755c982ad5f94 | |
| parent | a8760e28393bdcceba603e8245bb52db369587a0 (diff) | |
Fix typo inversion in GenerateLastValueLinear
In https://android-review.googlesource.com/c/platform/art/+/2162257/3..5
we inverted an if clause but there was a typo when doing so and the
inversion has to be fixed.
Test: art/test/testrunner/testrunner.py --host --64 --optimizing -b
Change-Id: I2ac8f64b832715dede2f7ccca627a0ef102dc0c2
| -rw-r--r-- | compiler/optimizing/induction_var_range.cc | 2 | ||||
| -rw-r--r-- | test/618-checker-induction/src/Main.java | 29 |
2 files changed, 30 insertions, 1 deletions
diff --git a/compiler/optimizing/induction_var_range.cc b/compiler/optimizing/induction_var_range.cc index cc62da848c..7f85483894 100644 --- a/compiler/optimizing/induction_var_range.cc +++ b/compiler/optimizing/induction_var_range.cc @@ -1128,7 +1128,7 @@ bool InductionVarRange::GenerateLastValueLinear(const HBasicBlock* context, DataType::Type type = info->type; // Avoid any narrowing linear induction or any type mismatch between the linear induction and the // trip count expression. - if (HInductionVarAnalysis::IsNarrowingLinear(info) && trip->type == info->type) { + if (HInductionVarAnalysis::IsNarrowingLinear(info) || trip->type != type) { return false; } diff --git a/test/618-checker-induction/src/Main.java b/test/618-checker-induction/src/Main.java index 7f17f30528..824a8dbd17 100644 --- a/test/618-checker-induction/src/Main.java +++ b/test/618-checker-induction/src/Main.java @@ -884,6 +884,32 @@ public class Main { return k; } + /// CHECK-START: long Main.closedLinearInductionUnmatchedTypesNotOptimized() loop_optimization (before) + /// CHECK-DAG: <<Phi1:i\d+>> Phi loop:<<Loop:B\d+>> outer_loop:none + /// CHECK-DAG: <<Phi2:j\d+>> Phi loop:<<Loop>> outer_loop:none + // + /// CHECK-START: long Main.closedLinearInductionUnmatchedTypesNotOptimized() loop_optimization (after) + /// CHECK-DAG: <<Phi1:i\d+>> Phi loop:<<Loop:B\d+>> outer_loop:none + /// CHECK-DAG: <<Phi2:j\d+>> Phi loop:<<Loop>> outer_loop:none + private static long closedLinearInductionUnmatchedTypesNotOptimized() { + long sum = 0; + for (int i = 0; i < 10; ++i) { + ++sum; + } + return sum; + } + + /// CHECK-START: short Main.closedLinearInductionNarrowingNotOptimized() loop_optimization (before) + /// CHECK-DAG: <<Phi1:i\d+>> Phi loop:<<Loop:B\d+>> outer_loop:none + // + /// CHECK-START: short Main.closedLinearInductionNarrowingNotOptimized() loop_optimization (after) + /// CHECK-DAG: <<Phi1:i\d+>> Phi loop:<<Loop:B\d+>> outer_loop:none + private static short closedLinearInductionNarrowingNotOptimized() { + short i = 0; + for (; i < 10; ++i); + return i; + } + public static void main(String[] args) { deadSingleLoop(); deadSingleLoopN(4); @@ -983,6 +1009,9 @@ public class Main { expectEquals(-41, exceptionExitBeforeAdd()); expectEquals(-51, exceptionExitAfterAdd()); + expectEquals(10, closedLinearInductionUnmatchedTypesNotOptimized()); + expectEquals(10, closedLinearInductionNarrowingNotOptimized()); + System.out.println("passed"); } |