public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "jhaberman at gmail dot com" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug rtl-optimization/44194] New: struct returned by value generates useless stores Date: Wed, 19 May 2010 05:06:00 -0000 [thread overview] Message-ID: <bug-44194-19201@http.gcc.gnu.org/bugzilla/> (raw) Test case: -- #include <stdint.h> struct twoints { uint64_t a, b; } foo(); void bar(uint64_t a, uint64_t b); void func() { struct twoints s = foo(); bar(s.a, s.b); } -- $ gcc -save-temps -Wall -c -o testbad.o -msse2 -O3 -fomit-frame-pointer testbad.c $ objdump -d -r -M intel testbad.o testbad.o: file format elf64-x86-64 Disassembly of section .text: 0000000000000000 <func>: 0: 48 83 ec 28 sub rsp,0x28 4: 31 c0 xor eax,eax 6: e8 00 00 00 00 call b <func+0xb> 7: R_X86_64_PC32 foo-0x4 b: 48 89 04 24 mov QWORD PTR [rsp],rax f: 48 89 54 24 08 mov QWORD PTR [rsp+0x8],rdx 14: 48 89 d6 mov rsi,rdx 17: 48 89 44 24 10 mov QWORD PTR [rsp+0x10],rax 1c: 48 89 54 24 18 mov QWORD PTR [rsp+0x18],rdx 21: 48 89 c7 mov rdi,rax 24: 48 83 c4 28 add rsp,0x28 28: e9 00 00 00 00 jmp 2d <func+0x2d> 29: R_X86_64_PC32 bar-0x4 -- As you can see above, rax and rdx are stored to the stack twice, but these stores are unnecessary. $ gcc -v Using built-in specs. Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.4.3-4ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --program-suffix=-4.4 --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-plugin --enable-objc-gc --disable-werror --with-arch-32=i486 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) -- Summary: struct returned by value generates useless stores Product: gcc Version: 4.4.3 Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jhaberman at gmail dot com GCC build triplet: x86_64-linux-gnu GCC host triplet: x86_64-linux-gnu GCC target triplet: x86_64-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44194
next reply other threads:[~2010-05-19 5:06 UTC|newest] Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top 2010-05-19 5:06 jhaberman at gmail dot com [this message] 2010-05-19 9:39 ` [Bug rtl-optimization/44194] " rguenth at gcc dot gnu dot org 2010-05-19 10:14 ` jakub at gcc dot gnu dot org 2010-05-19 10:22 ` rguenth at gcc dot gnu dot org 2010-07-10 1:38 ` jhaberman at gmail dot com 2010-07-10 1:40 ` pinskia at gcc dot gnu dot org 2010-07-10 1:42 ` pinskia at gcc dot gnu dot org 2010-07-10 1:48 ` jhaberman at gmail dot com
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-44194-19201@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).