public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "rguenth at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug target/101523] Huge number of combine attempts Date: Fri, 22 Mar 2024 12:38:10 +0000 [thread overview] Message-ID: <bug-101523-4-ba4PppT3jp@http.gcc.gnu.org/bugzilla/> (raw) In-Reply-To: <bug-101523-4@http.gcc.gnu.org/bugzilla/> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101523 --- Comment #48 from Richard Biener <rguenth at gcc dot gnu.org> --- So another "simple" way is to keep the redundant insn walking ("it's O(1)") but remember processsed insns and only re-process those we mark as such. There might be a free "visited" bit on rtx_insn, who knows, the following uses a bitmap to track this. Likely where we set/update added_links_insn we should mark insns for re-processing. A worklist, if it were to be processed in instruction order, would need to be kept ordered and DF docs say DF_INSN_LUID isn't to be trusted after adding/removing insns. diff --git a/gcc/combine.cc b/gcc/combine.cc index a4479f8d836..c2f04e6b86e 100644 --- a/gcc/combine.cc +++ b/gcc/combine.cc @@ -1106,6 +1106,8 @@ insn_a_feeds_b (rtx_insn *a, rtx_insn *b) return false; } ^L +static bitmap processed; + /* Main entry point for combiner. F is the first insn of the function. NREGS is the first unused pseudo-reg number. @@ -1211,6 +1213,8 @@ combine_instructions (rtx_insn *f, unsigned int nregs) setup_incoming_promotions (first); last_bb = ENTRY_BLOCK_PTR_FOR_FN (cfun); int max_combine = param_max_combine_insns; + processed = BITMAP_ALLOC (NULL); + bitmap_tree_view (processed); FOR_EACH_BB_FN (this_basic_block, cfun) { @@ -1231,6 +1235,7 @@ combine_instructions (rtx_insn *f, unsigned int nregs) label_tick_ebb_start = label_tick; last_bb = this_basic_block; + bitmap_clear (processed); rtl_profile_for_bb (this_basic_block); for (insn = BB_HEAD (this_basic_block); insn != NEXT_INSN (BB_END (this_basic_block)); @@ -1240,6 +1245,9 @@ combine_instructions (rtx_insn *f, unsigned int nregs) if (!NONDEBUG_INSN_P (insn)) continue; + if (!bitmap_set_bit (processed, INSN_UID (insn))) + continue; + while (last_combined_insn && (!NONDEBUG_INSN_P (last_combined_insn) || last_combined_insn->deleted ())) @@ -1427,6 +1435,7 @@ retry: ; } } + BITMAP_FREE (processed); default_rtl_profile (); clear_bb_flags (); @@ -4758,6 +4767,14 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0, if (added_notes_insn && DF_INSN_LUID (added_notes_insn) < DF_INSN_LUID (ret)) ret = added_notes_insn; + bitmap_clear_bit (processed, INSN_UID (i3)); + if (newi2pat) + bitmap_clear_bit (processed, INSN_UID (newi2pat)); + if (added_links_insn) + bitmap_clear_bit (processed, INSN_UID (added_links_insn)); + if (added_notes_insn) + bitmap_clear_bit (processed, INSN_UID (added_notes_insn)); + return ret; } ^L
next prev parent reply other threads:[~2024-03-22 12:38 UTC|newest] Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-07-20 9:35 [Bug rtl-optimization/101523] New: " krebbel at gcc dot gnu.org 2021-07-20 9:41 ` [Bug rtl-optimization/101523] " krebbel at gcc dot gnu.org 2021-07-20 9:42 ` krebbel at gcc dot gnu.org 2021-07-20 21:27 ` segher at gcc dot gnu.org 2024-02-24 5:45 ` krebbel at gcc dot gnu.org 2024-02-25 10:53 ` segher at gcc dot gnu.org 2024-02-25 15:06 ` segher at gcc dot gnu.org 2024-03-02 18:43 ` sarah.kriesch at opensuse dot org 2024-03-02 21:04 ` sjames at gcc dot gnu.org 2024-03-03 19:32 ` segher at gcc dot gnu.org 2024-03-04 8:18 ` krebbel at gcc dot gnu.org 2024-03-04 16:31 ` segher at gcc dot gnu.org 2024-03-04 16:49 ` sarah.kriesch at opensuse dot org 2024-03-04 21:26 ` segher at gcc dot gnu.org 2024-03-05 7:31 ` krebbel at gcc dot gnu.org 2024-03-05 10:36 ` sarah.kriesch at opensuse dot org 2024-03-06 22:49 ` segher at gcc dot gnu.org 2024-03-06 22:53 ` segher at gcc dot gnu.org 2024-03-06 23:15 ` pinskia at gcc dot gnu.org 2024-03-07 9:26 ` krebbel at gcc dot gnu.org 2024-03-07 9:28 ` krebbel at gcc dot gnu.org 2024-03-07 9:34 ` krebbel at gcc dot gnu.org 2024-03-07 15:51 ` krebbel at gcc dot gnu.org 2024-03-07 15:52 ` krebbel at gcc dot gnu.org 2024-03-07 16:11 ` segher at gcc dot gnu.org 2024-03-07 16:19 ` segher at gcc dot gnu.org 2024-03-07 16:53 ` pinskia at gcc dot gnu.org 2024-03-07 16:57 ` pinskia at gcc dot gnu.org 2024-03-07 18:15 ` segher at gcc dot gnu.org 2024-03-07 19:42 ` segher at gcc dot gnu.org 2024-03-07 19:45 ` jakub at gcc dot gnu.org 2024-03-07 20:10 ` segher at gcc dot gnu.org 2024-03-07 20:17 ` krebbel at gcc dot gnu.org 2024-03-07 20:53 ` krebbel at gcc dot gnu.org 2024-03-20 11:53 ` [Bug target/101523] " rguenth at gcc dot gnu.org 2024-03-21 7:56 ` segher at gcc dot gnu.org 2024-03-21 8:15 ` rguenth at gcc dot gnu.org 2024-03-21 8:27 ` rguenth at gcc dot gnu.org 2024-03-21 12:57 ` segher at gcc dot gnu.org 2024-03-21 12:58 ` segher at gcc dot gnu.org 2024-03-21 13:15 ` rguenth at gcc dot gnu.org 2024-03-21 13:22 ` rguenth at gcc dot gnu.org 2024-03-22 8:07 ` rguenth at gcc dot gnu.org 2024-03-22 9:41 ` rguenth at gcc dot gnu.org 2024-03-22 9:42 ` sjames at gcc dot gnu.org 2024-03-22 9:42 ` sjames at gcc dot gnu.org 2024-03-22 9:52 ` rguenth at gcc dot gnu.org 2024-03-22 12:17 ` rguenth at gcc dot gnu.org 2024-03-22 12:38 ` rguenth at gcc dot gnu.org [this message] 2024-03-27 14:35 ` sarah.kriesch at opensuse dot org 2024-03-27 16:10 ` [Bug rtl-optimization/101523] " cvs-commit at gcc dot gnu.org 2024-03-27 16:53 ` segher at gcc dot gnu.org 2024-03-27 16:55 ` segher at gcc dot gnu.org 2024-04-03 10:58 ` rguenth at gcc dot gnu.org 2024-04-05 11:48 ` segher at gcc dot gnu.org 2024-04-05 12:20 ` rguenth at gcc dot gnu.org 2024-04-10 6:02 ` rguenth at gcc dot gnu.org 2024-04-10 15:51 ` segher at gcc dot gnu.org 2024-04-10 15:57 ` jakub at gcc dot gnu.org 2024-04-10 17:03 ` rguenth at gcc dot gnu.org 2024-04-10 17:45 ` sarah.kriesch at opensuse dot org 2024-05-04 6:00 ` segher at gcc dot gnu.org 2024-05-04 13:14 ` sarah.kriesch at opensuse dot org 2024-05-04 17:30 ` segher at gcc dot gnu.org 2024-05-06 9:21 ` rguenther at suse dot de 2024-05-06 9:40 ` segher at kernel dot crashing.org 2024-05-06 9:42 ` segher at gcc dot gnu.org 2024-05-06 9:46 ` rguenth at gcc dot gnu.org
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-101523-4-ba4PppT3jp@http.gcc.gnu.org/bugzilla/ \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).