Commit 4d885a63 by Richard Biener Committed by Richard Biener

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
parent a15d2ea8
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, ...@@ -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) ...@@ -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))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment