public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: java/8204: gcj -O2 to native reorders certain instructions improperly.
@ 2003-03-22 18:09 bangerth
0 siblings, 0 replies; 4+ messages in thread
From: bangerth @ 2003-03-22 18:09 UTC (permalink / raw)
To: gcc-bugs, gcc-prs, java-prs, nobody, rsdio
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?
W.
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8204
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: java/8204: gcj -O2 to native reorders certain instructions improperly.
@ 2003-03-25 22:46 Tom Tromey
0 siblings, 0 replies; 4+ messages in thread
From: Tom Tromey @ 2003-03-25 22:46 UTC (permalink / raw)
To: nobody; +Cc: gcc-prs
The following reply was made to PR java/8204; it has been noted by GNATS.
From: Tom Tromey <tromey@redhat.com>
To: bangerth@dealii.org
Cc: gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, java-prs@gcc.gnu.org,
nobody@gcc.gnu.org, rsdio@metastatic.org, gcc-gnats@gcc.gnu.org
Subject: Re: java/8204: gcj -O2 to native reorders certain instructions improperly.
Date: 25 Mar 2003 15:36:42 -0700
>>>>> ">" == bangerth <bangerth@dealii.org> writes:
>> (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?
Yes, Java specifies left-to-right evaluation in this situation.
Chances are that this bug is fixed, but I haven't tried it.
Tom
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: java/8204: gcj -O2 to native reorders certain instructions improperly.
@ 2003-03-24 15:23 bangerth
0 siblings, 0 replies; 4+ messages in thread
From: bangerth @ 2003-03-24 15:23 UTC (permalink / raw)
To: gcc-bugs, gcc-prs, java-prs, nobody, rsdio
Synopsis: gcj -O2 to native reorders certain instructions improperly.
State-Changed-From-To: feedback->open
State-Changed-By: bangerth
State-Changed-When: Mon Mar 24 15:16:42 2003
State-Changed-Why:
Leave this to the Java experts
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8204
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: java/8204: gcj -O2 to native reorders certain instructions improperly.
@ 2003-03-23 0:06 Casey Marshall
0 siblings, 0 replies; 4+ messages in thread
From: Casey Marshall @ 2003-03-23 0:06 UTC (permalink / raw)
To: nobody; +Cc: gcc-prs
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-----
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2003-03-25 22:46 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-03-22 18:09 java/8204: gcj -O2 to native reorders certain instructions improperly bangerth
2003-03-23 0:06 Casey Marshall
2003-03-24 15:23 bangerth
2003-03-25 22:46 Tom Tromey
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).