diff options
author | 2012-08-03 14:44:06 -0700 | |
---|---|---|
committer | 2012-08-03 14:44:06 -0700 | |
commit | 626aaa987b171c0addab75d7d300a91c24f9a5cc (patch) | |
tree | 020411da9658eae76036851f49c74515f8c6f481 /src | |
parent | dcf8d7283bd51714f3faa55b631ae4103dc98b51 (diff) | |
parent | 63ebbb68631caaf1de0588ece186af4018c33cfd (diff) |
am 63ebbb68: Quick compiler: fix NOT_LONG codegen
* commit '63ebbb68631caaf1de0588ece186af4018c33cfd':
Quick compiler: fix NOT_LONG codegen
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/codegen/MethodBitcode.cc | 5 |
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); |