diff options
author | 2015-04-21 16:21:32 +0000 | |
---|---|---|
committer | 2015-04-21 16:21:33 +0000 | |
commit | 0746453bdf87c4d76b646c5bdcea49b7cce0a47e (patch) | |
tree | 7841ad7f0afe7f5a3f422fd3f16d6c40e82f88d8 /test/478-checker-inliner-nested-loop/src/Main.java | |
parent | 4bb014fd8e0aa45b012d56bc4813f18fa295d2b0 (diff) | |
parent | 7d275379bf490a87805852129e3fe2e8afe961e7 (diff) |
Merge "ART: Update loop info of all nested loops when inlining"
Diffstat (limited to 'test/478-checker-inliner-nested-loop/src/Main.java')
-rw-r--r-- | test/478-checker-inliner-nested-loop/src/Main.java | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/test/478-checker-inliner-nested-loop/src/Main.java b/test/478-checker-inliner-nested-loop/src/Main.java new file mode 100644 index 0000000000..df583d9302 --- /dev/null +++ b/test/478-checker-inliner-nested-loop/src/Main.java @@ -0,0 +1,57 @@ +/* +* Copyright (C) 2015 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + + +public class Main { + + public static void assertIntEquals(int expected, int result) { + if (expected != result) { + throw new Error("Expected: " + expected + ", found: " + result); + } + } + + public static int Inline(int x, int y) { + int result; + if (x <= y) { + result = x * y; + } else { + result = 0; + } + return result; + } + + // CHECK-START: int Main.NestedLoop(int, int) inliner (before) + // CHECK-NOT: Mul + + // CHECK-START: int Main.NestedLoop(int, int) inliner (after) + // CHECK: Mul + // CHECK-NOT: Mul + + public static int NestedLoop(int max_x, int max_y) { + int total = 0; + for (int x = 0; x < max_x; ++x) { + for (int y = 0; y < max_y; ++y) { + total += Inline(x, y); + } + } + return total; + } + + public static void main(String[] args) { + assertIntEquals(0, NestedLoop(1, 1)); + assertIntEquals(3, NestedLoop(2, 3)); + } +} |