This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: trying to glue Modula-3 onto egcs table based exception handling support
- To: gcc at gcc dot gnu dot org, mef at cs dot washington dot edu
- Subject: Re: trying to glue Modula-3 onto egcs table based exception handling support
- From: Mike Stump <mrs at windriver dot com>
- Date: Wed, 31 May 2000 12:15:51 -0700 (PDT)
> From: Marc Fiuczynski <mef@cs.washington.edu>
> To: "'gcc@gcc.gnu.org'" <gcc@gcc.gnu.org>
> Date: Wed, 31 May 2000 10:30:22 -0700
First, a meta comment. We'd be more inclined to help you, if the
Modula 3 front end were checked into the gcc tree. Please convince
the owners of the code to assign copyright to the FSF and submit it.
Second, for development, it is better (I think, but could be
debatable) to use the top of the tree cvs.
I can't just hop into gdb and see where you are and help you debug it,
if the sources are handy. The gcc cvs tree is handy to me. ftping
some random software isn't.
> Just to get things working I built a special __m3throw() handler that
> would find the correct exception handler. Further, I did not use the
> expand_eh_region_start(), expand_eh_region_end(), etc. calls. I suppose
> at this point all of you will tell me: "what a big mistake, Marc!". Ok,
> I see my wrong doings and would now like to do it properly.
As I said before, get rid of m3throw, if you haven't yet.
> I've read the comments at the beginning of except.c as well as the
> Exception Handling text from
> http://gcc.gnu.org/onlinedocs/gxxint_1.html#SEC13. Unfortunately, I
> have not succeeded to get things to work according to that
> documentation. I am hoping that someone on this list could help me.
I can try. I looked at the two problems you mentioned, I don't have
anything directly helpful to say. Crack out gdb is the only think
that comes to mind. Also, comparative analysis between say the C++
frontend and Modula 3 might shed some light. Similar things in the
languages should call similar fucntions and produce similar
datastructures.
Instead of trying the catch machinery, try your hand at just
expand_eh_region_start and _end, and see if you can compile and
optimize it, then add in a throw inbetween, and see if you can get it
to work. Then you can compare that rtl to the rtl generated when you
use the catch functions, see how they differ and why.