Index: clang/lib/CodeGen/CGClass.cpp =================================================================== --- clang/lib/CodeGen/CGClass.cpp +++ clang/lib/CodeGen/CGClass.cpp @@ -1588,7 +1588,9 @@ llvm::FunctionType::get(CGF.VoidTy, ArgTypes, false); llvm::Value *Fn = CGF.CGM.CreateRuntimeFunction(FnType, "__sanitizer_dtor_callback"); - CGF.EmitNounwindRuntimeCall(Fn, Args); + llvm::CallInst *I = CGF.EmitNounwindRuntimeCall(Fn, Args); + I->setMetadata("nosanitize", llvm::MDNode::get(CGF.getLLVMContext(), + llvm::None)); } class SanitizeDtorMembers final : public EHScopeStack::Cleanup { Index: llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp =================================================================== --- llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp +++ llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp @@ -2588,6 +2588,7 @@ void visitCallSite(CallSite CS) { Instruction &I = *CS.getInstruction(); + if (I.getMetadata("nosanitize")) return; assert((CS.isCall() || CS.isInvoke()) && "Unknown type of CallSite"); if (CS.isCall()) { CallInst *Call = cast(&I);