------- Comment #2 from atgraham at gmail dot com 2006-07-27 02:47 ------- This bug appears to only happen when the compiler is built with SjLj exceptions. When the compiler is built for dwarf2 exceptions, this test case (and my original problem area) are both correct:
00000000 <tryfunc()>: 0: 94 21 ff d0 stwu r1,-48(r1) 4: 7c 08 02 a6 mflr r0 8: 38 61 00 08 addi r3,r1,8 c: 90 01 00 34 stw r0,52(r1) 10: bf a1 00 24 stmw r29,36(r1) 14: 48 00 00 01 bl 14 <tryfunc()+0x14> 14: R_PPC_REL24 Command::Command() 18: 38 60 00 04 li r3,4 1c: 48 00 00 01 bl 1c <tryfunc()+0x1c> 1c: R_PPC_REL24 __cxa_allocate_exception 20: 38 00 00 01 li r0,1 24: 3c 80 00 00 lis r4,0 26: R_PPC_ADDR16_HA typeinfo for int 28: 90 03 00 00 stw r0,0(r3) 2c: 38 84 00 00 addi r4,r4,0 2e: R_PPC_ADDR16_LO typeinfo for int 30: 38 a0 00 00 li r5,0 34: 48 00 00 01 bl 34 <tryfunc()+0x34> 34: R_PPC_REL24 __cxa_throw 38: 7c 7d 1b 78 mr r29,r3 3c: 38 61 00 08 addi r3,r1,8 40: 48 00 00 01 bl 40 <tryfunc()+0x40> 40: R_PPC_REL24 Command::~Command() 44: 7f a3 eb 78 mr r3,r29 48: 48 00 00 01 bl 48 <tryfunc()+0x48> 48: R_PPC_REL24 _Unwind_Resume -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28493