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/113779] Very inefficient m68k code generated for simple copy loop Date: Tue, 06 Feb 2024 13:14:29 +0000 [thread overview] Message-ID: <bug-113779-4-0cTlUNXfAA@http.gcc.gnu.org/bugzilla/> (raw) In-Reply-To: <bug-113779-4@http.gcc.gnu.org/bugzilla/> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113779 Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2024-02-06 Ever confirmed|0 |1 --- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> --- It's already visible with a simple void f(const long* src, long* dst) { *dst++ = *src++; *dst = *src; } where we expand to RTL from _1 = *src_3(D); *dst_4(D) = _1; _2 = MEM[(const long int *)src_3(D) + 4B]; MEM[(long int *)dst_4(D) + 4B] = _2; there's nothing on GIMPLE that would split the add and RTLs auto-inc-dec pass doesn't do anything either. We'd need a form of "strength-reduction" or maybe targets prefering auto-inc/dec should not legitimize constant offsets before reload ... Note with one more copy you then see _1 = *src_4(D); *dst_5(D) = _1; _2 = MEM[(const long int *)src_4(D) + 4B]; MEM[(long int *)dst_5(D) + 4B] = _2; _3 = MEM[(const long int *)src_4(D) + 8B]; MEM[(long int *)dst_5(D) + 8B] = _3; and naiively splitting gives you src_6 = src_4(D) + 4; src_7 = src_4(D) + 8; that said, it's really sth for RTL since it's going to be highly target dependent which form is more efficient. The auto-inc pass is well structured, so it should be possible to extend it.
next prev parent reply other threads:[~2024-02-06 13:14 UTC|newest] Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-02-05 21:07 [Bug c/113779] New: " miro.kropacek at gmail dot com 2024-02-05 21:20 ` [Bug target/113779] " pinskia at gcc dot gnu.org 2024-02-06 7:58 ` rguenth at gcc dot gnu.org 2024-02-06 8:16 ` miro.kropacek at gmail dot com 2024-02-06 12:47 ` mikpelinux at gmail dot com 2024-02-06 12:58 ` miro.kropacek at gmail dot com 2024-02-06 13:14 ` rguenth at gcc dot gnu.org [this message] 2024-02-17 0:39 ` hp 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-113779-4-0cTlUNXfAA@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).