forked from OSchip/llvm-project
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. llvm-svn: 134202
This commit is contained in:
parent
abe5f97634
commit
b403f0c4ed
|
@ -106,6 +106,10 @@ public:
|
|||
int getSEHRegNum(unsigned RegNum) const {
|
||||
return TRI->getSEHRegNum(RegNum);
|
||||
}
|
||||
|
||||
int getCompactUnwindRegNum(unsigned RegNum) const {
|
||||
return TRI->getCompactUnwindRegNum(RegNum);
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -720,6 +720,12 @@ public:
|
|||
virtual int getSEHRegNum(unsigned i) const {
|
||||
return i;
|
||||
}
|
||||
|
||||
/// getCompactUnwindRegNum - This function maps the register to the number for
|
||||
/// compact unwind encoding. Return -1 if the register isn't valid.
|
||||
virtual int getCompactUnwindRegNum(unsigned) const {
|
||||
return -1;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -81,6 +81,10 @@ public:
|
|||
// FIXME: This should be tablegen'd like getDwarfRegNum is
|
||||
int getSEHRegNum(unsigned i) const;
|
||||
|
||||
/// getCompactUnwindRegNum - This function maps the register to the number for
|
||||
/// compact unwind encoding. Return -1 if the register isn't valid.
|
||||
int getCompactUnwindRegNum(unsigned RegNum) const;
|
||||
|
||||
/// Code Generation virtual methods...
|
||||
///
|
||||
|
||||
|
|
Loading…
Reference in New Issue