public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "law at redhat dot com" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/61515] [4.9/5 Regression] Extremely long compile time for generated code Date: Tue, 04 Nov 2014 23:03:00 -0000 [thread overview] Message-ID: <bug-61515-4-bMRR1Zoany@http.gcc.gnu.org/bugzilla/> (raw) In-Reply-To: <bug-61515-4@http.gcc.gnu.org/bugzilla/> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61515 --- Comment #23 from Jeffrey A. Law <law at redhat dot com> --- The piece you're missing in this is that when we seen an assignment to some SSA_NAME, call it LHS and we've traversed a backedge, then we have to walk through all the equivalences and see if there's anything that's been marked as equivalent to LHS and invalidate those. Then we also ahve to invalidate LHS. for (unsigned int i = 1; i < num_ssa_names; i++) if (ssa_name (i) && SSA_NAME_VALUE (ssa_name (i)) == lhs) record_temporary_equivalence (ssa_name (i), NULL_TREE, stack); if (SSA_NAME_VALUE (lhs)) record_temporary_equivalence (lhs, NULL_TREE, stack); The loop finds handles things equivalent to LHS, the second handles LHS itself. Both are required for correctness. In the past there was a map similar to your implementation, but it's not sufficient. See pr61289.C and pr61289-2.C. The problem is you may need to invalidate equivalences that are created *outside* tree-ssa-threadedge.c. So any attempts to track inside tree-ssa-threadedge are not sufficient for correctness. What's still not clear to me here is *why* we're calling the invalidation code in the first place. It's only supposed to be called when we encounter a statement which produces an output that we can't handle *and* we've traversed a backedge. The combination of those two events is supposed to be very rare. Otherwise the invalidation is obviously too expensive. That's why I suggested in c#12 that we need to look at *why* we're calling the invalidation code at all.
next prev parent reply other threads:[~2014-11-04 23:03 UTC|newest] Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-06-15 23:23 [Bug tree-optimization/61515] New: " astrange at ithinksw dot com 2014-06-15 23:24 ` [Bug tree-optimization/61515] " astrange at ithinksw dot com 2014-06-16 2:40 ` pinskia at gcc dot gnu.org 2014-06-16 6:44 ` astrange at ithinksw dot com 2014-06-16 8:28 ` rguenth at gcc dot gnu.org 2014-06-16 9:45 ` rguenth at gcc dot gnu.org 2014-06-16 9:47 ` rguenth at gcc dot gnu.org 2014-06-16 11:19 ` [Bug tree-optimization/61515] [4.10 Regression] " rguenth at gcc dot gnu.org 2014-06-17 11:11 ` rguenth at gcc dot gnu.org 2014-06-17 11:23 ` rguenth at gcc dot gnu.org 2014-06-17 11:48 ` rguenth at gcc dot gnu.org 2014-06-17 12:00 ` [Bug tree-optimization/61515] [4.9/4.10 " rguenth at gcc dot gnu.org 2014-06-17 19:34 ` law at redhat dot com 2014-06-18 7:45 ` rguenther at suse dot de 2014-06-26 12:50 ` rguenth at gcc dot gnu.org 2014-07-16 13:28 ` jakub at gcc dot gnu.org 2014-10-21 9:39 ` [Bug tree-optimization/61515] [4.9/5 " rguenth at gcc dot gnu.org 2014-10-21 9:46 ` rguenth at gcc dot gnu.org 2014-10-21 9:52 ` rguenth at gcc dot gnu.org 2014-10-21 9:55 ` rguenth at gcc dot gnu.org 2014-10-21 10:05 ` rguenth at gcc dot gnu.org 2014-10-21 11:19 ` rguenth at gcc dot gnu.org 2014-10-21 11:59 ` rguenth at gcc dot gnu.org 2014-10-30 10:38 ` jakub at gcc dot gnu.org 2014-11-04 23:03 ` law at redhat dot com [this message] 2014-11-05 12:35 ` rguenth at gcc dot gnu.org 2014-11-06 21:45 ` law at redhat dot com 2014-11-07 8:33 ` rguenth at gcc dot gnu.org 2014-11-07 16:47 ` law at redhat dot com 2014-11-07 22:55 ` law at gcc dot gnu.org 2015-06-26 20:04 ` [Bug tree-optimization/61515] [4.9 " jakub at gcc dot gnu.org 2015-06-26 20:34 ` jakub 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-61515-4-bMRR1Zoany@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).