BOOTSTRAP FAILURE: segementation fault in genattrtab under hpux
John David Anglin
dave@hiauly1.hia.nrc.ca
Wed Nov 15 16:12:00 GMT 2000
> > > > > 0xb8b00 <layout_type+72>: ldb r20(sr0,r3),rp
...
> > I think the reversal occurs because r3 is being used as an index register.
> > There is stuff in the machine definition like this:
> I seriously doubt it since hard_frame_pointer_rtx shouldn't have %r3 as
> its value unless %r3 really is the frame pointer. ie, if the frame pointer
> is eliminated %r3 should not be the value of hard_frame_pointer_rtx.
Here is the rtl from flow2:
(insn 34 5470 35 (set (reg:QI 19 %r19)
(mem/s:QI (plus:SI (reg:SI 19 %r19)
(reg:SI 20 %r20)) 0)) 103 {movstrsi_internal-9} (insn_list 27 (insn_list 31 (insn_list 31 (insn_list 27 (nil)))))
(expr_list:REG_DEAD (reg:SI 20 %r20)
(nil)))
Here is the rtl from dbr:
;; Insn is in multiple basic blocks
(insn:TI 34 27 35 (set (reg:QI 2 %r2)
(mem/s:QI (plus:SI (reg:SI 3 %r3)
(reg:SI 20 %r20)) 0)) 103 {movstrsi_internal-9} (insn_list 31 (insn_list 27 (nil)))
(expr_list:REG_DEAD (reg:SI 3 %r3)
(expr_list:REG_DEAD (reg:SI 20 %r20)
(nil))))
Don't see any reversal. If I counted correctly, the match in the md is:
(define_insn ""
[(set (match_operand:QI 0 "register_operand" "=r")
(mem:QI (plus:SI (match_operand:SI 1 "register_operand" "r")
(match_operand:SI 2 "basereg_operand" "r"))))]
"! TARGET_DISABLE_INDEXING"
"*
{
/* Reload can create backwards (relative to cse) unscaled index
address modes when eliminating registers and possibly for
pseudos that don't get hard registers. Deal with it. */
if (operands[1] == hard_frame_pointer_rtx
|| operands[1] == stack_pointer_rtx)
return \"{ldbx|ldb} %2(%1),%0\";
else
return \"{ldbx|ldb} %1(%2),%0\";
}"
[(set_attr "type" "load")
(set_attr "length" "4")])
This looks correct since r20 is in fact the base register. Thus, it would
appear the only way the reversal can occur is for operands[1] to match
the hard_frame_pointer_rtx. No?
Dave
--
J. David Anglin dave.anglin@nrc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6605)
More information about the Gcc-bugs
mailing list