<div dir="ltr">FWIW, GCC does warn on similar code - the reason it doesn't warn here is that the function is `inline` and never called, so GCC probably never analyses it (I pasted your code here and added a few cases to demonstrate GCC's quirks compared to Clang's here: <a href="https://godbolt.org/z/YM9q91bx1">https://godbolt.org/z/YM9q91bx1</a> )<br><br>So far as I can tell, noreturn isn't carried on function types, so it isn't possible to do what you want at the moment. That's my rough understanding, at least.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jan 6, 2022 at 5:23 PM Manu agarwal via cfe-users <<a href="mailto:cfe-users@lists.llvm.org">cfe-users@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">




<div dir="ltr">
<div style="font-family:Calibri,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
Hi,</div>
<div style="font-family:Calibri,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
We have the below code where this warning gets generated. </div>
<div style="font-family:Calibri,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
#include    <iostream><u></u> <u></u></p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
<u></u> <u></u></p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
[[noreturn]] inline void<u></u> <u></u></p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
abc () noexcept<u></u> <u></u></p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
{<u></u> <u></u></p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
    std::terminate ();<u></u> <u></u></p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
}<u></u> <u></u></p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
<u></u> <u></u></p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
using MyNoReturn = void (*) () noexcept;<u></u> <u></u></p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
<u></u> <u></u><span style="font-family:Calibri,sans-serif;font-size:11pt;color:rgb(0,0,0)">//using MyNoReturn = std::add_pointer_t<decltype(abc)>;</span><u></u> 
   <u></u><u></u><b>// even this declaration, instead of the above, gives the same warning</b><u></u></p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
<u></u> <u></u></p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
[[noreturn]]<u></u> <u></u></p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
inline void IDontReturn () noexcept<u></u> <u></u></p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
{<u></u> <u></u></p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
    std::terminate ();<u></u> <u></u></p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
}<u></u> <u></u></p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
<u></u><br>
<u></u></p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
<u></u><span style="background-color:rgb(255,255,255);display:inline">static MyNoReturn   gvar {IDontReturn};</span><u></u> <u></u> <u></u></p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
</p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
<u></u> <u></u></p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
[[noreturn]]<u></u> <u></u></p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
inline void<u></u> <u></u></p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
CallIDontReturn () noexcept<u></u> <u></u></p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
{<u></u> <u></u></p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
    gvar ();<u></u>                                 // <b>here is where clang gives
<span style="color:rgb(37,36,35);font-family:"Segoe UI",system-ui,"Apple Color Emoji","Segoe UI Emoji",sans-serif;font-size:14px;background-color:rgb(255,255,255);display:inline">
<i>warning: function declared 'noreturn' should not return [-Winvalid-noreturn]</i></span></b><u></u></p>
<p class="MsoNormal" style="margin:0in;font-size:11pt;font-family:Calibri,sans-serif">
<span style="font-family:Calibri,sans-serif;font-size:11pt;color:rgb(0,0,0)">}</span><u></u> <u></u><br>
</p>
<br>
</div>
<div style="font-family:Calibri,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
We have the used the below command to compile:</div>
<div style="font-family:Calibri,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<span style="color:rgb(37,36,35);font-family:"Segoe UI",system-ui,"Apple Color Emoji","Segoe UI Emoji",sans-serif;font-size:14px">clang++ -std=c++17 -Wall -o runusing usingst.cpp</span><br>
</div>
<div style="font-family:Calibri,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<span style="color:rgb(37,36,35);font-family:"Segoe UI",system-ui,"Apple Color Emoji","Segoe UI Emoji",sans-serif;font-size:14px"><br>
</span></div>
<div><font color="#252423" face="Segoe UI, system-ui, Apple Color Emoji, Segoe UI Emoji, sans-serif"><span style="font-size:14px">gcc does not show this warning.</span></font></div>
<div><font color="#252423" face="Segoe UI, system-ui, Apple Color Emoji, Segoe UI Emoji, sans-serif"><span style="font-size:14px"><br>
</span></font></div>
<div><font color="#252423" face="Segoe UI, system-ui, Apple Color Emoji, Segoe UI Emoji, sans-serif"><span style="font-size:14px">Please let us know how we can use 'using' clause to declare function pointer to a function that does not return, so
 that this warning does not show up.</span></font></div>
<div><font color="#252423" face="Segoe UI, system-ui, Apple Color Emoji, Segoe UI Emoji, sans-serif"><span style="font-size:14px"><br>
</span></font></div>
<div><font color="#252423" face="Segoe UI, system-ui, Apple Color Emoji, Segoe UI Emoji, sans-serif"><span style="font-size:14px">Regards,</span></font></div>
<div><font color="#252423" face="Segoe UI, system-ui, Apple Color Emoji, Segoe UI Emoji, sans-serif"><span style="font-size:14px">Manu  </span></font></div>
</div>

_______________________________________________<br>
cfe-users mailing list<br>
<a href="mailto:cfe-users@lists.llvm.org" target="_blank">cfe-users@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users</a><br>
</blockquote></div>