mirror of git://gcc.gnu.org/git/gcc.git
fold-const.c (fold_binary_loc): Preserve side-effects of X - X when simplifying to 0.
2014-10-22 Richard Biener <rguenther@suse.de> * fold-const.c (fold_binary_loc): Preserve side-effects of X - X when simplifying to 0. * stor-layout.c (finish_bitfield_representative): Strip side-effects of evaluating the difference of two DECL_FIELD_OFFSET. From-SVN: r216575
This commit is contained in:
parent
a15d2ea8ad
commit
4d885a639e
|
|
@ -1,3 +1,10 @@
|
||||||
|
2014-10-23 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
|
* fold-const.c (fold_binary_loc): Preserve side-effects of
|
||||||
|
X - X when simplifying to 0.
|
||||||
|
* stor-layout.c (finish_bitfield_representative): Strip
|
||||||
|
side-effects of evaluating the difference of two DECL_FIELD_OFFSET.
|
||||||
|
|
||||||
2014-10-22 Richard Biener <rguenther@suse.de>
|
2014-10-22 Richard Biener <rguenther@suse.de>
|
||||||
Tobias Burnus <burnus@net-b.de>
|
Tobias Burnus <burnus@net-b.de>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10749,7 +10749,7 @@ fold_binary_loc (location_t loc,
|
||||||
|
|
||||||
if ((!FLOAT_TYPE_P (type) || !HONOR_NANS (TYPE_MODE (type)))
|
if ((!FLOAT_TYPE_P (type) || !HONOR_NANS (TYPE_MODE (type)))
|
||||||
&& operand_equal_p (arg0, arg1, 0))
|
&& operand_equal_p (arg0, arg1, 0))
|
||||||
return build_zero_cst (type);
|
return omit_one_operand_loc (loc, type, build_zero_cst (type), arg0);
|
||||||
|
|
||||||
/* A - B -> A + (-B) if B is easily negatable. */
|
/* A - B -> A + (-B) if B is easily negatable. */
|
||||||
if (negate_expr_p (arg1)
|
if (negate_expr_p (arg1)
|
||||||
|
|
|
||||||
|
|
@ -1860,6 +1860,8 @@ finish_bitfield_representative (tree repr, tree field)
|
||||||
|
|
||||||
size = size_diffop (DECL_FIELD_OFFSET (field),
|
size = size_diffop (DECL_FIELD_OFFSET (field),
|
||||||
DECL_FIELD_OFFSET (repr));
|
DECL_FIELD_OFFSET (repr));
|
||||||
|
while (TREE_CODE (size) == COMPOUND_EXPR)
|
||||||
|
size = TREE_OPERAND (size, 1);
|
||||||
gcc_assert (tree_fits_uhwi_p (size));
|
gcc_assert (tree_fits_uhwi_p (size));
|
||||||
bitsize = (tree_to_uhwi (size) * BITS_PER_UNIT
|
bitsize = (tree_to_uhwi (size) * BITS_PER_UNIT
|
||||||
+ tree_to_uhwi (DECL_FIELD_BIT_OFFSET (field))
|
+ tree_to_uhwi (DECL_FIELD_BIT_OFFSET (field))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue