]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fix null-pointer dereference in delete_dead_or_redundant_call [PR102451]
authorFeng Xue <fxue@os.amperecomputing.com>
Thu, 23 Sep 2021 00:47:45 +0000 (08:47 +0800)
committerFeng Xue <fxue@os.amperecomputing.com>
Fri, 24 Sep 2021 03:00:00 +0000 (11:00 +0800)
2021-09-23  Feng Xue  <fxue@os.amperecomputing.com>

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

index 98daa8ab24c966d107c09f436fb474eb805069da..27287fe88ee1d9cee10c8ff08fa4473198df3a0c 100644 (file)
@@ -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);
     }
 }