------- 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