https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106627

--- Comment #2 from Simon Rainer <gcc.gnu at vvalter dot com> ---
Created attachment 53518
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=53518&action=edit
Proposed patch: Set TREE_NOTHROW correctly

I think I identified the issue and found a fix.

ix86_get_function_versions_dispatcher creates a new dispatch declaration that
has always TREE_NOTHROW set to 1, because it is created by build_fn_decl.

It seems like the original function declaration has TREE_NOTHROW set correctly,
so it's enough to set TREE_NOTHROW on the newly created dispatch declaration to
this value.

With the attached patch, I was able to catch exceptions from multiversioned
functions as expected. I also checked manually that if none of the function
versions raise an exception, TREE_NOTHROW is correctly set to 1.

The same code is used for RS/6000 and I'm pretty confident that the same patch
works there, but I'm unable to test this.

Reply via email to