forked from OSchip/llvm-project
Revert r320978 "No -fsanitize=function warning when calling noexcept function through non-noexcept pointer in C++17"
At least <http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-android/ builds/6013/steps/annotate/logs/stdio> 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. llvm-svn: 320982
This commit is contained in:
parent
2635ea6601
commit
0c352eb940
|
@ -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<FunctionProtoType>(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);
|
||||
|
|
Loading…
Reference in New Issue