public inbox for gcc-prs@sourceware.org help / color / mirror / Atom feed
From: bangerth@dealii.org To: gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, niemayer@isg.de, nobody@gcc.gnu.org Subject: Re: c++/8826: "a >> b" differs from "a.operator>>(b)" in that virtual function calls are not avoided Date: Thu, 05 Dec 2002 11:34:00 -0000 [thread overview] Message-ID: <20021205193408.13197.qmail@sources.redhat.com> (raw) Synopsis: "a >> b" differs from "a.operator>>(b)" in that virtual function calls are not avoided State-Changed-From-To: open->analyzed State-Changed-By: bangerth State-Changed-When: Thu Dec 5 11:34:07 2002 State-Changed-Why: Confirmed. This is a very annoying bug, which would be nice if someone looked at it soon, since there should really be no reason why the two calls are treated differently; this raises the question whether there are more _correctness_ problems lurking somewhere. Note that the code uses a.operator>>(y) not a.A::operator>>(y) ! In any case, removing the asm labels that only are there to help reading the asm code, the second function where the virtual function call is elided is compiled into pushl %ebp movl %esp, %ebp subl $24, %esp movl 8(%ebp), %eax movl %ebp, %esp popl %ebp incl %eax ret which is a far cry from optimal. Essentially, the computation of the function's value has been scheduled after the epilog, but then pro- and epilog could be merged and deleted. This is not done. Things are a little better with -fomit-frame-pointer: subl $28, %esp movl 32(%esp), %eax addl $28, %esp incl %eax ret but still not optimal. http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8826
next reply other threads:[~2002-12-05 19:34 UTC|newest] Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top 2002-12-05 11:34 bangerth [this message] -- strict thread matches above, loose matches on Subject: below -- 2003-05-02 12:06 Giovanni Bajo 2002-12-05 10:56 niemayer
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=20021205193408.13197.qmail@sources.redhat.com \ --to=bangerth@dealii.org \ --cc=gcc-bugs@gcc.gnu.org \ --cc=gcc-gnats@gcc.gnu.org \ --cc=gcc-prs@gcc.gnu.org \ --cc=niemayer@isg.de \ --cc=nobody@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).