Fix LoadValueWide to not call MarkLive for high reg that is equal to low reg

For x86 double FP registers, LoadValueWide should not call MarkLive for
high reg that is equal to low reg.

Change-Id: Ie6a59307c9ff93303bd489c15529432cfdeceaa4
Signed-off-by: Chao-ying Fu <chao-ying.fu@intel.com>
diff --git a/compiler/dex/quick/gen_loadstore.cc b/compiler/dex/quick/gen_loadstore.cc
index 897d86d..208eadd 100644
--- a/compiler/dex/quick/gen_loadstore.cc
+++ b/compiler/dex/quick/gen_loadstore.cc
@@ -211,7 +211,12 @@
     LoadValueDirectWide(rl_src, rl_src.reg);
     rl_src.location = kLocPhysReg;
     MarkLive(rl_src.reg.GetLow(), rl_src.s_reg_low);
-    MarkLive(rl_src.reg.GetHigh(), GetSRegHi(rl_src.s_reg_low));
+    if (rl_src.reg.GetLowReg() != rl_src.reg.GetHighReg()) {
+      MarkLive(rl_src.reg.GetHigh(), GetSRegHi(rl_src.s_reg_low));
+    } else {
+      // This must be an x86 vector register value.
+      DCHECK(IsFpReg(rl_src.reg) && (cu_->instruction_set == kX86 || cu_->instruction_set == kX86_64));
+    }
   }
   return rl_src;
 }