This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: BOOTSTRAP FAILURE: segementation fault in genattrtab under hpux 10.20


> Dump of assembler code for function insert_insn_ent:
> 0x11c18 <insert_insn_ent>:      ldw  c(sr0,r26),rp
> 0x11c1c <insert_insn_ent+4>:    addil 0,dp,%r1
> 0x11c20 <insert_insn_ent+8>:    ldw  8(sr0,r26),r21
> 0x11c24 <insert_insn_ent+12>:   ldo 4e4(r1),r1
> 0x11c28 <insert_insn_ent+16>:   ldo 1(rp),r19
> 0x11c2c <insert_insn_ent+20>:   stw  r19,c(sr0,r26)
> 0x11c30 <insert_insn_ent+24>:   ldw  4(sr0,r25),r20
> 0x11c34 <insert_insn_ent+28>:   stw  r21,0(sr0,r25)
> 0x11c38 <insert_insn_ent+32>:   cmpib,= -1,r20,0x11c50 <insert_insn_ent+56>
> 0x11c3c <insert_insn_ent+36>:   stw  r25,8(sr0,r26)
> 0x11c40 <insert_insn_ent+40>:   ldw  0(sr0,r1),rp
> 0x11c44 <insert_insn_ent+44>:   ldo 1(rp),r19
> 0x11c48 <insert_insn_ent+48>:   bv r0(rp)
> 0x11c4c <insert_insn_ent+52>:   stw  r19,0(sr0,r1)
> 0x11c50 <insert_insn_ent+56>:   ldi 1,r19
> 0x11c54 <insert_insn_ent+60>:   b,l 0x11c40 <insert_insn_ent+40>,r0
> 0x11c58 <insert_insn_ent+64>:   stw r19,10(sr0,r26)
> End of assembler dump.
> 
> As can be seen, the return pointer rp has been used as a scratch register.
> Its value at the first return is 0.

This happens in the rnreg pass:

;; Function insert_insn_ent


Basic block 0:
Closing chain %r19 at insn 21 (terminate_write)
Closing chain %r1 at insn 37 (terminate_write)
Closing chain %r19 at insn 23 (terminate_dead)
Closing chain %r21 at insn 14 (terminate_dead)
Closing chain %r20 at insn 27 (terminate_dead)
Register %r20 (1): 27 [GENERAL_REGS] 26 [GENERAL_REGS]
Register %r21 (1): 14 [GENERAL_REGS] 13 [GENERAL_REGS]
Register %r19 (1): 23 [GENERAL_REGS] 21 [GENERAL_REGS]
Register %r1 (1): 37 [GENERAL_REGS] 55 [R1_REGS]
Register %r19 (1): 21 [GENERAL_REGS] 20 [GENERAL_REGS]
Register %r19 in insn 20, renamed as %r2

This is after reload isn't it?  I think the problem is that the machine
definition is using a "simple" return because the change occurs after
reload and hppa_can_use_return_insn_p () has been faked out.  How did
this ever work?

Dave
-- 
J. David Anglin                                  dave.anglin@nrc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6605)

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]