diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -31529,7 +31529,9 @@ AI->getParent() != I->getParent()) return AtomicExpansionKind::CmpXChg; - assert(I->getOperand(0) == AI); + if (I->getOperand(0) != AI) + return AtomicExpansionKind::CmpXChg; + // The following instruction must be a AND single bit. if (BitChange.second == ConstantBit || BitChange.second == NotConstantBit) { auto *C1 = dyn_cast(AI->getValOperand());