diff options
author | Bill Buzbee <buzbee@android.com> | 2014-04-01 14:38:36 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2014-04-01 14:38:37 +0000 |
commit | d0b86c7ec593a552f726a15e532bb48170fbf487 (patch) | |
tree | 379322aaaf2cbaf4939ae80d1cb206a4d7483b00 /compiler/dex | |
parent | 70f9ebf7ca95f9d4ab4818849e4fa825b545e192 (diff) | |
parent | 6170f5576f46f64eec6cd6c125c3de001afa5bcf (diff) | |
download | art-d0b86c7ec593a552f726a15e532bb48170fbf487.zip art-d0b86c7ec593a552f726a15e532bb48170fbf487.tar.gz art-d0b86c7ec593a552f726a15e532bb48170fbf487.tar.bz2 |
Merge "Use ResetDef to prevent from removing necessary stores for x86 long-to-fp."
Diffstat (limited to 'compiler/dex')
-rw-r--r-- | compiler/dex/quick/x86/fp_x86.cc | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/compiler/dex/quick/x86/fp_x86.cc b/compiler/dex/quick/x86/fp_x86.cc index ec4d9db..3fb9012 100644 --- a/compiler/dex/quick/x86/fp_x86.cc +++ b/compiler/dex/quick/x86/fp_x86.cc @@ -146,6 +146,11 @@ void X86Mir2Lir::GenLongToFP(RegLocation rl_dest, RegLocation rl_src, bool is_do if (lo_info != nullptr && lo_info->is_temp) { // Calling FlushSpecificReg because it will only write back VR if it is dirty. FlushSpecificReg(lo_info); + // ResetDef for low/high to prevent NullifyRange from removing stores. + ResetDef(rl_src.reg.GetLowReg()); + if (rl_src.reg.GetLowReg() != rl_src.reg.GetHighReg() && GetRegInfo(rl_src.reg.GetHighReg()) != nullptr) { + ResetDef(rl_src.reg.GetHighReg()); + } } else { // It must have been register promoted if it is not a temp but is still in physical // register. Since we need it to be in memory to convert, we place it there now. |