On 2020-11-12 16:51, Jeff Law wrote: > > On 3/11/20 6:38 PM, J.W. Jagersma via Gcc-patches wrote: >> The following patch extends the generation of exception handling >> information, so that it is possible to catch exceptions thrown from >> volatile asm statements, when -fnon-call-exceptions is enabled. Parts >> of the gcc code already suggested this should be possible, but it was >> never fully implemented. >> >> Two new test cases are added. The target-dependent test should pass on >> platforms where throwing from a signal handler is allowed. The only >> platform I am aware of where that is the case is *-linux-gnu, so it is >> set to XFAIL on all others. >> >> gcc/ >> 2020-03-11 Jan W. Jagersma <jwjager...@gmail.com> >> >> PR inline-asm/93981 >> * tree-cfg.c (make_edges_bb): Make EH edges for GIMPLE_ASM. >> * tree-eh.c (lower_eh_constructs_2): Add case for GIMPLE_ASM. >> Assign register output operands to temporaries. >> * doc/extend.texi: Document that volatile asms can now throw. >> >> gcc/testsuite/ >> 2020-03-11 Jan W. Jagersma <jwjager...@gmail.com> >> >> PR inline-asm/93981 >> * g++.target/i386/pr93981.C: New test. >> * g++.dg/eh/pr93981.C: New test. > > Is this the final version of the patch? Do we have agreement on the > sematics for output operands, particularly memory operands? The last > few messages in the March thread lead me to believe that's still not > settled. > > > Jeff
Hi Jeff, >From what I remember, no consensus was reached. The discussion didn't seem to be going anywhere, and I had found a suitable workaround, so the issue dropped off my radar. However this workaround now turned out to be somewhat fragile so I do hope to see this implemented in gcc someday. I'll have to check but I do think this is the "best" version I have of this patch. In my most recent branch here I changed all memory operands to inout, but I recall there being some problem with this. Anyway, as I think Richard said (most of this goes over my head), I think this is best left up to the user. If one expects their asm to throw they would also be smart enough to use the '+' modifier so that previous assignments are not optimized out.