[Bug target/58442] bootstrapping vax crashes on NetBSD

martin at netbsd dot org gcc-bugzilla@gcc.gnu.org
Wed Oct 23 13:26:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58442

--- Comment #9 from Martin Husemann <martin at netbsd dot org> ---
Please correct me if I am wrong, but in the bitfield cotexts in vax.md there
are multiple places with similar constructs like:

219        && (REG_P (operands[0])
220            || ! mode_dependent_address_p (XEXP (operands[0], 0),
221                                            MEM_ADDR_SPACE (operands[0])))))

If I read the code correctly, MEM_ADDR_SPACE() might only be called if MEM_P()
is true. The expression at hand is a SUBREG, so neither REG_P() nor MEM_P() is
true, and we end up invoking MEM_ADDR_SPACE() and should cause a call to
rtl_check_failed_code1(), causing an internal error and abort. No clue why that
fails (and how).

I do not understand VAX good enough, but as THE cisc arch would expect the
moves generated here to work for subregs as well - so maybe we need to check
for REG_P() || SUBREG_P(), where SUBREG_P would be new (GET_CODE(X) ==
SUBRECT)?



More information about the Gcc-bugs mailing list