diff options
author | Bill Wendling <isanbard@gmail.com> | 2011-06-30 23:20:32 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2011-06-30 23:20:32 +0000 |
commit | 5cd2791513919ee7504c309151321e4e37a05a58 (patch) | |
tree | 37aca1d35544aca55ac7f72ea6bda6d79806a48a /lib/Target/X86/X86RegisterInfo.cpp | |
parent | 15e96be3c70ab2e4a50c505c2b90e4ce1095dbd6 (diff) | |
download | external_llvm-5cd2791513919ee7504c309151321e4e37a05a58.zip external_llvm-5cd2791513919ee7504c309151321e4e37a05a58.tar.gz external_llvm-5cd2791513919ee7504c309151321e4e37a05a58.tar.bz2 |
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.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/Target/X86/X86RegisterInfo.cpp b/lib/Target/X86/X86RegisterInfo.cpp index c0ce81a..20f8992 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); |