libjava/testsuite/libjava.lang/Array_3.java has failed on powerpc64-linux for
quite a while.  See
http://gcc.gnu.org/ml/gcc-testresults/2005-03/msg01215.html.  The problem is
that in

  static int baz ()
  {
    int[] x = (int[])null;
    int nn = x.length;
    return 5;
  }
...
    try
      {
        nn = baz ();
      }
    catch (NullPointerException _)
...

we have

00000000100010b0 <._ZN7Array_33bazEv>:
    100010b0:   7c 08 02 a6     mflr    r0
    100010b4:   e8 62 80 50     ld      r3,-32688(r2)
    100010b8:   f8 01 00 10     std     r0,16(r1)
    100010bc:   f8 21 ff 91     stdu    r1,-112(r1)      <-- new stack frame
    100010c0:   4b ff fc b9     bl      10000d78 <._init+0x68>
    100010c4:   e8 41 00 28     ld      r2,40(r1)
    100010c8:   39 20 00 00     li      r9,0
    100010cc:   38 21 00 70     addi    r1,r1,112        <- restore old frame
    100010d0:   38 60 00 05     li      r3,5
    100010d4:   80 09 00 08     lwz     r0,8(r9)         <-- segv here
    100010d8:   e8 01 00 10     ld      r0,16(r1)
    100010dc:   7c 08 03 a6     mtlr    r0
    100010e0:   4e 80 00 20     blr

Note that the faulting instruction has moved past the stack frame restore. 
This confuses the dwarf2 unwinder, because no dwarf2 description is emitted for
the function epilogue.  We either need a dwarf2 epilogue description or must
prevent any instruction that might cause an exception from being scheduled
after the stack frame restore.


-- 
           Summary: FAIL: Array_3 -O3 execution - bytecode->native test
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: amodra at bigpond dot net dot au
GCC target triplet: powerpc64-linux


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

Reply via email to