The attached test case compiles to bytecode wrong. It should generate a
package-private accessor function in the inner class that calls the private
method, which the containing class calls. Instead, the containing class calls
the private method directly, and no trampoline is created in the inner class.

This violates access rules, and thus the test case will not run.

Steps to reproduce:
gcj -C xxx.java
gij xxx

Expected results:
A line "This is foo!" is printed.

Actual results:
An exception is thrown:
Exception in thread "main" java.lang.IllegalAccessError: xxx: xxx$blargh.foo()V
   at xxx.main(xxx.java:5)

$ gcj --version
gcj (GCC) 4.2.0 20060606 (experimental)


-- 
           Summary: Trampolines not generated for private inner class
                    methods.
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: java
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: csm at gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27925

Reply via email to