[Compiler] Add object ref discovery

Previously, the compiler ran a type inference pass to identify floating
point uses for register allocation.  The grand plan involves moving
all type inference into the Art compiler driver (using the results from
verification).  As a short-term workaround, this CL adds object reference
discovery to the type inference pass.  This is needed for LLVM-IR generation.

Change-Id: I655806264181bfd26ab9340582a02c657cd3f678
diff --git a/src/compiler/Dataflow.h b/src/compiler/Dataflow.h
index 941b544..9ac54d5 100644
--- a/src/compiler/Dataflow.h
+++ b/src/compiler/Dataflow.h
@@ -26,17 +26,14 @@
   kUA = 0,
   kUB,
   kUC,
-  kUAWide,
-  kUBWide,
-  kUCWide,
+  kAWide,
+  kBWide,
+  kCWide,
   kDA,
-  kDAWide,
   kIsMove,
-  kIsLinear,
   kSetsConst,
   kFormat35c,
   kFormat3rc,
-  kPhi,
   kNullCheckSrc0,        // Null check of uses[0]
   kNullCheckSrc1,        // Null check of uses[1]
   kNullCheckSrc2,        // Null check of uses[2]
@@ -54,6 +51,9 @@
   kCoreA,
   kCoreB,
   kCoreC,
+  kRefA,
+  kRefB,
+  kRefC,
   kUsesMethodStar,       // Implicit use of Method*
 };
 
@@ -61,17 +61,14 @@
 #define DF_UA                   (1 << kUA)
 #define DF_UB                   (1 << kUB)
 #define DF_UC                   (1 << kUC)
-#define DF_UA_WIDE              (1 << kUAWide)
-#define DF_UB_WIDE              (1 << kUBWide)
-#define DF_UC_WIDE              (1 << kUCWide)
+#define DF_A_WIDE               (1 << kAWide)
+#define DF_B_WIDE               (1 << kBWide)
+#define DF_C_WIDE               (1 << kCWide)
 #define DF_DA                   (1 << kDA)
-#define DF_DA_WIDE              (1 << kDAWide)
 #define DF_IS_MOVE              (1 << kIsMove)
-#define DF_IS_LINEAR            (1 << kIsLinear)
 #define DF_SETS_CONST           (1 << kSetsConst)
 #define DF_FORMAT_35C           (1 << kFormat35c)
 #define DF_FORMAT_3RC           (1 << kFormat3rc)
-#define DF_PHI                  (1 << kPhi)
 #define DF_NULL_CHK_0           (1 << kNullCheckSrc0)
 #define DF_NULL_CHK_1           (1 << kNullCheckSrc1)
 #define DF_NULL_CHK_2           (1 << kNullCheckSrc2)
@@ -89,12 +86,14 @@
 #define DF_CORE_A               (1 << kCoreA)
 #define DF_CORE_B               (1 << kCoreB)
 #define DF_CORE_C               (1 << kCoreC)
+#define DF_REF_A                (1 << kRefA)
+#define DF_REF_B                (1 << kRefB)
+#define DF_REF_C                (1 << kRefC)
 #define DF_UMS                  (1 << kUsesMethodStar)
 
-#define DF_HAS_USES             (DF_UA | DF_UB | DF_UC | DF_UA_WIDE | \
-                                 DF_UB_WIDE | DF_UC_WIDE)
+#define DF_HAS_USES             (DF_UA | DF_UB | DF_UC)
 
-#define DF_HAS_DEFS             (DF_DA | DF_DA_WIDE)
+#define DF_HAS_DEFS             (DF_DA)
 
 #define DF_HAS_NULL_CHKS        (DF_NULL_CHK_0 | \
                                  DF_NULL_CHK_1 | \
@@ -105,9 +104,9 @@
                                  DF_RANGE_CHK_1 | \
                                  DF_RANGE_CHK_2)
 
-#define DF_A_IS_REG             (DF_UA | DF_UA_WIDE | DF_DA | DF_DA_WIDE)
-#define DF_B_IS_REG             (DF_UB | DF_UB_WIDE)
-#define DF_C_IS_REG             (DF_UC | DF_UC_WIDE)
+#define DF_A_IS_REG             (DF_UA | DF_DA)
+#define DF_B_IS_REG             (DF_UB)
+#define DF_C_IS_REG             (DF_UC)
 #define DF_IS_GETTER_OR_SETTER  (DF_IS_GETTER | DF_IS_SETTER)
 #define DF_USES_FP              (DF_FP_A | DF_FP_B | DF_FP_C)