public inbox for gcc-prs@sourceware.org help / color / mirror / Atom feed
From: Casey Marshall <rsdio@metastatic.org> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, Subject: Re: java/8204: gcj -O2 to native reorders certain instructions improperly. Date: Sun, 23 Mar 2003 00:06:00 -0000 [thread overview] Message-ID: <20030323000601.17972.qmail@sources.redhat.com> (raw) The following reply was made to PR java/8204; it has been noted by GNATS. From: Casey Marshall <rsdio@metastatic.org> To: bangerth@dealii.org, gcc-gnats@gcc.gnu.org Cc: Subject: Re: java/8204: gcj -O2 to native reorders certain instructions improperly. Date: Sat, 22 Mar 2003 16:00:40 -0800 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 bangerth@dealii.org wrote: | Synopsis: gcj -O2 to native reorders certain instructions improperly. | | State-Changed-From-To: open->feedback | State-Changed-By: bangerth | State-Changed-When: Sat Mar 22 18:09:51 2003 | State-Changed-Why: | In your code, you are modifying i twice in the same line: | (f(s.charAt(i++)) << 4) | (f(s.charAt(i++)))) | I don't know enough about Java, but in C/C++ this will invoke | undefined behavior, since the standard doesn't prescribe | which of the two function calls happen first, and with | which value of i. Is this different in Java, i.e. does | the Java standard give guarantees as to the order in which | the sub-statements are executed? | I haven't gone through the JLS very carefully, but it does seem that a construction of this sort *should* produce the behavior I'd expect. Specifically, the JLS says that when evaluating expressions (chapter 15): 1. The left operand of a binary operator is evaluated first. 2. Respect is paid to operator precedence and parentheses. 3. Operands are evaluated fully before operation. The problem appeared to be that when compiled with -O2 the right expression was evaluated first, rather than the left (at least this is what the result *looked* like). It would seem out of character for some behavior to be undefined in Java anyway ;) That said, this type of statement *is* unnecessary, and I can do without it. Cheers, - -- Casey Marshall || rsdio@metastatic.org -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQE+fPkngAuWMgRGsWsRAgfrAJ9hZQv3K56c1udOyKsdMFgTUeAApgCfS+QP uuQ/e75sLqsfNYtciqpic2k= =bTs/ -----END PGP SIGNATURE-----
next reply other threads:[~2003-03-23 0:06 UTC|newest] Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top 2003-03-23 0:06 Casey Marshall [this message] -- strict thread matches above, loose matches on Subject: below -- 2003-03-25 22:46 Tom Tromey 2003-03-24 15:23 bangerth 2003-03-22 18:09 bangerth
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=20030323000601.17972.qmail@sources.redhat.com \ --to=rsdio@metastatic.org \ --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).