Index: lib/CodeGen/CGExpr.cpp =================================================================== --- lib/CodeGen/CGExpr.cpp +++ lib/CodeGen/CGExpr.cpp @@ -4504,10 +4504,14 @@ Builder.CreateICmpEQ(CalleeRTTI, FTRTTIConst); llvm::Constant *StaticData[] = { EmitCheckSourceLocation(E->getLocStart()), - EmitCheckTypeDescriptor(CalleeType) + EmitCheckTypeDescriptor(CalleeType), + cast(FnType)->isNothrow(getContext()) + ? llvm::Constant::getNullValue(FTRTTIConst->getType()) + : FTRTTIConst }; EmitCheck(std::make_pair(CalleeRTTIMatch, SanitizerKind::Function), - SanitizerHandler::FunctionTypeMismatch, StaticData, CalleePtr); + SanitizerHandler::FunctionTypeMismatch, StaticData, + {CalleePtr, CalleeRTTI}); Builder.CreateBr(Cont); EmitBlock(Cont);