diff options
Diffstat (limited to 'lib/Module/Passes.h')
-rw-r--r-- | lib/Module/Passes.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/Module/Passes.h b/lib/Module/Passes.h index d5f8d821..4fb0cfd7 100644 --- a/lib/Module/Passes.h +++ b/lib/Module/Passes.h @@ -167,6 +167,24 @@ public: bool checkPassed() const { return instructionOperandsConform; } }; +/// FunctionAliasPass - Enables a user of KLEE to specify aliases to functions +/// using -function-alias=<name|pattern>:<replacement> which are injected as +/// GlobalAliases into the module. The replaced function is removed. +class FunctionAliasPass : public llvm::ModulePass { + +public: + static char ID; + FunctionAliasPass() : llvm::ModulePass(ID) {} + bool runOnModule(llvm::Module &M) override; + +private: + static const llvm::FunctionType *getFunctionType(const llvm::GlobalValue *gv); + static bool checkType(const llvm::GlobalValue *match, const llvm::GlobalValue *replacement); + static bool tryToReplace(llvm::GlobalValue *match, llvm::GlobalValue *replacement); + static bool isFunctionOrGlobalFunctionAlias(const llvm::GlobalValue *gv); + +}; + #ifdef USE_WORKAROUND_LLVM_PR39177 /// WorkaroundLLVMPR39177Pass - Workaround for LLVM PR39177 within KLEE repo. /// For more information on this, please refer to the comments in |