IRForTarget.h revision 8bce665569ea08dd43d9ff21e23f14ebbc191d12
1//===-- IRForTarget.h ---------------------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#ifndef liblldb_IRForTarget_h_ 11#define liblldb_IRForTarget_h_ 12 13#include "llvm/Pass.h" 14 15namespace llvm { 16 class BasicBlock; 17 class Function; 18 class Module; 19 class TargetData; 20 class Value; 21} 22 23namespace lldb_private { 24 class ClangExpressionDeclMap; 25} 26 27class IRForTarget : public llvm::ModulePass 28{ 29public: 30 IRForTarget(const void *pid, 31 lldb_private::ClangExpressionDeclMap *decl_map, 32 const llvm::TargetData *target_data); 33 ~IRForTarget(); 34 bool runOnModule(llvm::Module &M); 35 void assignPassManager(llvm::PMStack &PMS, 36 llvm::PassManagerType T = llvm::PMT_ModulePassManager); 37 llvm::PassManagerType getPotentialPassManagerType() const; 38private: 39 bool MaybeHandleVariable(llvm::Module &M, 40 lldb_private::ClangExpressionDeclMap *DM, 41 llvm::Value *V, 42 bool Store); 43 bool runOnBasicBlock(llvm::Module &M, 44 llvm::BasicBlock &BB); 45 bool replaceVariables(llvm::Module &M, 46 llvm::Function *F); 47 48 lldb_private::ClangExpressionDeclMap *m_decl_map; 49 const llvm::TargetData *m_target_data; 50}; 51 52#endif