Commit 81162f97 by Paolo Bonzini Committed by Paolo Bonzini

re PR rtl-optimization/25890 (testsuite failure: gcc.c-torture/compile/20051228-1.c)

2006-01-23  Paolo Bonzini  <bonzini@gnu.org>

        PR rtl-optimization/25890
        PR rtl-optimization/25905
        * combine.c (expand_compound_operation, expand_field_assignment):
        Fail if the bitfield's final position is out of bounds.

From-SVN: r110170
parent 1dc8e905
2006-01-23 Paolo Bonzini <bonzini@gnu.org>
PR rtl-optimization/25890
PR rtl-optimization/25905
* combine.c (expand_compound_operation, expand_field_assignment):
Fail if the bitfield's final position is out of bounds.
2006-01-24 Ian Lance Taylor <ian@airs.com>
PR middle-end/25930
......
......@@ -5640,8 +5640,9 @@ expand_compound_operation (rtx x)
len = INTVAL (XEXP (x, 1));
pos = INTVAL (XEXP (x, 2));
/* This should stay within the object being extracted, fail. */
gcc_assert (len + pos <= GET_MODE_BITSIZE (GET_MODE (XEXP (x, 0))));
/* This should stay within the object being extracted, fail otherwise. */
if (len + pos > GET_MODE_BITSIZE (GET_MODE (XEXP (x, 0))))
return x;
if (BITS_BIG_ENDIAN)
pos = GET_MODE_BITSIZE (GET_MODE (XEXP (x, 0))) - len - pos;
......@@ -5800,9 +5801,9 @@ expand_field_assignment (rtx x)
pos = XEXP (SET_DEST (x), 2);
/* A constant position should stay within the width of INNER. */
if (GET_CODE (pos) == CONST_INT)
gcc_assert (INTVAL (pos) + len
<= GET_MODE_BITSIZE (GET_MODE (inner)));
if (GET_CODE (pos) == CONST_INT
&& INTVAL (pos) + len > GET_MODE_BITSIZE (GET_MODE (inner)))
break;
if (BITS_BIG_ENDIAN)
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment