summaryrefslogtreecommitdiff
path: root/lib/Target/X86/X86RegisterInfo.cpp
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2011-06-30 23:20:32 +0000
committerBill Wendling <isanbard@gmail.com>2011-06-30 23:20:32 +0000
commit5cd2791513919ee7504c309151321e4e37a05a58 (patch)
tree37aca1d35544aca55ac7f72ea6bda6d79806a48a /lib/Target/X86/X86RegisterInfo.cpp
parent15e96be3c70ab2e4a50c505c2b90e4ce1095dbd6 (diff)
downloadllvm-5cd2791513919ee7504c309151321e4e37a05a58.tar.gz
llvm-5cd2791513919ee7504c309151321e4e37a05a58.tar.bz2
llvm-5cd2791513919ee7504c309151321e4e37a05a58.tar.xz
Add target a target hook to get the register number used by the compact unwind
encoding for the registers it knows about. Return -1 if it can't handle that register. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134202 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86RegisterInfo.cpp')
-rw-r--r--lib/Target/X86/X86RegisterInfo.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/Target/X86/X86RegisterInfo.cpp b/lib/Target/X86/X86RegisterInfo.cpp
index c0ce81a5cb..20f8992b84 100644
--- a/lib/Target/X86/X86RegisterInfo.cpp
+++ b/lib/Target/X86/X86RegisterInfo.cpp
@@ -105,6 +105,21 @@ int X86RegisterInfo::getLLVMRegNum(unsigned DwarfRegNo, bool isEH) const {
return X86GenRegisterInfo::getLLVMRegNumFull(DwarfRegNo, Flavour);
}
+/// getCompactUnwindRegNum - This function maps the register to the number for
+/// compact unwind encoding. Return -1 if the register isn't valid.
+int X86RegisterInfo::getCompactUnwindRegNum(unsigned RegNum) const {
+ switch (RegNum) {
+ case X86::EBX: case X86::RBX: return 1;
+ case X86::ECX: case X86::RCX: return 2;
+ case X86::EDX: case X86::RDX: return 3;
+ case X86::EDI: case X86::RDI: return 4;
+ case X86::ESI: case X86::RSI: return 5;
+ case X86::EBP: case X86::RBP: return 6;
+ }
+
+ return -1;
+}
+
int
X86RegisterInfo::getSEHRegNum(unsigned i) const {
int reg = getX86RegNum(i);