This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [rfc] exception handling in gimple
Hi,
On Tue, 8 Sep 2009, Richard Henderson wrote:
> Still writing the changelog, but here's the version that's current in my
> tree as of this afternoon. Notable changes from the last version are:
> documentation added,
Marvelous.
While reading the except.c hunks I noticed this:
+ /* Handle three cases here:
+ (1) no reachable handler and no edge,
+ (2) reachable handler and an existing edge to post-landing-pad,
+ (3) reachable handler and a missing edge.
+ ??? Not sure why case 3 slips through to this point, it sure
+ seems like we shouldn't be introducing new statements that can
+ throw during the gimple->rtl lowering process. The alternative
+ is that we're losing edges somewhere, which is equally bad. */
Have you meanwhile found out why case 3 can happen there? Because, as you
say, expansion shouldn't introduce newly throwing things. Perhaps
something to do with builtin expansion that happen to expand (for whatever
reason) to normal calls that suddenly might throw?
Also, in the sjlj RTL expanders it's still building a cmp-jump sequence
in the (one) landing pad. Shouldn't this eventually also be done on the
tree-side already (to be able to use a switch)?
+/* YOUAREHERE: Replace with expand_resx. */
+
+rtx
+expand_builtin_eh_copy_values (tree exp)
I AM WHERE? :)
Ciao,
Michael.