diff options
| author | 2012-05-25 19:06:18 -0700 | |
|---|---|---|
| committer | 2012-05-25 19:06:18 -0700 | |
| commit | 21e127119e2de7246dab3f29068c4eadbd1b6f37 (patch) | |
| tree | f3181bc4ea8919d35ac9d785b3b300475164d7f1 /src/compiler/codegen/GenCommon.cc | |
| parent | 633703ffb2d25b0cc30404eb057d18eb2f81f07c (diff) | |
Fix x86 aget-wide compilation to use loadBaseIndexedDisp.
loadPair doesn't work properly when the result register is floating
point. Using loadBaseIndexedDisp fixes the run-tests again.
Change-Id: I06cc455abe230068eea862846b91c09681139c55
Diffstat (limited to 'src/compiler/codegen/GenCommon.cc')
| -rw-r--r-- | src/compiler/codegen/GenCommon.cc | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/compiler/codegen/GenCommon.cc b/src/compiler/codegen/GenCommon.cc index e9c348a3f2..0d2cf005d7 100644 --- a/src/compiler/codegen/GenCommon.cc +++ b/src/compiler/codegen/GenCommon.cc @@ -1506,7 +1506,8 @@ void genArrayGet(CompilationUnit* cUnit, MIR* mir, OpSize size, oatFreeTemp(cUnit, rlArray.lowReg); oatFreeTemp(cUnit, rlIndex.lowReg); rlResult = oatEvalLoc(cUnit, rlDest, regClass, true); - loadPair(cUnit, regAddr, rlResult.lowReg, rlResult.highReg); + loadBaseIndexedDisp(cUnit, NULL, regAddr, INVALID_REG, 0, 0, rlResult.lowReg, + rlResult.highReg, size, INVALID_SREG); storeValueWide(cUnit, rlDest, rlResult); } else { rlResult = oatEvalLoc(cUnit, rlDest, regClass, true); |