Fix topological ordering and use it for optimizations.

Use the topological sort order for ClassInitCheckElimination
and NullCheckEliminationAndTypeInference.

Change-Id: I315ca7f300dd11390f48aefebfe988baf91bdcf1
diff --git a/compiler/dex/mir_graph.h b/compiler/dex/mir_graph.h
index 15c0aa4..6c4d8e3 100644
--- a/compiler/dex/mir_graph.h
+++ b/compiler/dex/mir_graph.h
@@ -701,6 +701,7 @@
   void BasicBlockOptimization();
 
   GrowableArray<BasicBlockId>* GetTopologicalSortOrder() {
+    DCHECK(topological_order_ != nullptr);
     return topological_order_;
   }