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>
|
||||
|
||||
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>
|
||||
|
||||
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
|
||||
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;
|
||||
|
||||
*var = exp;
|
||||
*off = ssize_int (0);
|
||||
STRIP_NOPS (exp);
|
||||
|
||||
if (tree_is_chrec (exp)
|
||||
|| get_gimple_rhs_class (TREE_CODE (exp)) == GIMPLE_TERNARY_RHS)
|
||||
return;
|
||||
|
||||
otype = TREE_TYPE (exp);
|
||||
code = TREE_CODE (exp);
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue