16#include "llvm/ADT/ArrayRef.h"
36 class InterpreterHandler;
37 class InstructionInfoTable;
40 template<
class T>
class ref;
85 std::unique_ptr<llvm::Module>
module;
96 std::unique_ptr<InstructionInfoTable>
infos;
99 std::map<const llvm::Constant *, std::unique_ptr<KConstant>>
constantMap;
117 llvm::ArrayRef<const char *>);
139 bool link(std::vector<std::unique_ptr<llvm::Module>> &modules,
140 const std::string &entryPoint);
KConstant(llvm::Constant *, unsigned, KInstruction *)
unsigned id
The constant ID.
llvm::Constant * ct
Actual LLVM constant this represents.
unsigned getConstantID(llvm::Constant *c, KInstruction *ki)
Return an id for the given constant, creating a new one if necessary.
void optimiseAndPrepare(const Interpreter::ModuleOptions &opts, llvm::ArrayRef< const char * >)
Optimise and prepare module such that KLEE can execute it.
void addInternalFunction(const char *functionName)
KConstant * getKConstant(const llvm::Constant *c)
std::map< const llvm::Constant *, std::unique_ptr< KConstant > > constantMap
void instrument(const Interpreter::ModuleOptions &opts)
void manifest(InterpreterHandler *ih, bool forceSourceOutput)
bool link(std::vector< std::unique_ptr< llvm::Module > > &modules, const std::string &entryPoint)
std::set< const llvm::Function * > internalFunctions
std::unique_ptr< llvm::DataLayout > targetData
std::unique_ptr< InstructionInfoTable > infos
std::set< llvm::Function * > escapingFunctions
std::vector< std::unique_ptr< KFunction > > functions
std::vector< llvm::Constant * > constants
std::unique_ptr< llvm::Module > module
std::unique_ptr< Cell[]> constantTable
std::map< llvm::Function *, KFunction * > functionMap
unsigned getArgRegister(unsigned index)
std::map< llvm::BasicBlock *, unsigned > basicBlockEntry
llvm::Function * function
KInstruction ** instructions
KFunction(const KFunction &)=delete
KFunction & operator=(const KFunction &)=delete
KFunction(llvm::Function *, KModule *)