diff options
author | Craig Topper <craig.topper@intel.com> | 2019-02-19 17:16:23 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2019-02-19 17:16:23 +0000 |
commit | 51a2e889908b63b1e6c1a79ef68d7dd0d49e3ef2 (patch) | |
tree | b090920750621398cc5e69f584ef18e197fb69b8 | |
parent | d8acfe69f0a754fac838df384823d2d4ebd7cc79 (diff) | |
download | bcm5719-llvm-51a2e889908b63b1e6c1a79ef68d7dd0d49e3ef2.tar.gz bcm5719-llvm-51a2e889908b63b1e6c1a79ef68d7dd0d49e3ef2.zip |
[X86] Bugfix for nullptr check by klocwork
klocwork critical issues in CG files:
Patch by Xiang Zhang (xiangzhangllvm)
Differential Revision: https://reviews.llvm.org/D58363
llvm-svn: 354357
-rw-r--r-- | llvm/lib/Target/X86/X86DiscriminateMemOps.cpp | 3 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86InstructionSelector.cpp | 6 |
2 files changed, 5 insertions, 4 deletions
diff --git a/llvm/lib/Target/X86/X86DiscriminateMemOps.cpp b/llvm/lib/Target/X86/X86DiscriminateMemOps.cpp index f6bd5804261..22271896f6c 100644 --- a/llvm/lib/Target/X86/X86DiscriminateMemOps.cpp +++ b/llvm/lib/Target/X86/X86DiscriminateMemOps.cpp @@ -85,7 +85,7 @@ bool X86DiscriminateMemOps::runOnMachineFunction(MachineFunction &MF) { // have any debug info. const DILocation *ReferenceDI = DILocation::get(FDI->getContext(), FDI->getLine(), 0, FDI); - + assert(ReferenceDI && "ReferenceDI should not be nullptr"); DenseMap<Location, unsigned> MemOpDiscriminators; MemOpDiscriminators[diToLocation(ReferenceDI)] = 0; @@ -143,6 +143,7 @@ bool X86DiscriminateMemOps::runOnMachineFunction(MachineFunction &MF) { // Since we were able to encode, bump the MemOpDiscriminators. ++MemOpDiscriminators[L]; DI = DI->cloneWithDiscriminator(EncodedDiscriminator.getValue()); + assert(DI && "DI should not be nullptr"); updateDebugInfo(&MI, DI); Changed = true; std::pair<DenseSet<unsigned>::iterator, bool> MustInsert = diff --git a/llvm/lib/Target/X86/X86InstructionSelector.cpp b/llvm/lib/Target/X86/X86InstructionSelector.cpp index 0fdd6e379b4..cd2e9b82a6f 100644 --- a/llvm/lib/Target/X86/X86InstructionSelector.cpp +++ b/llvm/lib/Target/X86/X86InstructionSelector.cpp @@ -1600,8 +1600,8 @@ bool X86InstructionSelector::selectDivRem(MachineInstr &I, assert(RegTy == MRI.getType(Op1Reg) && RegTy == MRI.getType(Op2Reg) && "Arguments and return value types must match"); - const RegisterBank &RegRB = *RBI.getRegBank(DstReg, MRI, TRI); - if (RegRB.getID() != X86::GPRRegBankID) + const RegisterBank *RegRB = RBI.getRegBank(DstReg, MRI, TRI); + if (!RegRB || RegRB->getID() != X86::GPRRegBankID) return false; const static unsigned NumTypes = 4; // i8, i16, i32, i64 @@ -1699,7 +1699,7 @@ bool X86InstructionSelector::selectDivRem(MachineInstr &I, const DivRemEntry &TypeEntry = *OpEntryIt; const DivRemEntry::DivRemResult &OpEntry = TypeEntry.ResultTable[OpIndex]; - const TargetRegisterClass *RegRC = getRegClass(RegTy, RegRB); + const TargetRegisterClass *RegRC = getRegClass(RegTy, *RegRB); if (!RBI.constrainGenericRegister(Op1Reg, *RegRC, MRI) || !RBI.constrainGenericRegister(Op2Reg, *RegRC, MRI) || !RBI.constrainGenericRegister(DstReg, *RegRC, MRI)) { |