summaryrefslogtreecommitdiff
path: root/src/compiler_llvm/method_compiler.cc
diff options
context:
space:
mode:
author TDYa127 <tdy@google.com> 2012-04-24 15:50:27 -0700
committer Shih-wei Liao <sliao@google.com> 2012-04-24 20:28:43 -0700
commit8e9b449433e304686935f870cde484be3f48b178 (patch)
tree72f33700c55ba1b1ab47b03ff0dd7a309a543af3 /src/compiler_llvm/method_compiler.cc
parent58e63f9e999605bce6e8dc301eaf5e2ee0981e03 (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.cc20
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 {