From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3966 invoked by alias); 25 Nov 2014 00:47:46 -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 3918 invoked by uid 48); 25 Nov 2014 00:47:41 -0000 From: "pinskia at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/64061] [5 Regression] ICE: in gen_rtx_SUBREG, at emit-rtl.c:894 with -O2 -g -fno-dce -fno-tree-dce Date: Tue, 25 Nov 2014 00:47: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: 5.0 X-Bugzilla-Keywords: ice-on-valid-code X-Bugzilla-Severity: normal X-Bugzilla-Who: pinskia at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: pinskia at gcc dot gnu.org X-Bugzilla-Target-Milestone: 5.0 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: assigned_to 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: 2014-11/txt/msg02925.txt.bz2 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64061 Andrew Pinski changed: What |Removed |Added ---------------------------------------------------------------------------- Assignee|unassigned at gcc dot gnu.org |pinskia at gcc dot gnu.org --- Comment #3 from Andrew Pinski --- I have a fix: >>From 54e1b1c2f4ce5bc6a924dbf30adbd8f03d4bdfe8 Mon Sep 17 00:00:00 2001 From: Andrew Pinski Date: Sat, 22 Nov 2014 09:39:48 -0800 Subject: [PATCH] 2014-11-22 Andrew Pinski Bug #13244 * lra.c (lra_substitute_pseudo): Use gen_lowpart_if_possible instead of gen_rtx_SUBREG/gen_lowpart_SUBREG. --- gcc/ChangeLog.CAVIUM | 6 ++++++ gcc/lra.c | 8 +------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/gcc/ChangeLog.CAVIUM b/gcc/ChangeLog.CAVIUM index b7a633d..eb883cf 100644 --- a/gcc/ChangeLog.CAVIUM +++ b/gcc/ChangeLog.CAVIUM @@ -1,3 +1,9 @@ +2014-11-22 Andrew Pinski + + Bug #13244 + * lra.c (lra_substitute_pseudo): Use gen_lowpart_if_possible + instead of gen_rtx_SUBREG/gen_lowpart_SUBREG. + 2014-11-17 Andrew Pinski PR ipa/63981 diff --git a/gcc/lra.c b/gcc/lra.c index ec122c7..3e07339 100644 --- a/gcc/lra.c +++ b/gcc/lra.c @@ -1807,13 +1807,7 @@ lra_substitute_pseudo (rtx *loc, int old_regno, rtx new_reg) machine_mode inner_mode = GET_MODE (new_reg); if (mode != inner_mode) - { - if (GET_MODE_SIZE (mode) >= GET_MODE_SIZE (inner_mode) - || ! SCALAR_INT_MODE_P (inner_mode)) - new_reg = gen_rtx_SUBREG (mode, new_reg, 0); - else - new_reg = gen_lowpart_SUBREG (mode, new_reg); - } + new_reg = gen_lowpart_if_possible (mode, new_reg); *loc = new_reg; return true; } -- 1.7.4.1 This shows up also on aarch64-linux-gnu and mips64-linux-gnu building libgo's math.go