This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: BOOTSTRAP FAILURE: segementation fault in genattrtab under hpux 10.20
- To: dave at hiauly1 dot hia dot nrc dot ca (John David Anglin)
- Subject: Re: BOOTSTRAP FAILURE: segementation fault in genattrtab under hpux 10.20
- From: "John David Anglin" <dave at hiauly1 dot hia dot nrc dot ca>
- Date: Sat, 11 Nov 2000 14:30:11 -0500 (EST)
- Cc: gcc-bugs at gcc dot gnu dot org
> 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)