Browse Source

Cleanups: move basic block linking to separated function

cl-refactor
Paweł Bylica 10 years ago
parent
commit
bf7ca5cd01
  1. 11
      evmcc/Compiler.cpp
  2. 2
      evmcc/Compiler.h

11
evmcc/Compiler.cpp

@ -789,6 +789,15 @@ std::unique_ptr<llvm::Module> Compiler::compile(const dev::bytes& bytecode)
builder.SetInsertPoint(finalBlock);
builder.CreateRet(builder.getInt64(0));
linkBasicBlocks();
return module;
}
void Compiler::linkBasicBlocks()
{
/// Helper function that finds basic block given LLVM basic block pointer
auto findBB = [this](llvm::BasicBlock* _llvmBB)
{
for (auto&& bb : basicBlocks)
@ -821,8 +830,6 @@ std::unique_ptr<llvm::Module> Compiler::compile(const dev::bytes& bytecode)
}
}
}
return module;
}
}

2
evmcc/Compiler.h

@ -25,6 +25,8 @@ private:
BasicBlock& getOrCreateBasicBlockAtPC(ProgramCounter pc);
void createBasicBlocks(const dev::bytes& bytecode);
void linkBasicBlocks();
/**
* Maps a program counter pc to a basic block which starts at pc (if any).
*/

Loading…
Cancel
Save