forked from OSchip/llvm-project
Remove IRToDWARF.h
Summary: The corresponding .cpp file was removed in September of 2011 in r139772. Reviewers: spyffe, clayborg Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D13043 llvm-svn: 248286
This commit is contained in:
parent
825ab5878a
commit
126b8b111a
|
@ -1,111 +0,0 @@
|
|||
//===-- IRToDWARF.h ---------------------------------------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef liblldb_IRToDWARF_h_
|
||||
#define liblldb_IRToDWARF_h_
|
||||
|
||||
#include "llvm/Pass.h"
|
||||
#include "llvm/IR/LegacyPassManager.h"
|
||||
|
||||
#include "lldb/lldb-public.h"
|
||||
|
||||
class Relocator;
|
||||
//----------------------------------------------------------------------
|
||||
/// @class IRToDWARF IRToDWARF.h "lldb/Expression/IRToDWARF.h"
|
||||
/// @brief Transforms the IR for a function into a DWARF location expression
|
||||
///
|
||||
/// Once an expression has been parsed and converted to IR, it can run
|
||||
/// in two contexts: interpreted by LLDB as a DWARF location expression,
|
||||
/// or compiled by the JIT and inserted into the target process for
|
||||
/// execution.
|
||||
///
|
||||
/// IRToDWARF makes the first possible, by traversing the control flow
|
||||
/// graph and writing the code for each basic block out as location
|
||||
/// expression bytecode. To ensure that the links between the basic blocks
|
||||
/// remain intact, it uses a relocator that records the location of every
|
||||
/// location expression instruction that has a relocatable operand, the
|
||||
/// target of that operand (as a basic block), and the mapping of each basic
|
||||
/// block to an actual location. After all code has been written out, the
|
||||
/// relocator post-processes it and performs all necessary relocations.
|
||||
//----------------------------------------------------------------------
|
||||
class IRToDWARF : public llvm::ModulePass
|
||||
{
|
||||
public:
|
||||
//------------------------------------------------------------------
|
||||
/// Constructor
|
||||
///
|
||||
/// @param[in] local_vars
|
||||
/// A list of variables to populate with the local variables this
|
||||
/// expression uses.
|
||||
///
|
||||
/// @param[in] decl_map
|
||||
/// The list of externally-referenced variables for the expression,
|
||||
/// for use in looking up globals.
|
||||
///
|
||||
/// @param[in] stream
|
||||
/// The stream to dump DWARF bytecode onto.
|
||||
///
|
||||
/// @param[in] func_name
|
||||
/// The name of the function to translate to DWARF.
|
||||
//------------------------------------------------------------------
|
||||
IRToDWARF(lldb_private::ClangExpressionVariableList &local_vars,
|
||||
lldb_private::ClangExpressionDeclMap *decl_map,
|
||||
lldb_private::StreamString &strm,
|
||||
const char* func_name = "$__lldb_expr");
|
||||
|
||||
//------------------------------------------------------------------
|
||||
/// Destructor
|
||||
//------------------------------------------------------------------
|
||||
virtual ~IRToDWARF();
|
||||
|
||||
//------------------------------------------------------------------
|
||||
/// Run this IR transformer on a single module
|
||||
///
|
||||
/// @param[in] M
|
||||
/// The module to run on. This module is searched for the function
|
||||
/// $__lldb_expr, and that function is converted to a location
|
||||
/// expression.
|
||||
///
|
||||
/// @return
|
||||
/// True on success; false otherwise
|
||||
//------------------------------------------------------------------
|
||||
bool runOnModule(llvm::Module &M);
|
||||
|
||||
//------------------------------------------------------------------
|
||||
/// Interface stub
|
||||
//------------------------------------------------------------------
|
||||
void assignPassManager(llvm::PMStack &PMS,
|
||||
llvm::PassManagerType T = llvm::PMT_ModulePassManager);
|
||||
|
||||
//------------------------------------------------------------------
|
||||
/// Returns PMT_ModulePassManager
|
||||
//------------------------------------------------------------------
|
||||
llvm::PassManagerType getPotentialPassManagerType() const;
|
||||
private:
|
||||
//------------------------------------------------------------------
|
||||
/// Run this IR transformer on a single basic block
|
||||
///
|
||||
/// @param[in] BB
|
||||
/// The basic block to transform.
|
||||
///
|
||||
/// @param[in] Relocator
|
||||
/// The relocator to use when registering branches.
|
||||
///
|
||||
/// @return
|
||||
/// True on success; false otherwise
|
||||
//------------------------------------------------------------------
|
||||
bool runOnBasicBlock(llvm::BasicBlock &BB, Relocator &Relocator);
|
||||
|
||||
std::string m_func_name; ///< The name of the function to translate
|
||||
lldb_private::ClangExpressionVariableList &m_local_vars; ///< The list of local variables to populate while transforming
|
||||
lldb_private::ClangExpressionDeclMap *m_decl_map; ///< The list of external variables
|
||||
lldb_private::StreamString &m_strm; ///< The stream to write bytecode to
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue