public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "hiraditya at msn dot com" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/109441] missed optimization when all elements of vector are known Date: Thu, 06 Apr 2023 18:40:22 +0000 [thread overview] Message-ID: <bug-109441-4-tB3LZp2PVx@http.gcc.gnu.org/bugzilla/> (raw) In-Reply-To: <bug-109441-4@http.gcc.gnu.org/bugzilla/> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109441 --- Comment #1 from AK <hiraditya at msn dot com> --- I guess a better test case is this: #include<vector> using namespace std; using T = int; T v(std::vector<T> v) { T s; std::fill(v.begin(), v.end(), T()); for (auto i = 0; i < v.size(); ++i) { s += v[i]; } return s; } which has similar effect. $ g++ -O3 -std=c++17 v(std::vector<int, std::allocator<int> >): push rbp push rbx sub rsp, 8 mov rbp, QWORD PTR [rdi+8] mov rcx, QWORD PTR [rdi] cmp rcx, rbp je .L7 sub rbp, rcx mov rdi, rcx xor esi, esi mov rbx, rcx mov rdx, rbp call memset mov rdi, rbp mov edx, 1 mov rcx, rbx sar rdi, 2 test rbp, rbp cmovne rdx, rdi cmp rbp, 12 jbe .L8 mov rax, rdx pxor xmm0, xmm0 shr rax, 2 sal rax, 4 add rax, rbx .L4: movdqu xmm2, XMMWORD PTR [rbx] add rbx, 16 paddd xmm0, xmm2 cmp rbx, rax jne .L4 movdqa xmm1, xmm0 psrldq xmm1, 8 paddd xmm0, xmm1 movdqa xmm1, xmm0 psrldq xmm1, 4 paddd xmm0, xmm1 movd eax, xmm0 test dl, 3 je .L1 and rdx, -4 mov esi, edx .L3: add eax, DWORD PTR [rcx+rdx*4] lea edx, [rsi+1] movsx rdx, edx cmp rdx, rdi jnb .L1 add esi, 2 lea r8, [0+rdx*4] add eax, DWORD PTR [rcx+rdx*4] movsx rsi, esi cmp rsi, rdi jnb .L1 add eax, DWORD PTR [rcx+4+r8] .L1: add rsp, 8 pop rbx pop rbp ret .L7: add rsp, 8 xor eax, eax pop rbx pop rbp ret .L8: xor eax, eax xor esi, esi xor edx, edx jmp .L3
next prev parent reply other threads:[~2023-04-06 18:40 UTC|newest] Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-04-06 18:31 [Bug tree-optimization/109441] New: " hiraditya at msn dot com 2023-04-06 18:36 ` [Bug tree-optimization/109441] " pinskia at gcc dot gnu.org 2023-04-06 18:40 ` hiraditya at msn dot com [this message] 2023-04-11 13:17 ` rguenth at gcc dot gnu.org 2023-05-17 17:23 ` hiraditya at msn dot com 2023-05-18 5:34 ` 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-109441-4-tB3LZp2PVx@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).