diff --git a/src/compiler/Frontend.cc b/src/compiler/Frontend.cc
index 3924f45..236ab86 100644
--- a/src/compiler/Frontend.cc
+++ b/src/compiler/Frontend.cc
@@ -763,9 +763,17 @@
   cUnit->numRegs = code_item->registers_size_ - cUnit->numIns;
   cUnit->numOuts = code_item->outs_size_;
 #if defined(ART_USE_QUICK_COMPILER)
-#if defined(TARGET_ARM)
-  cUnit->genBitcode = true;
-#endif
+  // TODO: fix bug and remove this workaround
+  std::string methodName = PrettyMethod(method_idx, dex_file);
+  if ((methodName.find("gdata2.AndroidGDataClient.createAndExecuteMethod")
+      != std::string::npos) || (methodName.find("hG.a") != std::string::npos)
+      || (methodName.find("hT.a(hV, java.lang.String, java.lang.String, java")
+      != std::string::npos) || (methodName.find("AndroidHttpTransport.exchange")
+      != std::string::npos)) {
+    LOG(INFO) << "Skipping bitcode generation for " << methodName;
+  } else {
+    cUnit->genBitcode = true;
+  }
 #endif
   /* Adjust this value accordingly once inlining is performed */
   cUnit->numDalvikRegisters = code_item->registers_size_;
diff --git a/src/compiler/codegen/MethodBitcode.cc b/src/compiler/codegen/MethodBitcode.cc
index b7c4331..3ec4a11 100644
--- a/src/compiler/codegen/MethodBitcode.cc
+++ b/src/compiler/codegen/MethodBitcode.cc
@@ -1298,7 +1298,12 @@
     case Instruction::MOVE_RESULT_WIDE:
     case Instruction::MOVE_RESULT:
     case Instruction::MOVE_RESULT_OBJECT:
+#if defined(TARGET_ARM)
       CHECK(false) << "Unexpected MOVE_RESULT";
+#else
+      UNIMPLEMENTED(WARNING) << "need x86 move-result fusing";
+#endif
+
       break;
 
     case Instruction::MONITOR_ENTER:
@@ -1448,7 +1453,7 @@
       }
       break;
     case Instruction::IPUT:
-      if (rlDest.fp) {
+      if (rlSrc[0].fp) {
         convertIput(cUnit, optFlags, greenland::IntrinsicHelper::HLIPutFloat,
                     rlSrc[0], rlSrc[1], vC);
       } else {
@@ -1477,7 +1482,7 @@
                   rlSrc[0], rlSrc[1], vC);
       break;
     case Instruction::IPUT_WIDE:
-      if (rlDest.fp) {
+      if (rlSrc[0].fp) {
         convertIput(cUnit, optFlags, greenland::IntrinsicHelper::HLIPutDouble,
                     rlSrc[0], rlSrc[1], vC);
       } else {
@@ -1918,11 +1923,13 @@
   arg_iter++;  /* Skip path method */
   for (int i = 0; i < cUnit->numSSARegs; i++) {
     llvm::Value* val;
-    if ((SRegToVReg(cUnit, i) < 0) || cUnit->regLocation[i].highWord) {
+    RegLocation rlTemp = cUnit->regLocation[i];
+    if ((SRegToVReg(cUnit, i) < 0) || rlTemp.highWord) {
       oatInsertGrowableList(cUnit, &cUnit->llvmValues, 0);
     } else if ((i < cUnit->numRegs) ||
                (i >= (cUnit->numRegs + cUnit->numIns))) {
-      llvm::Constant* immValue = cUnit->irb->GetJInt(0);
+      llvm::Constant* immValue = cUnit->regLocation[i].wide ?
+         cUnit->irb->GetJLong(0) : cUnit->irb->GetJInt(0);
       val = emitConst(cUnit, immValue, cUnit->regLocation[i]);
       val->setName(llvmSSAName(cUnit, i));
       oatInsertGrowableList(cUnit, &cUnit->llvmValues, (intptr_t)val);
