From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15614 invoked by alias); 11 Nov 2009 10:38:05 -0000 Received: (qmail 15476 invoked by uid 48); 11 Nov 2009 10:37:53 -0000 Date: Wed, 11 Nov 2009 10:38:00 -0000 Message-ID: <20091111103753.15475.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug middle-end/41930] [4.5 regression] cc1 SEGV compiling maxval_r16.c In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "ubizjak at gmail dot com" 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 X-SW-Source: 2009-11/txt/msg00910.txt.bz2 ------- Comment #7 from ubizjak at gmail dot com 2009-11-11 10:37 ------- We recurse with: simplify_replace_fn_rtx called, x = (expr_list:REG_DEP_TRUE (symbol_ref:DI ("_OtsGeqX") [flags 0x41]) (expr_list:REG_DEP_TRUE (mem:TF (reg/f:DI 75 [ array_3(D)->data ]) [3 S16 A128]) (expr_list:REG_DEP_TRUE (reg:TF 76) (nil)))) simplify_replace_fn_rtx called, x = (symbol_ref:DI ("_OtsGeqX") [flags 0x41]) simplify_replace_fn_rtx called, x = (expr_list:REG_DEP_TRUE (mem:TF (reg/f:DI 75 [ array_3(D)->data ]) [3 S16 A128]) (expr_list:REG_DEP_TRUE (reg:TF 76) (nil))) simplify_replace_fn_rtx called, x = (mem:TF (reg/f:DI 75 [ array_3(D)->data ]) [3 S16 A128]) simplify_replace_fn_rtx called, x = (reg/f:DI 75 [ array_3(D)->data ]) simplify_replace_fn_rtx called, x = (expr_list:REG_DEP_TRUE (reg:TF 76) (nil)) simplify_replace_fn_rtx called, x = (reg:TF 76) gcc dies in "case 'e':", recursing with (nil) from: (expr_list:REG_DEP_TRUE (reg:TF 76) (nil)) The fix is then trivial, like [no whitespace diff]: --cut here-- Index: simplify-rtx.c =================================================================== --- simplify-rtx.c (revision 154088) +++ simplify-rtx.c (working copy) @@ -489,6 +489,8 @@ simplify_replace_fn_rtx (rtx x, const_rt break; case 'e': + if (XEXP (x, i)) + { op = simplify_replace_fn_rtx (XEXP (x, i), old_rtx, fn, data); if (op != XEXP (x, i)) { @@ -496,6 +498,7 @@ simplify_replace_fn_rtx (rtx x, const_rt newx = shallow_copy_rtx (x); XEXP (newx, i) = op; } + } break; } return newx; --cut here-- -- ubizjak at gmail dot com changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |ubizjak at gmail dot com |dot org | Status|NEW |ASSIGNED Last reconfirmed|2009-11-11 10:01:06 |2009-11-11 10:37:52 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41930