fold-const (fold_unary_loc): New case.

* fold-const (fold_unary_loc) <NON_LVALUE_EXPR>: New case.
	<CASE_CONVERT>: Pass arg0 instead of op0 to fold_convert_const.

From-SVN: r210518
This commit is contained in:
Eric Botcazou 2014-05-16 16:59:38 +00:00 committed by Eric Botcazou
parent 53caffbe8d
commit 8b628e86ec
2 changed files with 11 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2014-05-16 Eric Botcazou <ebotcazou@adacore.com>
* fold-const (fold_unary_loc) <NON_LVALUE_EXPR>: New case.
<CASE_CONVERT>: Pass arg0 instead of op0 to fold_convert_const.
2014-05-16 Richard Biener <rguenther@suse.de>
PR tree-optimization/61194

View File

@ -7850,6 +7850,11 @@ fold_unary_loc (location_t loc, enum tree_code code, tree type, tree op0)
return fold_convert_loc (loc, type, op0);
return NULL_TREE;
case NON_LVALUE_EXPR:
if (!maybe_lvalue_p (op0))
return fold_convert_loc (loc, type, op0);
return NULL_TREE;
CASE_CONVERT:
case FLOAT_EXPR:
case FIX_TRUNC_EXPR:
@ -8113,7 +8118,7 @@ fold_unary_loc (location_t loc, enum tree_code code, tree type, tree op0)
}
}
tem = fold_convert_const (code, type, op0);
tem = fold_convert_const (code, type, arg0);
return tem ? tem : NULL_TREE;
case ADDR_SPACE_CONVERT_EXPR: