<div dir="auto"><div>Can we just strip the noexcept from the function type before emitting the fsan type info?<br><div class="gmail_extra"><br><div class="gmail_quote">On 18 Dec 2017 13:52, "Stephan Bergmann via cfe-commits" <<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a>> wrote:<br type="attribution"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: sberg<br>
Date: Mon Dec 18 05:51:48 2017<br>
New Revision: 320982<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=320982&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=320982&view=rev</a><br>
Log:<br>
Revert r320978 "No -fsanitize=function warning when calling noexcept function through non-noexcept pointer in C++17"<br>
<br>
At least <<a href="http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-android/
builds/6013/steps/annotate/logs/stdio" rel="noreferrer" target="_blank">http://lab.llvm.org:8011/<wbr>builders/sanitizer-x86_64-<wbr>linux-android/<br>
builds/6013/steps/annotate/<wbr>logs/stdio</a>> complains about<br>
__ubsan::__ubsan_handle_<wbr>function_type_mismatch_abort (compiler-rt<br>
lib/ubsan/ubsan_handlers.cc) returning now despite being declared 'noreturn', so<br>
looks like a different approach is needed for the function_type_mismatch check<br>
to be called also in cases that may ultimately succeed.<br>
<br>
Modified:<br>
    cfe/trunk/lib/CodeGen/CGExpr.<wbr>cpp<br>
<br>
Modified: cfe/trunk/lib/CodeGen/CGExpr.<wbr>cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExpr.cpp?rev=320982&r1=320981&r2=320982&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/cfe/trunk/lib/CodeGen/<wbr>CGExpr.cpp?rev=320982&r1=<wbr>320981&r2=320982&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- cfe/trunk/lib/CodeGen/CGExpr.<wbr>cpp (original)<br>
+++ cfe/trunk/lib/CodeGen/CGExpr.<wbr>cpp Mon Dec 18 05:51:48 2017<br>
@@ -4504,14 +4504,10 @@ RValue CodeGenFunction::EmitCall(<wbr>QualTyp<br>
           Builder.CreateICmpEQ(<wbr>CalleeRTTI, FTRTTIConst);<br>
       llvm::Constant *StaticData[] = {<br>
         EmitCheckSourceLocation(E-><wbr>getLocStart()),<br>
-        EmitCheckTypeDescriptor(<wbr>CalleeType),<br>
-        cast<FunctionProtoType>(<wbr>FnType)->isNothrow(getContext(<wbr>))<br>
-          ? llvm::Constant::getNullValue(<wbr>FTRTTIConst->getType())<br>
-          : FTRTTIConst<br>
+        EmitCheckTypeDescriptor(<wbr>CalleeType)<br>
       };<br>
       EmitCheck(std::make_pair(<wbr>CalleeRTTIMatch, SanitizerKind::Function),<br>
-                SanitizerHandler::<wbr>FunctionTypeMismatch, StaticData,<br>
-                {CalleePtr, CalleeRTTI});<br>
+                SanitizerHandler::<wbr>FunctionTypeMismatch, StaticData, CalleePtr);<br>
<br>
       Builder.CreateBr(Cont);<br>
       EmitBlock(Cont);<br>
<br>
<br>
______________________________<wbr>_________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div></div></div>