This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]