Silence a misleading compiler warning.

Now we use this code for wide volatiles, it can't always complain about
the field being unresolved.

Change-Id: Ieb0663d654f8af99890d4925cd8897f5c95c6001
diff --git a/src/compiler/codegen/arm/Thumb2/Gen.cc b/src/compiler/codegen/arm/Thumb2/Gen.cc
index 173aa64..5ef7687 100644
--- a/src/compiler/codegen/arm/Thumb2/Gen.cc
+++ b/src/compiler/codegen/arm/Thumb2/Gen.cc
@@ -37,6 +37,15 @@
     return class_name + "." + field_name;
 }
 
+void warnIfUnresolved(CompilationUnit* cUnit, int fieldIdx, Field* field) {
+  if (field == NULL) {
+    LOG(INFO) << "Field " << fieldNameFromIndex(cUnit->method, fieldIdx)
+              << " unresolved at compile time";
+  } else {
+    // We also use the slow path for wide volatile fields.
+  }
+}
+
 /*
  * Construct an s4 from two consecutive half-words of switch data.
  * This needs to check endianness because the DEX optimizer only swaps
@@ -403,12 +412,11 @@
  * Helper function for Iget/put when field not resolved at compile time.
  * Will trash call temps and return with the field offset in r0.
  */
-STATIC void getFieldOffset(CompilationUnit* cUnit, MIR* mir)
+STATIC void getFieldOffset(CompilationUnit* cUnit, MIR* mir, Field* fieldPtr)
 {
     int fieldIdx = mir->dalvikInsn.vC;
     oatFlushAllRegs(cUnit);
-    LOG(INFO) << "Field " << fieldNameFromIndex(cUnit->method, fieldIdx)
-        << " unresolved at compile time";
+    warnIfUnresolved(cUnit, fieldIdx, fieldPtr);
     oatLockCallTemps(cUnit);  // Explicit register usage
     loadCurrMethodDirect(cUnit, r1);              // arg1 <= Method*
     loadWordDisp(cUnit, r1,
@@ -447,7 +455,7 @@
     RegLocation rlResult;
     RegisterClass regClass = oatRegClassBySize(size);
     if (SLOW_FIELD_PATH || fieldPtr == NULL) {
-        getFieldOffset(cUnit, mir);
+        getFieldOffset(cUnit, mir, fieldPtr);
         // Field offset in r0
         rlObj = loadValue(cUnit, rlObj, kCoreReg);
         rlResult = oatEvalLoc(cUnit, rlDest, regClass, true);
@@ -481,7 +489,7 @@
         GetResolvedField(mir->dalvikInsn.vC);
     RegisterClass regClass = oatRegClassBySize(size);
     if (SLOW_FIELD_PATH || fieldPtr == NULL) {
-        getFieldOffset(cUnit, mir);
+        getFieldOffset(cUnit, mir, fieldPtr);
         // Field offset in r0
         rlObj = loadValue(cUnit, rlObj, kCoreReg);
         rlSrc = loadValue(cUnit, rlSrc, regClass);
@@ -525,7 +533,7 @@
     bool isVolatile = false;
 #endif
     if ((fieldPtr == NULL) || isVolatile) {
-        getFieldOffset(cUnit, mir);
+        getFieldOffset(cUnit, mir, fieldPtr);
         // Field offset in r0
         rlObj = loadValue(cUnit, rlObj, kCoreReg);
         rlResult = oatEvalLoc(cUnit, rlDest, kAnyReg, true);
@@ -563,7 +571,7 @@
     bool isVolatile = false;
 #endif
     if ((fieldPtr == NULL) || isVolatile) {
-        getFieldOffset(cUnit, mir);
+        getFieldOffset(cUnit, mir, fieldPtr);
         // Field offset in r0
         rlObj = loadValue(cUnit, rlObj, kCoreReg);
         rlSrc = loadValueWide(cUnit, rlSrc, kAnyReg);