Null check elimination improvement

See b/10862777

Improves the null check elimination pass by tracking visibility
of object definitions, rather than successful uses of object
dereferences.  For boot class path, increases static null
check elimination success rate from 98.4% to 98.6%.  Reduces
size of boot.oat by ~300K bytes.

Fixes loop nesting depth computation, which is used by register
promotion, and tweaked the heuristics.

Fixes a bug in verbose listing output in which a basic block
id is directly dereferenced, rather than first being converted
to a pointer.

Change-Id: Id01c20b533cdb12ea8fc4be576438407d0a34cec
4 files changed