From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15978 invoked by alias); 23 Oct 2013 13:26:24 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 15929 invoked by uid 48); 23 Oct 2013 13:26:20 -0000 From: "martin at netbsd dot org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/58442] bootstrapping vax crashes on NetBSD Date: Wed, 23 Oct 2013 13:26:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Version: 4.8.1 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: martin at netbsd dot org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2013-10/txt/msg01694.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58442 --- Comment #9 from Martin Husemann --- 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)?