forked from OSchip/llvm-project
Avoid accessing LLVM/DWARF register mappings if undefined
Summary: If the backend does not define LLVM/DWARF register mappings, the associated variables are undefined since the map initializer is called by auto-generated TableGen routines. This patch initializes the pointers and sizes to nullptr and zero, respectively, and checks that they are valid before searching for a mapping. Reviewers: grosbach, dschuff Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D23458 llvm-svn: 278574
This commit is contained in:
parent
c9c0d2dcb5
commit
2868fa171a
|
@ -271,6 +271,16 @@ public:
|
|||
NumSubRegIndices = NumIndices;
|
||||
SubRegIdxRanges = SubIdxRanges;
|
||||
RegEncodingTable = RET;
|
||||
|
||||
// Initialize DWARF register mapping variables
|
||||
EHL2DwarfRegs = nullptr;
|
||||
EHL2DwarfRegsSize = 0;
|
||||
L2DwarfRegs = nullptr;
|
||||
L2DwarfRegsSize = 0;
|
||||
EHDwarf2LRegs = nullptr;
|
||||
EHDwarf2LRegsSize = 0;
|
||||
Dwarf2LRegs = nullptr;
|
||||
Dwarf2LRegsSize = 0;
|
||||
}
|
||||
|
||||
/// \brief Used to initialize LLVM register to Dwarf
|
||||
|
|
|
@ -62,6 +62,8 @@ int MCRegisterInfo::getDwarfRegNum(unsigned RegNum, bool isEH) const {
|
|||
const DwarfLLVMRegPair *M = isEH ? EHL2DwarfRegs : L2DwarfRegs;
|
||||
unsigned Size = isEH ? EHL2DwarfRegsSize : L2DwarfRegsSize;
|
||||
|
||||
if (!M)
|
||||
return -1;
|
||||
DwarfLLVMRegPair Key = { RegNum, 0 };
|
||||
const DwarfLLVMRegPair *I = std::lower_bound(M, M+Size, Key);
|
||||
if (I == M+Size || I->FromReg != RegNum)
|
||||
|
@ -73,6 +75,8 @@ int MCRegisterInfo::getLLVMRegNum(unsigned RegNum, bool isEH) const {
|
|||
const DwarfLLVMRegPair *M = isEH ? EHDwarf2LRegs : Dwarf2LRegs;
|
||||
unsigned Size = isEH ? EHDwarf2LRegsSize : Dwarf2LRegsSize;
|
||||
|
||||
if (!M)
|
||||
return -1;
|
||||
DwarfLLVMRegPair Key = { RegNum, 0 };
|
||||
const DwarfLLVMRegPair *I = std::lower_bound(M, M+Size, Key);
|
||||
assert(I != M+Size && I->FromReg == RegNum && "Invalid RegNum");
|
||||
|
|
Loading…
Reference in New Issue