java/6820: miscompilation of (a,++a) as arguments to final method
Oskar Liljeblad
oskar@osk.mine.nu
Sun May 26 10:16:00 GMT 2002
>Number: 6820
>Category: java
>Synopsis: miscompilation of (a,++a) as arguments to final method
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sun May 26 10:16:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator: Oskar Liljeblad <oskar@osk.mine.nu>
>Release: 3.1
>Organization:
>Environment:
Linux/x86
>Description:
(Let's hope this is not a dupe...)
See the code below. With Demo compiled with gcj from source to x86 machine code, the output is "a=11 b=11". The output is correctly "a=10 b=11" when:
* compiling and running with Sun JDK 1.4 javac.
* compiling from source to .class and interpreting
with gij.
* compiling from source to .class, and .class to
machine code with gcj.
Note that this bug only happens when calling methods that are final (or in final classes).
Oskar Liljeblad (oskar@osk.mine.nu)
>How-To-Repeat:
class Demo {
public static void main(String[] args) {
Dummy d = new Dummy();
int a = 10;
d.m(a,++a);
}
}
final class Dummy {
public void m(int a, int b) {
System.out.println("a="+a+" b="+b);
}
}
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the Gcc-bugs
mailing list