diff options
author | Jim Laskey <jlaskey@mac.com> | 2006-03-23 18:01:12 +0000 |
---|---|---|
committer | Jim Laskey <jlaskey@mac.com> | 2006-03-23 18:01:12 +0000 |
commit | 60f27ff87983ef1fe55095c6ff10ce7406e3f3bd (patch) | |
tree | a813da2c7a09ecd13b35aa0984ba8475d5daf404 | |
parent | 108a638b5aff6ef6c519a79193086f0822701e0e (diff) |
Support for locating of debug items in frames.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26984 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/CodeGen/MachineLocation.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/include/llvm/CodeGen/MachineLocation.h b/include/llvm/CodeGen/MachineLocation.h new file mode 100644 index 0000000000..1756d325a2 --- /dev/null +++ b/include/llvm/CodeGen/MachineLocation.h @@ -0,0 +1,64 @@ +//===-- llvm/CodeGen/MachineLocation.h --------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file was developed by James M. Laskey and is distributed under +// the University of Illinois Open Source License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// The MachineLocation class is used to represent a simple location in a machine +// frame. Locations will be one of two forms; a register or an address formed +// from a base address plus an offset. +//===----------------------------------------------------------------------===// + + +#ifndef LLVM_CODEGEN_MACHINELOCATION_H +#define LLVM_CODEGEN_MACHINELOCATION_H + +namespace llvm { + +class MachineLocation { +private: + bool IsRegister; // True if location is a register. + unsigned Register; // gcc/gdb register number. + int Offset; // Displacement if not register. + +public: + MachineLocation() + : IsRegister(false) + , Register(0) + , Offset(0) + {} + MachineLocation(unsigned R) + : IsRegister(true) + , Register(R) + , Offset(0) + {} + MachineLocation(unsigned R, int O) + : IsRegister(false) + , Register(R) + , Offset(0) + {} + + // Accessors + bool isRegister() const { return IsRegister; } + unsigned getRegister() const { return Register; } + int getOffset() const { return Offset; } + void setIsRegister(bool Is) { IsRegister = Is; } + void setRegister(unsigned R) { Register = R; } + void setOffset(int O) { Offset = O; } + void set(unsigned R) { + IsRegister = true; + Register = R; + Offset = 0; + } + void set(unsigned R, int O) { + IsRegister = false; + Register = R; + Offset = O; + } +}; + +} // End llvm namespace + +#endif |