12345678910111213141516171819202122232425262728293031323334 |
- #pragma once
- #include <map>
- #include <memory>
- #include <string>
- #include <vector>
- namespace llvm
- {
- class CallInst;
- class ConstantInt;
- class Function;
- class FunctionType;
- class Instruction;
- class LLVMContext;
- class Module;
- class Pass;
- }
- std::vector<llvm::CallInst*> getCallsToFunction(llvm::Function* callee, const llvm::Function* caller = nullptr);
- llvm::Function* getOrCreateFunction(const std::string& name, llvm::Module* module, llvm::FunctionType* funcType, std::map<llvm::FunctionType*, llvm::Function*>& typeToFuncMap);
- llvm::ConstantInt* makeInt32(int val, llvm::LLVMContext& context);
- llvm::Instruction* getInstructionAfter(llvm::Instruction* inst);
- std::unique_ptr<llvm::Module> loadModuleFromAsmFile(llvm::LLVMContext& context, const std::string& filename);
- std::unique_ptr<llvm::Module> loadModuleFromAsmString(llvm::LLVMContext& context, const std::string& str);
- void saveModuleToAsmFile(const llvm::Module* module, const std::string& filename);
- void dumpCFG(const llvm::Function* F, const std::string& suffix);
- void runPasses(llvm::Function*, const std::vector<llvm::Pass*>& passes);
|