diff options
author | Vladimir Marko <vmarko@google.com> | 2014-10-13 18:00:28 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2014-10-13 18:00:29 +0000 |
commit | c39eb4aef19b7fe64283fb3ae7ce6d13cd6c8294 (patch) | |
tree | 14850b67072afaa67273c1e9e9b75e8c9c898421 | |
parent | 72ab3cadce5002163783d7b76781b9f26413b773 (diff) | |
parent | 7cd01f5d496c384874ea8c21eafb2b6479833e6a (diff) | |
download | art-c39eb4aef19b7fe64283fb3ae7ce6d13cd6c8294.tar.gz art-c39eb4aef19b7fe64283fb3ae7ce6d13cd6c8294.tar.bz2 art-c39eb4aef19b7fe64283fb3ae7ce6d13cd6c8294.zip |
Merge "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 e907fd1d58..c43d1f78cb 100644 --- a/test/083-compiler-regressions/expected.txt +++ b/test/083-compiler-regressions/expected.txt @@ -16,6 +16,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 8d7bf01192..9c772b9fb0 100644 --- a/test/083-compiler-regressions/src/Main.java +++ b/test/083-compiler-regressions/src/Main.java @@ -38,6 +38,7 @@ public class Main { b13679511Test(); b16177324TestWrapper(); b16230771TestWrapper(); + b17969907TestWrapper(); largeFrameTest(); largeFrameTestFloat(); mulBy1Test(); @@ -977,6 +978,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, |