Reorder stack overflow check.

It seems we can't call function before these alloca instructions.
Otherwise, LLVM would not promote these locations to registers.

Change-Id: I0b77eb29a01ededcf5f386c904182cae6435cd5a
diff --git a/src/compiler_llvm/method_compiler.cc b/src/compiler_llvm/method_compiler.cc
index 3e8a6f8..90731d6 100644
--- a/src/compiler_llvm/method_compiler.cc
+++ b/src/compiler_llvm/method_compiler.cc
@@ -139,21 +139,18 @@
 
 void MethodCompiler::EmitPrologue() {
   // Create basic blocks for prologue
-  basic_block_stack_overflow_ =
-    llvm::BasicBlock::Create(*context_, "prologue.stack_overflow_check", func_);
-
   basic_block_reg_alloca_ =
     llvm::BasicBlock::Create(*context_, "prologue.alloca", func_);
 
+  basic_block_stack_overflow_ =
+    llvm::BasicBlock::Create(*context_, "prologue.stack_overflow_check", func_);
+
   basic_block_shadow_frame_alloca_ =
     llvm::BasicBlock::Create(*context_, "prologue.shadowframe", func_);
 
   basic_block_reg_arg_init_ =
     llvm::BasicBlock::Create(*context_, "prologue.arginit", func_);
 
-  // Before alloca, check stack overflow.
-  EmitStackOverflowCheck();
-
   // Create register array
   for (uint16_t r = 0; r < code_item_->registers_size_; ++r) {
     regs_.push_back(DalvikReg::CreateLocalVarReg(*this, r));
@@ -223,10 +220,12 @@
 
 
 void MethodCompiler::EmitPrologueLastBranch() {
-  irb_.SetInsertPoint(basic_block_stack_overflow_);
-  irb_.CreateBr(basic_block_reg_alloca_);
-
   irb_.SetInsertPoint(basic_block_reg_alloca_);
+  irb_.CreateBr(basic_block_stack_overflow_);
+
+  EmitStackOverflowCheck();
+
+  irb_.SetInsertPoint(basic_block_stack_overflow_);
   irb_.CreateBr(basic_block_shadow_frame_alloca_);
 
   irb_.SetInsertPoint(basic_block_shadow_frame_alloca_);