re PR tree-optimization/83580 (Wrong code caused by vectorization)
2018-01-08 Richard Biener <rguenther@suse.de> PR middle-end/83580 * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS. * gcc.dg/torture/pr83580.c: New testcase. From-SVN: r256329
This commit is contained in:
parent
55d84e61f3
commit
3e1b80ff33
|
@ -1,3 +1,8 @@
|
||||||
|
2018-01-08 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR middle-end/83580
|
||||||
|
* tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
|
||||||
|
|
||||||
2018-01-08 Richard Biener <rguenther@suse.de>
|
2018-01-08 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
PR middle-end/83517
|
PR middle-end/83517
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2018-01-08 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR middle-end/83580
|
||||||
|
* gcc.dg/torture/pr83580.c: New testcase.
|
||||||
|
|
||||||
2018-01-08 Richard Biener <rguenther@suse.de>
|
2018-01-08 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
PR middle-end/83517
|
PR middle-end/83517
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
/* { dg-do run } */
|
||||||
|
|
||||||
|
int a[2] = { 0, 1 };
|
||||||
|
int x = 129;
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
volatile int v = 0;
|
||||||
|
int t = x, i;
|
||||||
|
for (i = 0; i < 1 + v + v + v + v + v + v + v + v + a[a[0]]; i++)
|
||||||
|
t = a[(signed char) (130 - x)];
|
||||||
|
if (t != 1)
|
||||||
|
__builtin_abort ();
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -723,23 +723,21 @@ split_constant_offset_1 (tree type, tree op0, enum tree_code code, tree op1,
|
||||||
void
|
void
|
||||||
split_constant_offset (tree exp, tree *var, tree *off)
|
split_constant_offset (tree exp, tree *var, tree *off)
|
||||||
{
|
{
|
||||||
tree type = TREE_TYPE (exp), otype, op0, op1, e, o;
|
tree type = TREE_TYPE (exp), op0, op1, e, o;
|
||||||
enum tree_code code;
|
enum tree_code code;
|
||||||
|
|
||||||
*var = exp;
|
*var = exp;
|
||||||
*off = ssize_int (0);
|
*off = ssize_int (0);
|
||||||
STRIP_NOPS (exp);
|
|
||||||
|
|
||||||
if (tree_is_chrec (exp)
|
if (tree_is_chrec (exp)
|
||||||
|| get_gimple_rhs_class (TREE_CODE (exp)) == GIMPLE_TERNARY_RHS)
|
|| get_gimple_rhs_class (TREE_CODE (exp)) == GIMPLE_TERNARY_RHS)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
otype = TREE_TYPE (exp);
|
|
||||||
code = TREE_CODE (exp);
|
code = TREE_CODE (exp);
|
||||||
extract_ops_from_tree (exp, &code, &op0, &op1);
|
extract_ops_from_tree (exp, &code, &op0, &op1);
|
||||||
if (split_constant_offset_1 (otype, op0, code, op1, &e, &o))
|
if (split_constant_offset_1 (type, op0, code, op1, &e, &o))
|
||||||
{
|
{
|
||||||
*var = fold_convert (type, e);
|
*var = e;
|
||||||
*off = o;
|
*off = o;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue