Message ID | SN6PR01MB4958F74459B7FC49F5347255F7A39@SN6PR01MB4958.prod.exchangelabs.com |
---|---|
State | New |
Headers | show |
Series | Fix null-pointer dereference in delete_dead_or_redundant_call [PR102451] | expand |
On Thu, Sep 23, 2021 at 3:09 AM Feng Xue OS via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > Bootstrapped/regtested on x86_64-linux and aarch64-linux. OK for trunk and all affected branches. Thanks, Richard. > Thanks, > Feng > > --- > 2021-09-23 Feng Xue <fxue@os.amperecomputing.com> > > gcc/ChangeLog: > PR tree-optimization/102451 > * tree-ssa-dse.c (delete_dead_or_redundant_call): Record bb of stmt > before removal. > --- > gcc/tree-ssa-dse.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/gcc/tree-ssa-dse.c b/gcc/tree-ssa-dse.c > index 98daa8ab24c..27287fe88ee 100644 > --- a/gcc/tree-ssa-dse.c > +++ b/gcc/tree-ssa-dse.c > @@ -978,6 +978,7 @@ delete_dead_or_redundant_call (gimple_stmt_iterator *gsi, const char *type) > fprintf (dump_file, "\n"); > } > > + basic_block bb = gimple_bb (stmt); > tree lhs = gimple_call_lhs (stmt); > if (lhs) > { > @@ -985,7 +986,7 @@ delete_dead_or_redundant_call (gimple_stmt_iterator *gsi, const char *type) > gimple *new_stmt = gimple_build_assign (lhs, ptr); > unlink_stmt_vdef (stmt); > if (gsi_replace (gsi, new_stmt, true)) > - bitmap_set_bit (need_eh_cleanup, gimple_bb (stmt)->index); > + bitmap_set_bit (need_eh_cleanup, bb->index); > } > else > { > @@ -994,7 +995,7 @@ delete_dead_or_redundant_call (gimple_stmt_iterator *gsi, const char *type) > > /* Remove the dead store. */ > if (gsi_remove (gsi, true)) > - bitmap_set_bit (need_eh_cleanup, gimple_bb (stmt)->index); > + bitmap_set_bit (need_eh_cleanup, bb->index); > release_defs (stmt); > } > } > -- > 2.17.1 >
diff --git a/gcc/tree-ssa-dse.c b/gcc/tree-ssa-dse.c index 98daa8ab24c..27287fe88ee 100644 --- a/gcc/tree-ssa-dse.c +++ b/gcc/tree-ssa-dse.c @@ -978,6 +978,7 @@ delete_dead_or_redundant_call (gimple_stmt_iterator *gsi, const char *type) fprintf (dump_file, "\n"); } + basic_block bb = gimple_bb (stmt); tree lhs = gimple_call_lhs (stmt); if (lhs) { @@ -985,7 +986,7 @@ delete_dead_or_redundant_call (gimple_stmt_iterator *gsi, const char *type) gimple *new_stmt = gimple_build_assign (lhs, ptr); unlink_stmt_vdef (stmt); if (gsi_replace (gsi, new_stmt, true)) - bitmap_set_bit (need_eh_cleanup, gimple_bb (stmt)->index); + bitmap_set_bit (need_eh_cleanup, bb->index); } else { @@ -994,7 +995,7 @@ delete_dead_or_redundant_call (gimple_stmt_iterator *gsi, const char *type) /* Remove the dead store. */ if (gsi_remove (gsi, true)) - bitmap_set_bit (need_eh_cleanup, gimple_bb (stmt)->index); + bitmap_set_bit (need_eh_cleanup, bb->index); release_defs (stmt); } }