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