<div dir="ltr"><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Dec 8, 2020 at 6:52 AM Everett Maus via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@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>So yes--that would work.</div><div><br></div><div>I think for that route, though, it would be probably useful to try to output some more information than just std::terminate does. (i.e. that would work as a proof of concept, but getting more debug information the way you do with noexcept functions or functions without a handler would be more user friendly).</div></div></blockquote><div>The user can control what std::terminate does.<br></div><div> </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><br></div><div>The other reason I was hesitant to go that route is that I was worried about the impact of that on binary size (as that's... I think 4+ bytes per function added for the .gcc_except_table sections, as opposed to just 4 bytes for the empty section).  That seems fine for a small binary, but seems likely to be expensive-to-prohibitive for large binaries/libraries.</div></div></blockquote><div>Not sure how much binary size balances with other concerns, but it sounds to me that the methods proposed are ones that would result in false positives where unwinding through the frame would have resulted in no action even when compiled with exceptions fully on.</div><div><br></div><div>
<div>Perhaps leaving functions that would otherwise be "transparent" to exception handling alone is already implied?<br></div>

</div><div><br></div><div>If the baseline for the new mode is instead the fully exception-aware one, then I think one form of the desired functionality (with high granularity in terms of avoiding false positives) is to:</div><div>error on compiling try-blocks,</div><div>make cleanup landing pads terminate,</div><div>leave noexcept(true) alone,</div><div>and, for dynamic exception specifications, call terminate instead of unexpected.</div><div><br></div></div></div>