From ee0aaff9cda92920a704a7bd4000c8ba27e33922 Mon Sep 17 00:00:00 2001 From: Stephan Bergmann Date: Mon, 18 Dec 2017 13:51:48 +0000 Subject: [PATCH] Revert r320978 "No -fsanitize=function warning when calling noexcept function through non-noexcept pointer in C++17" At least complains about __ubsan::__ubsan_handle_function_type_mismatch_abort (compiler-rt lib/ubsan/ubsan_handlers.cc) returning now despite being declared 'noreturn', so looks like a different approach is needed for the function_type_mismatch check to be called also in cases that may ultimately succeed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@320982 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/CGExpr.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/lib/CodeGen/CGExpr.cpp b/lib/CodeGen/CGExpr.cpp index 881e5334b4..98740e8f9a 100644 --- a/lib/CodeGen/CGExpr.cpp +++ b/lib/CodeGen/CGExpr.cpp @@ -4504,14 +4504,10 @@ RValue CodeGenFunction::EmitCall(QualType CalleeType, const CGCallee &OrigCallee Builder.CreateICmpEQ(CalleeRTTI, FTRTTIConst); llvm::Constant *StaticData[] = { EmitCheckSourceLocation(E->getLocStart()), - EmitCheckTypeDescriptor(CalleeType), - cast(FnType)->isNothrow(getContext()) - ? llvm::Constant::getNullValue(FTRTTIConst->getType()) - : FTRTTIConst + EmitCheckTypeDescriptor(CalleeType) }; EmitCheck(std::make_pair(CalleeRTTIMatch, SanitizerKind::Function), - SanitizerHandler::FunctionTypeMismatch, StaticData, - {CalleePtr, CalleeRTTI}); + SanitizerHandler::FunctionTypeMismatch, StaticData, CalleePtr); Builder.CreateBr(Cont); EmitBlock(Cont); -- 2.50.1