LiveDebugVariables.h revision 0613516b16466a92c68d60734801221506c85e86
1//===- LiveDebugVariables.h - Tracking debug info variables ----*- 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// This file provides the interface to the LiveDebugVariables analysis. 11// 12// The analysis removes DBG_VALUE instructions for virtual registers and tracks 13// live user variables in a data structure that can be updated during register 14// allocation. 15// 16// After register allocation new DBG_VALUE instructions are emitted to reflect 17// the new locations of user variables. 18// 19//===----------------------------------------------------------------------===// 20 21#ifndef LLVM_CODEGEN_LIVEDEBUGVARIABLES_H 22#define LLVM_CODEGEN_LIVEDEBUGVARIABLES_H 23 24#include "llvm/CodeGen/MachineFunctionPass.h" 25 26namespace llvm { 27 28class LiveDebugVariables : public MachineFunctionPass { 29 void *pImpl; 30public: 31 static char ID; // Pass identification, replacement for typeid 32 33 LiveDebugVariables(); 34 ~LiveDebugVariables(); 35 36 /// renameRegister - Move any user variables in OldReg to NewReg:SubIdx. 37 /// @param OldReg Old virtual register that is going away. 38 /// @param NewReg New register holding the user variables. 39 /// @param SubIdx If NewReg is a virtual register, SubIdx may indicate a sub- 40 /// register. 41 void renameRegister(unsigned OldReg, unsigned NewReg, unsigned SubIdx); 42 43 /// emitDebugValues - Emit new DBG_VALUE instructions reflecting the changes 44 /// that happened during register allocation. 45 void emitDebugValues(); 46 47private: 48 49 virtual bool runOnMachineFunction(MachineFunction &); 50 virtual void releaseMemory(); 51 virtual void getAnalysisUsage(AnalysisUsage &) const; 52 53}; 54 55} // namespace llvm 56 57#endif // LLVM_CODEGEN_LIVEDEBUGVARIABLES_H 58