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-----
 


             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: link
Be 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).