search for: return_null_tree

Displaying 8 results from an estimated 8 matches for "return_null_tree".

2007 Dec 08
2
[LLVMdev] Darwin vs exceptions
...ses the unwinder to go into a loop. this is the bit I don't understand. Why does it go into a loop? How can the unwinder possibly know that the original code did not have a catch-all, since we tell it which catches there are and we say: there is a catch-all! > > - lang_eh_catch_all = return_null_tree; > > +/* lang_eh_catch_all = return_null_tree;*/ > Ok, cool :) Duncan, Anton, what do you guys think about this? This is wrong - it breaks the semantics of invoke and causes eh to not work properly in some cases (see my email to Dale). Ciao, Duncan.
2007 Dec 08
0
[LLVMdev] Darwin vs exceptions
...======================== > --- cp/except.c (revision 44663) > +++ cp/except.c (working copy) > @@ -104,7 +104,7 @@ > lang_eh_runtime_type = build_eh_type_type; > lang_protect_cleanup_actions = &cp_protect_cleanup_actions; > /* LLVM local */ > - lang_eh_catch_all = return_null_tree; > +/* lang_eh_catch_all = return_null_tree;*/ > } > > /* Returns an expression to be executed if an unhandled exception is > > and that works well for me; i.e., the gcc tests that exercise > exceptions work as well with the > two patches above (on x86) as they did befo...
2007 Dec 08
0
[LLVMdev] Darwin vs exceptions
...e IP of the throw and Unwind_Resume call were different, but when caching the CFA they are the same, which confuses Unwind_Resume. (This is darwin's unwinder but I think the patch I quoted is the only relevant change to generic gcc code. Could be wrong.) >>> - lang_eh_catch_all = return_null_tree; >>> +/* lang_eh_catch_all = return_null_tree;*/ > >> Ok, cool :) Duncan, Anton, what do you guys think about this? > > This is wrong - it breaks the semantics of invoke and causes > eh to not work properly in some cases (see my email to Dale). Well, it works a lot bet...
2007 Dec 08
4
[LLVMdev] Darwin vs exceptions
...======================================================== --- cp/except.c (revision 44663) +++ cp/except.c (working copy) @@ -104,7 +104,7 @@ lang_eh_runtime_type = build_eh_type_type; lang_protect_cleanup_actions = &cp_protect_cleanup_actions; /* LLVM local */ - lang_eh_catch_all = return_null_tree; +/* lang_eh_catch_all = return_null_tree;*/ } /* Returns an expression to be executed if an unhandled exception is and that works well for me; i.e., the gcc tests that exercise exceptions work as well with the two patches above (on x86) as they did before. Now I need some help: - Why was...
2007 Dec 09
1
[LLVMdev] Darwin vs exceptions
...is isn't simply a bug in where labels are placed etc, the frame info or the exception table setup etc? > (This is darwin's unwinder but I think the patch I quoted is the only > relevant change to generic gcc code. > Could be wrong.) > > >>> - lang_eh_catch_all = return_null_tree; > >>> +/* lang_eh_catch_all = return_null_tree;*/ > > > >> Ok, cool :) Duncan, Anton, what do you guys think about this? > > > > This is wrong - it breaks the semantics of invoke and causes > > eh to not work properly in some cases (see my email to Da...
2007 Dec 10
0
[LLVMdev] Darwin vs exceptions
...I guess an easy but undesirable fallback position is to tell the > inliner not to inline anything that invokes Unwind_Resume. If you push a "cleanup" instead of a catch-all on Darwin, does everything work? This is exactly what you get if you apply your patch - lang_eh_catch_all = return_null_tree; +/* lang_eh_catch_all = return_null_tree;*/ Ciao, Duncan.
2007 Dec 10
3
[LLVMdev] Darwin vs exceptions
On Dec 9, 2007, at 1:01 PM, Duncan Sands wrote: > Hi Dale, > >> #include <cstdio> >> class A { >> public: >> A() {} >> ~A() {} >> }; >> void f() { >> A a; >> throw 5.0; >> } >> main() { >> try { >> f(); >> } catch(...) { printf("caught\n"); } >> } > > this example
2007 Dec 10
3
[LLVMdev] Darwin vs exceptions
...e fallback position is to tell the >> inliner not to inline anything that invokes Unwind_Resume. > > If you push a "cleanup" instead of a catch-all on Darwin, does > everything work? This is exactly what you get if you apply your > patch > > - lang_eh_catch_all = return_null_tree; > +/* lang_eh_catch_all = return_null_tree;*/ No, things are much better than there were, but inlining functions that call Unwind_Resume still causes the problem we've been talking about. Disabling that as well makes everything work.