mirror of git://gcc.gnu.org/git/gcc.git
re PR tree-optimization/83176 ([graphite] ICE in set_codegen_error, at graphite-isl-ast-to-gimple.c:206)
2018-01-24 Richard Biener <rguenther@suse.de>
PR tree-optimization/83176
* tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
operands.
* gcc.dg/graphite/pr83176.c: New testcase.
From-SVN: r257013
This commit is contained in:
parent
da37a70f55
commit
6acfd18c39
|
|
@ -1,3 +1,9 @@
|
|||
2018-01-24 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/83176
|
||||
* tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
|
||||
operands.
|
||||
|
||||
2018-01-24 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/82819
|
||||
|
|
|
|||
|
|
@ -1,3 +1,8 @@
|
|||
2018-01-24 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/83176
|
||||
* gcc.dg/graphite/pr83176.c: New testcase.
|
||||
|
||||
2018-01-24 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/82819
|
||||
|
|
|
|||
|
|
@ -0,0 +1,42 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -floop-nest-optimize" } */
|
||||
|
||||
int wx, qi;
|
||||
|
||||
void
|
||||
yj (int gw)
|
||||
{
|
||||
int *ak = &gw;
|
||||
|
||||
while (wx != 0)
|
||||
{
|
||||
int k2 = (__INTPTR_TYPE__)&ak;
|
||||
int **xq = (int **)&k2;
|
||||
|
||||
ja:
|
||||
*xq = &gw;
|
||||
|
||||
while (qi < 1)
|
||||
{
|
||||
unsigned short int ey;
|
||||
|
||||
be:
|
||||
for (ey = 0; ey < 251; ++ey)
|
||||
{
|
||||
for (wx = 0; wx < 2; ++wx)
|
||||
{
|
||||
}
|
||||
|
||||
*ak += 8555712;
|
||||
k2 += *ak;
|
||||
}
|
||||
++qi;
|
||||
}
|
||||
}
|
||||
|
||||
gw = 1;
|
||||
if (gw != 0)
|
||||
goto ja;
|
||||
else
|
||||
goto be;
|
||||
}
|
||||
|
|
@ -295,8 +295,23 @@ chrec_fold_plus_1 (enum tree_code code, tree type,
|
|||
return chrec_fold_plus_poly_poly (code, type, op0, op1);
|
||||
|
||||
CASE_CONVERT:
|
||||
if (tree_contains_chrecs (op1, NULL))
|
||||
return chrec_dont_know;
|
||||
{
|
||||
/* We can strip sign-conversions to signed by performing the
|
||||
operation in unsigned. */
|
||||
tree optype = TREE_TYPE (TREE_OPERAND (op1, 0));
|
||||
if (INTEGRAL_TYPE_P (type)
|
||||
&& INTEGRAL_TYPE_P (optype)
|
||||
&& tree_nop_conversion_p (type, optype)
|
||||
&& TYPE_UNSIGNED (optype))
|
||||
return chrec_convert (type,
|
||||
chrec_fold_plus_1 (code, optype,
|
||||
chrec_convert (optype,
|
||||
op0, NULL),
|
||||
TREE_OPERAND (op1, 0)),
|
||||
NULL);
|
||||
if (tree_contains_chrecs (op1, NULL))
|
||||
return chrec_dont_know;
|
||||
}
|
||||
/* FALLTHRU */
|
||||
|
||||
default:
|
||||
|
|
@ -313,8 +328,23 @@ chrec_fold_plus_1 (enum tree_code code, tree type,
|
|||
}
|
||||
|
||||
CASE_CONVERT:
|
||||
if (tree_contains_chrecs (op0, NULL))
|
||||
return chrec_dont_know;
|
||||
{
|
||||
/* We can strip sign-conversions to signed by performing the
|
||||
operation in unsigned. */
|
||||
tree optype = TREE_TYPE (TREE_OPERAND (op0, 0));
|
||||
if (INTEGRAL_TYPE_P (type)
|
||||
&& INTEGRAL_TYPE_P (optype)
|
||||
&& tree_nop_conversion_p (type, optype)
|
||||
&& TYPE_UNSIGNED (optype))
|
||||
return chrec_convert (type,
|
||||
chrec_fold_plus_1 (code, optype,
|
||||
TREE_OPERAND (op0, 0),
|
||||
chrec_convert (optype,
|
||||
op1, NULL)),
|
||||
NULL);
|
||||
if (tree_contains_chrecs (op0, NULL))
|
||||
return chrec_dont_know;
|
||||
}
|
||||
/* FALLTHRU */
|
||||
|
||||
default:
|
||||
|
|
|
|||
Loading…
Reference in New Issue