public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "hubicka at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug middle-end/109849] suboptimal code for vector walking loop Date: Fri, 16 Jun 2023 14:20:03 +0000 [thread overview] Message-ID: <bug-109849-4-cXhtGtpsEr@http.gcc.gnu.org/bugzilla/> (raw) In-Reply-To: <bug-109849-4@http.gcc.gnu.org/bugzilla/> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109849 --- Comment #14 from Jan Hubicka <hubicka at gcc dot gnu.org> --- One interesting situation is: void std::vector<std::pair<unsigned int, unsigned int> >::push_back (struct vector * const this, const struct value_type & __x) { struct __normal_iterator D.27894; struct pair * _1; struct pair * _2; struct pair * _3; <bb 2> [local count: 1073741824]: _1 = this_6(D)->D.26707._M_impl.D.26014._M_finish; _2 = this_6(D)->D.26707._M_impl.D.26014._M_end_of_storage; if (_1 != _2) goto <bb 3>; [82.57%] else goto <bb 4>; [17.43%] <bb 3> [local count: 886588625]: *_1 = MEM[(const struct pair &)__x_7(D)]; _3 = _1 + 8; this_6(D)->D.26707._M_impl.D.26014._M_finish = _3; goto <bb 5>; [100.00%] <bb 4> [local count: 187153200]: D.27894._M_current = _1; std::vector<std::pair<unsigned int, unsigned int> >::_M_realloc_insert<const std::pair<unsigned int, unsigned int>&> (this_6(D), D.27894, __x_7(D)); <bb 5> [local count: 1073741824]: return; } here we could do partial inlining and offline the call to _M_realloc_insert but we fail to cut since _1 is already load: Split point at BB 4 header time: 9.302800 header size: 9 split time: 2.440200 split size: 5 bbs: 4 SSA names to pass: 1, 9, 11 Refused: need to pass non-param values It should be easy to insert code loading the parameter again in the split part. We still hit the SRA limitation since this would be still escaping, but it is another missed optimization on this simple testcase.
next prev parent reply other threads:[~2023-06-16 14:20 UTC|newest] Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-05-13 22:26 [Bug middle-end/109849] New: " hubicka at gcc dot gnu.org 2023-05-13 22:32 ` [Bug middle-end/109849] " pinskia at gcc dot gnu.org 2023-05-13 22:40 ` pinskia at gcc dot gnu.org 2023-05-14 5:57 ` amonakov at gcc dot gnu.org 2023-05-14 9:58 ` hubicka at ucw dot cz 2023-05-14 10:01 ` hubicka at ucw dot cz 2023-05-15 6:56 ` rguenth at gcc dot gnu.org 2023-05-17 14:53 ` hubicka at gcc dot gnu.org 2023-05-17 20:36 ` rguenth at gcc dot gnu.org 2023-05-18 9:35 ` hubicka at gcc dot gnu.org 2023-05-18 11:54 ` rguenth at gcc dot gnu.org 2023-05-18 13:00 ` hubicka at gcc dot gnu.org 2023-05-23 9:57 ` cvs-commit at gcc dot gnu.org 2023-05-23 10:10 ` rguenth at gcc dot gnu.org 2023-05-24 11:19 ` cvs-commit at gcc dot gnu.org 2023-06-16 14:20 ` hubicka at gcc dot gnu.org [this message] 2023-06-18 16:59 ` cvs-commit at gcc dot gnu.org 2023-06-19 16:28 ` cvs-commit at gcc dot gnu.org 2023-06-26 16:30 ` cvs-commit at gcc dot gnu.org 2023-06-28 9:47 ` cvs-commit at gcc dot gnu.org 2023-06-29 20:46 ` cvs-commit at gcc dot gnu.org 2023-06-30 14:28 ` cvs-commit at gcc dot gnu.org 2023-11-19 15:25 ` hubicka at gcc dot gnu.org 2023-11-21 14:17 ` cvs-commit at gcc dot gnu.org 2023-11-21 15:12 ` hubicka at gcc dot gnu.org 2023-11-24 16:35 ` cvs-commit at gcc dot gnu.org 2023-11-24 17:00 ` cvs-commit at gcc dot gnu.org 2023-11-24 17:00 ` jamborm at gcc dot gnu.org 2023-11-27 14:39 ` rguenth at gcc dot gnu.org 2023-11-28 9:33 ` redi at gcc dot gnu.org 2023-11-28 10:32 ` jamborm at gcc dot gnu.org 2023-11-28 12:41 ` redi at gcc dot gnu.org 2023-11-28 13:29 ` redi at gcc dot gnu.org 2023-11-28 15:29 ` redi at gcc dot gnu.org 2023-11-28 22:21 ` redi at gcc dot gnu.org 2023-11-29 12:27 ` hubicka at ucw dot cz 2023-11-29 15:25 ` cvs-commit at gcc dot gnu.org 2024-01-03 17:41 ` jamborm at gcc dot gnu.org 2024-05-30 11:11 ` redi at gcc dot gnu.org 2024-06-03 19:38 ` cvs-commit at gcc dot gnu.org 2024-06-03 19:54 ` cvs-commit 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-109849-4-cXhtGtpsEr@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).