public inbox for gcc-prs@sourceware.org help / color / mirror / Atom feed
From: Gwenole Beauchesne <gbeauchesne@mandrakesoft.com> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, Subject: Re: target/7559: kdelibs miscompilation Date: Sat, 10 Aug 2002 06:16:00 -0000 [thread overview] Message-ID: <20020810115600.2021.qmail@sources.redhat.com> (raw) The following reply was made to PR target/7559; it has been noted by GNATS. From: Gwenole Beauchesne <gbeauchesne@mandrakesoft.com> To: gcc-gnats@gcc.gnu.org Cc: david@mandrakesoft.com, <aj@suse.de>, <jh@suse.cz>, <nobody@gcc.gnu.org>, <gcc-prs@gcc.gnu.org>, <gcc-bugs@gcc.gnu.org> Subject: Re: target/7559: kdelibs miscompilation Date: Sat, 10 Aug 2002 13:54:00 +0200 (CEST) > The following C testcase is equivalent in miscompiled-behavior. If you > don't want to bother compiling the C++ front-end for tests. ;-) This could be a mis-classification of the other eightbyte sub-object. 1) Actually, the following testcase fails too and occurs because we have a two eightbytes object, "sliced" in the middle (aka two sub-aggregates). As a result, only the first eightbyte is actually passed in register. The other one vanished. [gb@gauss vrac]$ cat struct.c extern void abort(); struct A { int x, y; }; struct R { struct A a, b; }; struct R R = { { 100, 100 }, { 200, 200 } }; void f(struct R r) { if (r.a.x != R.a.x || r.a.y != R.a.y || r.b.x != R.b.x || r.b.y != R.b.y) abort(); } int main() { f(R); return 0; } 2) The following testcase *won't* fail though we have a two eightbytes object, and is not "sliced" in. [gb@gauss vrac]$ cat other.c extern void abort(); struct A { int a, b, c, d; }; struct A X = { 100, 200, 300, 400 }; void f(struct A x) { if (x.a != X.a || x.b != X.b || x.c != X.c || x.d != X.d) abort(); } int main(void) { f(X); return 0; } 3) The last testcase is ultra-reduced to a two eightbytes object, with only one member in each one. That one do fails. extern void abort(); struct A { long x; }; struct R { struct A a, b; }; struct R R = { 100, 200 }; void f(struct R r) { if (r.a.x != R.a.x || r.b.x != R.b.x) abort(); } int main() { f(R); return 0; } 4) The <struct.c> testcase won't fail if we add some garbage in struct R, because the size of the object will be > 16 bytes, thus having MEMORY class. HTH, Gwenole.
next reply other threads:[~2002-08-10 11:56 UTC|newest] Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top 2002-08-10 6:16 Gwenole Beauchesne [this message] -- strict thread matches above, loose matches on Subject: below -- 2002-10-06 9:55 aj 2002-08-11 9:46 Andreas Jaeger 2002-08-10 6:46 Jan Hubicka 2002-08-09 11:06 Gwenole Beauchesne 2002-08-09 10:16 Gwenole Beauchesne 2002-08-09 9:56 gbeauchesne
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=20020810115600.2021.qmail@sources.redhat.com \ --to=gbeauchesne@mandrakesoft.com \ --cc=gcc-prs@gcc.gnu.org \ --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).