diff mbox series

rtl-optimization/105559 - avoid quadratic behavior in delete_insn_and_edges

Message ID 20220511113745.1285113A76@imap2.suse-dmz.suse.de
State New
Headers show
Series rtl-optimization/105559 - avoid quadratic behavior in delete_insn_and_edges | expand

Commit Message

Richard Biener May 11, 2022, 11:37 a.m. UTC
When the insn to delete is a debug insn there's no point in figuring
out whether it might be the last real insn and thus we have to purge
dead edges.

Bootstrap and regtest running on x86_64-unknown-linux-gnu.

2022-05-11  Richard Biener  <rguenther@suse.de>

	PR rtl-optimization/105559
	* cfgrtl.cc (delete_insn_and_edges): Only perform search to BB_END
	for non-debug insns.
---
 gcc/cfgrtl.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/gcc/cfgrtl.cc b/gcc/cfgrtl.cc
index 74ea14efc61..8e9fd1266b3 100644
--- a/gcc/cfgrtl.cc
+++ b/gcc/cfgrtl.cc
@@ -240,7 +240,7 @@  delete_insn_and_edges (rtx_insn *insn)
       basic_block bb = BLOCK_FOR_INSN (insn);
       if (BB_END (bb) == insn)
 	purge = true;
-      else if (DEBUG_INSN_P (BB_END (bb)))
+      else if (NONDEBUG_INSN_P (insn) && DEBUG_INSN_P (BB_END (bb)))
 	for (rtx_insn *dinsn = NEXT_INSN (insn);
 	     DEBUG_INSN_P (dinsn); dinsn = NEXT_INSN (dinsn))
 	  if (BB_END (bb) == dinsn)