re PR target/70941 (Test miscompiled with -O2.)
2016-05-06 Richard Biener <rguenther@suse.de> PR middle-end/70941 * fold-const.c (split_tree): Always convert to the original type before negating. * gcc.dg/torture/pr70941.c: New testcase. From-SVN: r235943
This commit is contained in:
parent
f5d6c2d81c
commit
a4f510181a
@ -1,3 +1,9 @@
|
||||
2016-05-06 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR middle-end/70941
|
||||
* fold-const.c (split_tree): Always convert to the original type
|
||||
before negating.
|
||||
|
||||
2016-05-06 Richard Biener <rguenther@suse.de>
|
||||
|
||||
* fwprop.c (fwprop): Remove duplicate cleanup_cfg call.
|
||||
|
@ -836,11 +836,10 @@ split_tree (location_t loc, tree in, tree type, enum tree_code code,
|
||||
*minus_litp = *litp, *litp = 0;
|
||||
if (neg_conp_p)
|
||||
*conp = negate_expr (*conp);
|
||||
if (neg_var_p)
|
||||
if (neg_var_p && var)
|
||||
{
|
||||
/* Convert to TYPE before negating a pointer type expr. */
|
||||
if (var && POINTER_TYPE_P (TREE_TYPE (var)))
|
||||
var = fold_convert_loc (loc, type, var);
|
||||
/* Convert to TYPE before negating. */
|
||||
var = fold_convert_loc (loc, type, var);
|
||||
var = negate_expr (var);
|
||||
}
|
||||
}
|
||||
@ -863,10 +862,12 @@ split_tree (location_t loc, tree in, tree type, enum tree_code code,
|
||||
else if (*minus_litp)
|
||||
*litp = *minus_litp, *minus_litp = 0;
|
||||
*conp = negate_expr (*conp);
|
||||
/* Convert to TYPE before negating a pointer type expr. */
|
||||
if (var && POINTER_TYPE_P (TREE_TYPE (var)))
|
||||
var = fold_convert_loc (loc, type, var);
|
||||
var = negate_expr (var);
|
||||
if (var)
|
||||
{
|
||||
/* Convert to TYPE before negating. */
|
||||
var = fold_convert_loc (loc, type, var);
|
||||
var = negate_expr (var);
|
||||
}
|
||||
}
|
||||
|
||||
return var;
|
||||
|
@ -1,3 +1,8 @@
|
||||
2016-05-06 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR middle-end/70941
|
||||
* gcc.dg/torture/pr70941.c: New testcase.
|
||||
|
||||
2016-05-05 Bin Cheng <bin.cheng@arm.com>
|
||||
|
||||
PR tree-optimization/57206
|
||||
|
14
gcc/testsuite/gcc.dg/torture/pr70941.c
Normal file
14
gcc/testsuite/gcc.dg/torture/pr70941.c
Normal file
@ -0,0 +1,14 @@
|
||||
/* { dg-do run } */
|
||||
/* { dg-require-effective-target int32plus } */
|
||||
|
||||
extern void abort (void);
|
||||
|
||||
char a = 0, b = 0, c = 0, d = 0;
|
||||
|
||||
int main()
|
||||
{
|
||||
a = -(b - 405418259) - ((d && c) ^ 2040097152);
|
||||
if (a != -109)
|
||||
abort();
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user