summaryrefslogtreecommitdiff
path: root/src/compiler/codegen
diff options
context:
space:
mode:
author buzbee <buzbee@google.com> 2012-08-03 14:44:06 -0700
committer Android Git Automerger <android-git-automerger@android.com> 2012-08-03 14:44:06 -0700
commit626aaa987b171c0addab75d7d300a91c24f9a5cc (patch)
tree020411da9658eae76036851f49c74515f8c6f481 /src/compiler/codegen
parentdcf8d7283bd51714f3faa55b631ae4103dc98b51 (diff)
parent63ebbb68631caaf1de0588ece186af4018c33cfd (diff)
am 63ebbb68: Quick compiler: fix NOT_LONG codegen
* commit '63ebbb68631caaf1de0588ece186af4018c33cfd': Quick compiler: fix NOT_LONG codegen
Diffstat (limited to 'src/compiler/codegen')
-rw-r--r--src/compiler/codegen/MethodBitcode.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/compiler/codegen/MethodBitcode.cc b/src/compiler/codegen/MethodBitcode.cc
index 864372a544..a8da1cde44 100644
--- a/src/compiler/codegen/MethodBitcode.cc
+++ b/src/compiler/codegen/MethodBitcode.cc
@@ -2279,7 +2279,10 @@ void cvtBinOp(CompilationUnit* cUnit, OpKind op, llvm::Instruction* inst)
Instruction::Code dalvikOp = getDalvikOpcode(op, false, rlDest.wide);
RegLocation rlSrc2;
if (constRhs != NULL) {
- DCHECK_EQ(dalvikOp, Instruction::NOT_LONG);
+ // ir_builder converts NOT_LONG to xor src, -1. Restore
+ DCHECK_EQ(dalvikOp, Instruction::XOR_LONG);
+ DCHECK_EQ(-1L, constRhs->getSExtValue());
+ dalvikOp = Instruction::NOT_LONG;
rlSrc2 = rlSrc1;
} else {
rlSrc2 = getLoc(cUnit, rhs);