From 03a8d9ab4cea24a945bb283c580d53a134221b9b Mon Sep 17 00:00:00 2001 From: Feng Xue Date: Thu, 23 Sep 2021 08:47:45 +0800 Subject: [PATCH] Fix null-pointer dereference in delete_dead_or_redundant_call [PR102451] 2021-09-23 Feng Xue gcc/ 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 4967a5a99272..133cef3ac9ce 100644 --- a/gcc/tree-ssa-dse.c +++ b/gcc/tree-ssa-dse.c @@ -985,6 +985,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) { @@ -992,7 +993,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 { @@ -1001,7 +1002,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.47.2