Index: lib/Target/X86/X86DiscriminateMemOps.cpp =================================================================== --- lib/Target/X86/X86DiscriminateMemOps.cpp +++ lib/Target/X86/X86DiscriminateMemOps.cpp @@ -85,7 +85,7 @@ // have any debug info. const DILocation *ReferenceDI = DILocation::get(FDI->getContext(), FDI->getLine(), 0, FDI); - + assert(ReferenceDI && "ReferenceDI should not be nullptr"); DenseMap MemOpDiscriminators; MemOpDiscriminators[diToLocation(ReferenceDI)] = 0; @@ -143,6 +143,7 @@ // 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::iterator, bool> MustInsert = Index: lib/Target/X86/X86InstructionSelector.cpp =================================================================== --- lib/Target/X86/X86InstructionSelector.cpp +++ lib/Target/X86/X86InstructionSelector.cpp @@ -1600,7 +1600,10 @@ assert(RegTy == MRI.getType(Op1Reg) && RegTy == MRI.getType(Op2Reg) && "Arguments and return value types must match"); - const RegisterBank &RegRB = *RBI.getRegBank(DstReg, MRI, TRI); + const RegisterBank *PtrRegRB = RBI.getRegBank(DstReg, MRI, TRI); + if (!PtrRegRB) + return false; + const RegisterBank &RegRB = *PtrRegRB; if (RegRB.getID() != X86::GPRRegBankID) return false;