re PR middle-end/45182 (Failed to build SPEC CPU 2000/2006)
PR middle-end/45182 * combine.c (make_compound_operation): Don't try to convert shifts into multiplications for modes that aren't SCALAR_INT_MODE_P. PR middle-end/45182 * gcc.c-torture/compile/pr45182.c: New test. From-SVN: r163057
This commit is contained in:
parent
fabe484df4
commit
5466d63d2d
@ -1,3 +1,9 @@
|
||||
2010-08-10 Bernd Schmidt <bernds@codesourcery.com>
|
||||
|
||||
PR middle-end/45182
|
||||
* combine.c (make_compound_operation): Don't try to convert
|
||||
shifts into multiplications for modes that aren't SCALAR_INT_MODE_P.
|
||||
|
||||
2010-08-10 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
* tree.h (get_object_alignment): Adjust prototype.
|
||||
|
@ -7093,7 +7093,9 @@ make_compound_operation (rtx x, enum rtx_code in_code)
|
||||
address, we stay there. If we have a comparison, set to COMPARE,
|
||||
but once inside, go back to our default of SET. */
|
||||
|
||||
next_code = (code == MEM || code == PLUS || code == MINUS ? MEM
|
||||
next_code = (code == MEM ? MEM
|
||||
: ((code == PLUS || code == MINUS)
|
||||
&& SCALAR_INT_MODE_P (mode)) ? MEM
|
||||
: ((code == COMPARE || COMPARISON_P (x))
|
||||
&& XEXP (x, 1) == const0_rtx) ? COMPARE
|
||||
: in_code == COMPARE ? SET : in_code);
|
||||
@ -7127,8 +7129,8 @@ make_compound_operation (rtx x, enum rtx_code in_code)
|
||||
case PLUS:
|
||||
lhs = XEXP (x, 0);
|
||||
rhs = XEXP (x, 1);
|
||||
lhs = make_compound_operation (lhs, MEM);
|
||||
rhs = make_compound_operation (rhs, MEM);
|
||||
lhs = make_compound_operation (lhs, next_code);
|
||||
rhs = make_compound_operation (rhs, next_code);
|
||||
if (GET_CODE (lhs) == MULT && GET_CODE (XEXP (lhs, 0)) == NEG
|
||||
&& SCALAR_INT_MODE_P (mode))
|
||||
{
|
||||
@ -7157,8 +7159,8 @@ make_compound_operation (rtx x, enum rtx_code in_code)
|
||||
case MINUS:
|
||||
lhs = XEXP (x, 0);
|
||||
rhs = XEXP (x, 1);
|
||||
lhs = make_compound_operation (lhs, MEM);
|
||||
rhs = make_compound_operation (rhs, MEM);
|
||||
lhs = make_compound_operation (lhs, next_code);
|
||||
rhs = make_compound_operation (rhs, next_code);
|
||||
if (GET_CODE (rhs) == MULT && GET_CODE (XEXP (rhs, 0)) == NEG
|
||||
&& SCALAR_INT_MODE_P (mode))
|
||||
{
|
||||
|
@ -1,3 +1,8 @@
|
||||
2010-08-10 Bernd Schmidt <bernds@codesourcery.com>
|
||||
|
||||
PR middle-end/45182
|
||||
* gcc.c-torture/compile/pr45182.c: New test.
|
||||
|
||||
2010-08-09 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/45236
|
||||
|
10
gcc/testsuite/gcc.c-torture/compile/pr45182.c
Normal file
10
gcc/testsuite/gcc.c-torture/compile/pr45182.c
Normal file
@ -0,0 +1,10 @@
|
||||
typedef struct TypHeader {
|
||||
struct TypHeader ** ptr;
|
||||
} *TypHandle;
|
||||
void PlainRange (TypHandle hdList, long lenList, long low, long inc)
|
||||
{
|
||||
long i;
|
||||
for (i = 1; i <= lenList; i++ )
|
||||
(((TypHandle*)((hdList)->ptr))[i] = (((TypHandle) (((long)(low + (i-1) *
|
||||
inc) << 2) + 1))));
|
||||
}
|
Loading…
Reference in New Issue
Block a user