diff options
| author | 2012-04-24 15:50:27 -0700 | |
|---|---|---|
| committer | 2012-04-24 20:28:43 -0700 | |
| commit | 8e9b449433e304686935f870cde484be3f48b178 (patch) | |
| tree | 72f33700c55ba1b1ab47b03ff0dd7a309a543af3 /src/compiler_llvm/method_compiler.cc | |
| parent | 58e63f9e999605bce6e8dc301eaf5e2ee0981e03 (diff) | |
Fix run-test 003, llvm method_compiler bug.
Change-Id: I87c211d829c41d5406587f491fd55934afc06fd9
Diffstat (limited to 'src/compiler_llvm/method_compiler.cc')
| -rw-r--r-- | src/compiler_llvm/method_compiler.cc | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/src/compiler_llvm/method_compiler.cc b/src/compiler_llvm/method_compiler.cc index b6711b6913..1253d377c3 100644 --- a/src/compiler_llvm/method_compiler.cc +++ b/src/compiler_llvm/method_compiler.cc @@ -2128,15 +2128,13 @@ void MethodCompiler::EmitInsn_BinaryConditionalBranch(uint32_t dex_pc, EmitGuard_GarbageCollectionSuspend(dex_pc); } - if (src1_reg_cat == kRegZero && src2_reg_cat == kRegZero) { - irb_.CreateBr(GetBasicBlock(dex_pc + branch_offset)); - return; - } - llvm::Value* src1_value; llvm::Value* src2_value; - if (src1_reg_cat != kRegZero && src2_reg_cat != kRegZero) { + if (src1_reg_cat == kRegZero && src2_reg_cat == kRegZero) { + src1_value = irb_.getInt32(0); + src2_value = irb_.getInt32(0); + } else if (src1_reg_cat != kRegZero && src2_reg_cat != kRegZero) { CHECK_EQ(src1_reg_cat, src2_reg_cat); if (src1_reg_cat == kRegCat1nr) { @@ -2196,15 +2194,13 @@ void MethodCompiler::EmitInsn_UnaryConditionalBranch(uint32_t dex_pc, EmitGuard_GarbageCollectionSuspend(dex_pc); } - if (src_reg_cat == kRegZero) { - irb_.CreateBr(GetBasicBlock(dex_pc + branch_offset)); - return; - } - llvm::Value* src1_value; llvm::Value* src2_value; - if (src_reg_cat == kRegCat1nr) { + if (src_reg_cat == kRegZero) { + src1_value = irb_.getInt32(0); + src2_value = irb_.getInt32(0); + } else if (src_reg_cat == kRegCat1nr) { src1_value = EmitLoadDalvikReg(dec_insn.vA, kInt, kAccurate); src2_value = irb_.getInt32(0); } else { |