From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16656 invoked by alias); 26 Dec 2012 19:37:29 -0000 Received: (qmail 16530 invoked by uid 22791); 26 Dec 2012 19:37:27 -0000 X-SWARE-Spam-Status: No, hits=-1.2 required=5.0 tests=AWL,BAYES_00,KAM_STOCKGEN,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from hiauly1.hia.nrc.ca (HELO hiauly1.hia.nrc.ca) (132.246.10.84) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 26 Dec 2012 19:37:22 +0000 Received: by hiauly1.hia.nrc.ca (Postfix, from userid 1000) id 794DC50EA; Wed, 26 Dec 2012 14:37:19 -0500 (EST) Date: Wed, 26 Dec 2012 19:37:00 -0000 From: John David Anglin To: gcc-patches@gcc.gnu.org Subject: [committed] Fix ICE in gen_reg_rtx, at emit-rtl.c:864/865 compiling GNU MPFR Message-ID: <20121226193718.GA25173@hiauly1.hia.nrc.ca> Reply-To: John David Anglin MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.16 (2007-06-09) Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2012-12/txt/msg01412.txt.bz2 The attached change fixes PR target/5379. ICE occurs when reload tries to emit a move instruction containing a TLS symbol reference as the source operand. This requires several scratch registers. As a result, it isn't possible for a reload pattern to handle this case. So, the best solution was to reject TLS symbol reference source operands after reload starts. Tested on hppa-unknown-linux-gnu and hppa2.0w-hp-hpux11.11 with not observed regressions. Committed to all active branches. Dave -- J. David Anglin dave.anglin@nrc-cnrc.gc.ca National Research Council of Canada (613) 990-0752 (FAX: 952-6602) 2012-12-25 John David Anglin PR target/53789 * config/pa/pa.md (movsi): Reject expansion of TLS symbol references after reload starts. Index: config/pa/pa.md =================================================================== --- config/pa/pa.md (revision 194709) +++ config/pa/pa.md (working copy) @@ -2051,6 +2110,12 @@ "" " { + /* A TLS symbol reference is not a valid move source operand. + pa_emit_move_sequence can only handle them prior to reload. + There is also no way to reload a TLS symbol reference, so + we must reject them after reload starts. */ + if (PA_SYMBOL_REF_TLS_P (operands[1]) && !can_create_pseudo_p ()) + FAIL; if (pa_emit_move_sequence (operands, SImode, 0)) DONE; }")