From: H.J. Lu Date: Wed, 25 Feb 2009 18:49:28 +0000 (-0800) Subject: re PR rtl-optimization/39241 (ICE in subreg_get_info, at rtlanal.c:3104) X-Git-Tag: releases/gcc-4.4.0~434 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8592acaf3c88a198bbb27a541608486bf682569a;p=thirdparty%2Fgcc.git re PR rtl-optimization/39241 (ICE in subreg_get_info, at rtlanal.c:3104) gcc/ 2008-02-25 H.J. Lu PR rtl-optimization/39241 * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls to subreg_offset_representable_p. gcc/testsuite/ 2008-02-25 H.J. Lu PR rtl-optimization/39241 * gcc.dg/torture/pr39241.c: New. From-SVN: r144430 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2b02471d1bd6..94c16afd47d6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2008-02-25 H.J. Lu + + PR rtl-optimization/39241 + * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls + to subreg_offset_representable_p. + 2009-02-25 Paolo Bonzini * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass @@ -44,7 +50,7 @@ * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs. 2009-02-24 Richard Guenther - Zdenek Dvorak + Zdenek Dvorak PR tree-optimization/39233 * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers diff --git a/gcc/jump.c b/gcc/jump.c index 4f598220dffc..2b9a9545223b 100644 --- a/gcc/jump.c +++ b/gcc/jump.c @@ -1,6 +1,6 @@ /* Optimize jump instructions, for GNU compiler. Copyright (C) 1987, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997 - 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008 + 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of GCC. @@ -1563,11 +1563,6 @@ rtx_renumbered_equal_p (const_rtx x, const_rtx y) GET_MODE (x)); byte_x = 0; } - else if (!subreg_offset_representable_p (reg_x, - GET_MODE (SUBREG_REG (x)), - byte_x, - GET_MODE (x))) - return 0; } else { @@ -1594,11 +1589,6 @@ rtx_renumbered_equal_p (const_rtx x, const_rtx y) GET_MODE (y)); byte_y = 0; } - else if (!subreg_offset_representable_p (reg_y, - GET_MODE (SUBREG_REG (y)), - byte_y, - GET_MODE (y))) - return 0; } else { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4e54e54b06de..ab3f4d8e0b7d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,4 +1,10 @@ +2008-02-25 H.J. Lu + + PR rtl-optimization/39241 + * gcc.dg/torture/pr39241.c: New. + 2009-02-25 Martin Jambor + PR tree-optimizations/39259 * g++.dg/torture/pr39259.C: New testcase. @@ -8,7 +14,7 @@ * g++.dg/template/instantiate10.C: New testcase. 2009-02-24 Richard Guenther - Zdenek Dvorak + Zdenek Dvorak PR tree-optimization/39233 * gcc.c-torture/execute/pr39233.c: New testcase. diff --git a/gcc/testsuite/gcc.dg/torture/pr39241.c b/gcc/testsuite/gcc.dg/torture/pr39241.c new file mode 100644 index 000000000000..860a04d738aa --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr39241.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-w" } */ + +static inline int +foo (float f) +{ + return *((int *) &f) - 1; +} + +float +bar (float x, float y, float *z) +{ + float c = y < 0.002f ? 0.002f : y; + float d = x < c ? c : x; + return z[foo (c)] + z[foo (d * 255.0f)]; +}