Re: [PATCH] tree-ssa-dse: Fix up go.test/test/fixedbugs/issue16095.go miscompilation [PR100382]
Jakub Jelinek writes: > The new DCE code inside of tree DSE removes in -fnon-call-exceptions > go code a load from NULL pointer the testcase relies on throwing an > exception and so the test hangs. > > The following patch just repeats a check that e.g. tree-ssa-dce.c > uses to prevent this. Thanks for tracking this down. Ian
Re: [PATCH] tree-ssa-dse: Fix up go.test/test/fixedbugs/issue16095.go miscompilation [PR100382]
On Mon, 3 May 2021, Jakub Jelinek wrote: > Hi! > > The new DCE code inside of tree DSE removes in -fnon-call-exceptions > go code a load from NULL pointer the testcase relies on throwing an > exception and so the test hangs. > > The following patch just repeats a check that e.g. tree-ssa-dce.c > uses to prevent this. > > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk? OK. Thanks, Richard. > 2021-05-03 Jakub Jelinek > > PR tree-optimization/100382 > * tree-ssa-dse.c: Include tree-eh.h. > (dse_dom_walker::before_dom_children): Don't remove stmts if > stmt_unremovable_because_of_non_call_eh_p is true. > > --- gcc/tree-ssa-dse.c.jj 2021-05-02 16:25:43.636266833 +0200 > +++ gcc/tree-ssa-dse.c2021-05-02 19:42:53.451320031 +0200 > @@ -39,6 +39,7 @@ along with GCC; see the file COPYING3. > #include "builtins.h" > #include "gimple-fold.h" > #include "gimplify.h" > +#include "tree-eh.h" > > /* This file implements dead store elimination. > > @@ -1193,7 +1194,8 @@ dse_dom_walker::before_dom_children (bas > /* When we remove dead stores make sure to also delete trivially >dead SSA defs. */ > if (has_zero_uses (DEF_FROM_PTR (def_p)) > - && !gimple_has_side_effects (stmt)) > + && !gimple_has_side_effects (stmt) > + && !stmt_unremovable_because_of_non_call_eh_p (cfun, stmt)) > { > if (dump_file && (dump_flags & TDF_DETAILS)) > { > > Jakub > > -- Richard Biener SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany; GF: Felix Imendörffer; HRB 36809 (AG Nuernberg)
[PATCH] tree-ssa-dse: Fix up go.test/test/fixedbugs/issue16095.go miscompilation [PR100382]
Hi! The new DCE code inside of tree DSE removes in -fnon-call-exceptions go code a load from NULL pointer the testcase relies on throwing an exception and so the test hangs. The following patch just repeats a check that e.g. tree-ssa-dce.c uses to prevent this. Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk? 2021-05-03 Jakub Jelinek PR tree-optimization/100382 * tree-ssa-dse.c: Include tree-eh.h. (dse_dom_walker::before_dom_children): Don't remove stmts if stmt_unremovable_because_of_non_call_eh_p is true. --- gcc/tree-ssa-dse.c.jj 2021-05-02 16:25:43.636266833 +0200 +++ gcc/tree-ssa-dse.c 2021-05-02 19:42:53.451320031 +0200 @@ -39,6 +39,7 @@ along with GCC; see the file COPYING3. #include "builtins.h" #include "gimple-fold.h" #include "gimplify.h" +#include "tree-eh.h" /* This file implements dead store elimination. @@ -1193,7 +1194,8 @@ dse_dom_walker::before_dom_children (bas /* When we remove dead stores make sure to also delete trivially dead SSA defs. */ if (has_zero_uses (DEF_FROM_PTR (def_p)) - && !gimple_has_side_effects (stmt)) + && !gimple_has_side_effects (stmt) + && !stmt_unremovable_because_of_non_call_eh_p (cfun, stmt)) { if (dump_file && (dump_flags & TDF_DETAILS)) { Jakub