diff options
author | Vladimir Marko <vmarko@google.com> | 2014-10-13 22:09:51 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-10-13 22:09:51 +0000 |
commit | 61357e47ca5381621d73abf3d5683cfd6af4fa78 (patch) | |
tree | 1605cf8308ccf864040e1727fda3de6c12bf5ea9 | |
parent | cc4f8f96227b7d2065103ab775e7e7c9a762e624 (diff) | |
parent | c39eb4aef19b7fe64283fb3ae7ce6d13cd6c8294 (diff) | |
download | art-61357e47ca5381621d73abf3d5683cfd6af4fa78.tar.gz art-61357e47ca5381621d73abf3d5683cfd6af4fa78.tar.bz2 art-61357e47ca5381621d73abf3d5683cfd6af4fa78.zip |
am c39eb4ae: Merge "Add regression test for null check elimination."
* commit 'c39eb4aef19b7fe64283fb3ae7ce6d13cd6c8294':
Add regression test for null check elimination.
-rw-r--r-- | compiler/dex/mir_optimization.cc | 2 | ||||
-rw-r--r-- | test/083-compiler-regressions/expected.txt | 1 | ||||
-rw-r--r-- | test/083-compiler-regressions/src/Main.java | 19 |
3 files changed, 22 insertions, 0 deletions
diff --git a/compiler/dex/mir_optimization.cc b/compiler/dex/mir_optimization.cc index 2ac0b51a89..84c056daf3 100644 --- a/compiler/dex/mir_optimization.cc +++ b/compiler/dex/mir_optimization.cc @@ -929,6 +929,8 @@ bool MIRGraph::EliminateNullChecks(BasicBlock* bb) { mir->optimization_flags |= MIR_IGNORE_NULL_CHECK; } else { // Do the null check. + // TODO: Rewrite the pass to converge first before doing any modifications so that + // we don't lose the MIR_IGNORE_NULL_CHECK here if previously set by some other pass. mir->optimization_flags &= ~MIR_IGNORE_NULL_CHECK; // Mark s_reg as null-checked ssa_regs_to_check->ClearBit(src_sreg); diff --git a/test/083-compiler-regressions/expected.txt b/test/083-compiler-regressions/expected.txt index 5251c17335..51bf8471c5 100644 --- a/test/083-compiler-regressions/expected.txt +++ b/test/083-compiler-regressions/expected.txt @@ -17,6 +17,7 @@ false b13679511Test finishing b16177324TestWrapper caught NPE as expected. b16230771TestWrapper caught NPE as expected. +b17969907TestWrapper caught NPE as expected. largeFrame passes largeFrameFloat passes mulBy1Test passes diff --git a/test/083-compiler-regressions/src/Main.java b/test/083-compiler-regressions/src/Main.java index 8010711725..9ad8ea7b1b 100644 --- a/test/083-compiler-regressions/src/Main.java +++ b/test/083-compiler-regressions/src/Main.java @@ -39,6 +39,7 @@ public class Main { b13679511Test(); b16177324TestWrapper(); b16230771TestWrapper(); + b17969907TestWrapper(); largeFrameTest(); largeFrameTestFloat(); mulBy1Test(); @@ -990,6 +991,24 @@ public class Main { } } + static void b17969907TestWrapper() { + try { + b17969907Test(); + System.out.println("b17969907Test unexpectedly didn't throw NPE."); + } catch (NullPointerException expected) { + System.out.println("b17969907TestWrapper caught NPE as expected."); + } + } + + public static void b17969907Test() { + Integer i = new Integer(1); + int sum = 0; + while (sum < 100) { + sum += i; + i = null; + } + } + static double TooManyArgs( long l00, long l01, |