<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Apr 4, 2017 at 8:19 AM, Aaron Ballman <span dir="ltr"><<a href="mailto:aaron@aaronballman.com" target="_blank">aaron@aaronballman.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Wed, Mar 22, 2017 at 8:45 PM, Hubert Tong via cfe-dev<br>
<<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>> wrote:<br>
> On Wed, Mar 22, 2017 at 7:21 PM, Hal Finkel <<a href="mailto:hfinkel@anl.gov">hfinkel@anl.gov</a>> wrote:<br>
>><br>
>><br>
>> On 03/22/2017 06:17 PM, Hubert Tong via cfe-dev wrote:<br>
>><br>
>> -fno-exceptions causes EH constructs such as try/catch,<br>
>> function-try-blocks, and throw expressions to be diagnosed with a severe<br>
>> error. That is, -f[no-]exceptions controls a language-support property.<br>
>><br>
>> For experiments in evaluating the cost of (unused) exception handling, and<br>
>> for cases where components are being deployed with the expectation that<br>
>> exceptions will not be thrown, etc. it is useful to allow EH constructs in<br>
>> the source, but to generate code with no handlers or cleanups.<br>
>><br>
>> I think that it still makes sense under such a mode to allow throw<br>
>> expressions to throw. This is consistent with -fno-exceptions still calling<br>
>> __cxa_bad_cast and __cxa_bad_typeid (which GCC also does, but not with<br>
>> __cxa_throw_bad_array_new_<wbr>length).<br>
>><br>
>> That is, the proposed semantics is essentially the same as for<br>
>> -fno-exceptions, except to treat try/catch and function-try-blocks as just<br>
>> normal code introducing no handlers, and to allow throw expressions.<br>
>><br>
>> -fno-exceptions already suppresses creation of cleanups for unwinding and<br>
>> the ignoring of exception specifications.<br>
>><br>
>> I like to think of this as -fignore-exceptions. I have a use for this, and<br>
>> I would like to know what people think.<br>
>><br>
>><br>
>> To summarize, code compiled with -fignore-exceptions can throw, but can't<br>
>> catch anything. All exceptions just unwind through all such code. Is that<br>
>> right?<br>
><br>
> That depends on what you mean by "unwind". Exceptions will go past all such<br>
> code without executing destructors.<br>
<br>
</div></div>Will throwing always result in calling std::terminate()? If so, does<br>
that call happen immediately upon executing the throw statement?<br>
<br>
Or, if you have one TU compiled with -fignore-exceptions that throws,<br>
and a second TU with -fno-ignore-exceptions that catches the exception<br>
thrown from the first TU, can the exception still be caught?<br></blockquote><div>The exception can still be caught.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class="HOEnZb"><font color="#888888"><br>
~Aaron<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
><br>
>><br>
>><br>
>>  -Hal<br>
>><br>
>><br>
>> -- HT<br>
>><br>
>><br>
>><br>
>> ______________________________<wbr>_________________<br>
>> cfe-dev mailing list<br>
>> <a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a><br>
>> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a><br>
>><br>
>><br>
>> --<br>
>> Hal Finkel<br>
>> Lead, Compiler Technology and Programming Languages<br>
>> Leadership Computing Facility<br>
>> Argonne National Laboratory<br>
><br>
><br>
><br>
> ______________________________<wbr>_________________<br>
> cfe-dev mailing list<br>
> <a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a><br>
><br>
</div></div></blockquote></div><br></div></div>