Lines Matching full:llvm
21 #include "llvm/Analysis/Verifier.h"
22 #include "llvm/IR/IRBuilder.h"
23 #include "llvm/IR/LLVMContext.h"
24 #include "llvm/IR/Module.h"
25 #include "llvm/Analysis/Verifier.h"
29 // Abstracts away the containers we use to map SEA IR objects to LLVM IR objects.
32 explicit CodeGenData(): context_(&llvm::getGlobalContext()), module_("sea_ir", *context_),
34 // Returns the llvm::BasicBlock* corresponding to the sea_ir::Region with id @region_id.
35 llvm::BasicBlock* GetBlock(int region_id) {
36 std::map<int, llvm::BasicBlock*>::iterator block_it = blocks_.find(region_id);
40 // Returns the llvm::BasicBlock* corresponding top the sea_ir::Region @region.
41 llvm::BasicBlock* GetBlock(Region* region) {
45 void AddBlock(int region_id, llvm::BasicBlock* block) {
46 blocks_.insert(std::pair<int, llvm::BasicBlock*>(region_id, block));
49 void AddBlock(Region* region, llvm::BasicBlock* block) {
53 llvm::Value* GetValue(int instruction_id) {
54 std::map<int, llvm::Value*>::iterator value_it = values_.find(instruction_id);
58 // Returns the llvm::Value* corresponding to the output of @instruction.
59 llvm::Value* GetValue(InstructionNode* instruction) {
63 void AddValue(int instruction_id, llvm::Value* value) {
64 values_.insert(std::pair<int, llvm::Value*>(instruction_id, value));
67 void AddValue(InstructionNode* instruction, llvm::Value* value) {
70 // Generates and returns in @elf the executable code corresponding to the llvm module
74 llvm::LLVMContext* const context_;
75 llvm::Module module_;
76 llvm::IRBuilder<> builder_;
77 llvm::Function* function_;
80 std::map<int, llvm::BasicBlock*> blocks_;
81 std::map<int, llvm::Value*> values_;
95 llvm::verifyFunction(*llvm_data_->function_);