mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-28 19:25:00 +00:00
Update LiveDebugVariables after live range splitting.
After a virtual register is split, update any debug user variables that resided in the old register. This ensures that the LiveDebugVariables are still correct after register allocation. This may create DBG_VALUE instructions that place a user variable in a register in parts of the function and in a stack slot in other parts. DwarfDebug currently doesn't support that. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130998 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -21,10 +21,12 @@
|
||||
#ifndef LLVM_CODEGEN_LIVEDEBUGVARIABLES_H
|
||||
#define LLVM_CODEGEN_LIVEDEBUGVARIABLES_H
|
||||
|
||||
#include "llvm/ADT/ArrayRef.h"
|
||||
#include "llvm/CodeGen/MachineFunctionPass.h"
|
||||
|
||||
namespace llvm {
|
||||
|
||||
class LiveInterval;
|
||||
class VirtRegMap;
|
||||
|
||||
class LiveDebugVariables : public MachineFunctionPass {
|
||||
@@ -42,6 +44,11 @@ public:
|
||||
/// register.
|
||||
void renameRegister(unsigned OldReg, unsigned NewReg, unsigned SubIdx);
|
||||
|
||||
/// splitRegister - Move any user variables in OldReg to the live ranges in
|
||||
/// NewRegs where they are live. Mark the values as unavailable where no new
|
||||
/// register is live.
|
||||
void splitRegister(unsigned OldReg, ArrayRef<LiveInterval*> NewRegs);
|
||||
|
||||
/// emitDebugValues - Emit new DBG_VALUE instructions reflecting the changes
|
||||
/// that happened during register allocation.
|
||||
/// @param VRM Rename virtual registers according to map.
|
||||
|
Reference in New Issue
Block a user