[Bug c++/39862] [4.5 Regression] verify_eh_tree failed with -O2
--- Comment #7 from hubicka at gcc dot gnu dot org 2009-06-04 15:03 --- Added testcase and closing the bug -- hubicka at gcc dot gnu dot org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39862
[Bug c++/39862] [4.5 Regression] verify_eh_tree failed with -O2
--- Comment #6 from reichelt at gcc dot gnu dot org 2009-05-22 22:19 --- The bug disappeared between 2009-05-06 and 2009-05-09. So it looks like your suggested patch really fixed the problem: 2009-05-09 Jan Hubicka * tree-eh.c (struct leh_state): Remove prev_try. (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do not track prev_try. * except.c (gen_eh_region_cleanup, duplicate_eh_regions, copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label, remove_eh_handler_and_replace, foreach_reachable_handler, verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer. * except.h (struct eh_region): Remove eh_region_u_cleanup. (gen_eh_region_cleanup): Update prototype. Would you mind adding a testcase so we can close the PR? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39862
[Bug c++/39862] [4.5 Regression] verify_eh_tree failed with -O2
--- Comment #5 from hubicka at ucw dot cz 2009-05-08 19:44 --- Subject: Re: [4.5 Regression] verify_eh_tree failed with -O2 This is very sick side case of updating prev_try pointer in duplicate_eh_edges. I think it is clear that maintaining prev_try pointer just to slightly speed up the lookup in foreach_reachable_handler is highly impractical. Once the other bugfix to EH code is in the tree, I will test patch removing prev_try and replacing its use by find_prev_try. Honza -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39862
[Bug c++/39862] [4.5 Regression] verify_eh_tree failed with -O2
-- mmitchel at gcc dot gnu dot org changed: What|Removed |Added Priority|P3 |P1 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39862
[Bug c++/39862] [4.5 Regression] verify_eh_tree failed with -O2
--- Comment #4 from reichelt at gcc dot gnu dot org 2009-04-29 12:33 --- Confirmed. Reduced testcase (crashes with "-O"): == struct A { virtual ~A() {} }; struct B : A { virtual ~B() { foo(); } void foo(); }; struct C : B { C(const C& c) : B(c) { foo(); } }; void bar(const C& c) { try { new C(c); } catch(...) {} } == -- reichelt at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|-00-00 00:00:00 |2009-04-29 12:33:01 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39862
[Bug c++/39862] [4.5 Regression] verify_eh_tree failed with -O2
--- Comment #3 from reichelt at gcc dot gnu dot org 2009-04-29 08:58 --- Shorter testcase, which still includes , though. It crashes with "-O" and above: == #include struct A { virtual ~A() {} }; struct B : A { virtual ~B() { foo(); } void foo(); }; struct C : B { C(); C(const C& c) : B(c) { foo(); } virtual ~C(); }; void bar(std::map m) { m.insert(std::pair(0, C())); } == -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39862
[Bug c++/39862] [4.5 Regression] verify_eh_tree failed with -O2
--- Comment #2 from hjl dot tools at gmail dot com 2009-04-23 13:40 --- Revision 145800 is good and revision 145813 is bad. It may be caused by revision 145805: http://gcc.gnu.org/ml/gcc-cvs/2009-04/msg00428.html -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39862
[Bug c++/39862] [4.5 Regression] verify_eh_tree failed with -O2
-- rguenth at gcc dot gnu dot org changed: What|Removed |Added CC||hubicka at gcc dot gnu dot ||org Keywords||ice-on-valid-code Summary|verify_eh_tree failed with -|[4.5 Regression] |O2 |verify_eh_tree failed with - ||O2 Target Milestone|--- |4.5.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39862