Exploit non-null control dependence.

Rationale:
Using the fact that object is non-null in a taken branch
of a object != null test enables the removal of null checks
(as well as some other related optimizations). This CL exposes
many more cases than were detected by the builder alone.
This is in particular useful for Kotlin programs, where the
non-nullable library calls (together with the new always-throws
detection) introduce many dominating object != null tests!

Test: test-art-host test-art-target

Bug: b/63711884

Change-Id: I8df8a750a4184b11f8758e978f09c5181d93ea25
2 files changed