| 46 | } |
| 47 | |
| 48 | llvm::Instruction * |
| 49 | IRAccessHelper::getInstruction(std::string Name, unsigned BIdx, unsigned IIdx) { |
| 50 | auto *B = getBasicBlock(Name, BIdx); |
| 51 | if (!B) |
| 52 | return nullptr; |
| 53 | |
| 54 | auto Iter = Instructions.find(B); |
| 55 | if (Iter == Instructions.end()) |
| 56 | return nullptr; |
| 57 | |
| 58 | auto &Instructions = Iter->second; |
| 59 | if (Instructions.size() < IIdx) |
| 60 | return nullptr; |
| 61 | |
| 62 | const auto *I = Instructions[IIdx]; |
| 63 | if (!I) |
| 64 | return nullptr; |
| 65 | |
| 66 | return const_cast<llvm::Instruction *>(I); |
| 67 | } |
| 68 | |
| 69 | llvm::GlobalVariable *IRAccessHelper::getGlobalVariable(std::string Name) { |
| 70 | auto *GV = M.getGlobalVariable(Name, true); |