fold-const.c (fold): The transformation "X % -Y" -> "X % Y" is only valid for TRUNC_MOD_EXPR.
* fold-const.c (fold) <TRUNC_MOD_EXPR>: The transformation "X % -Y" -> "X % Y" is only valid for TRUNC_MOD_EXPR. From-SVN: r85443
This commit is contained in:
parent
25b656e733
commit
3159762032
@ -1,3 +1,8 @@
|
||||
2004-08-02 Roger Sayle <roger@eyesopen.com>
|
||||
|
||||
* fold-const.c (fold) <TRUNC_MOD_EXPR>: The transformation "X % -Y"
|
||||
-> "X % Y" is only valid for TRUNC_MOD_EXPR.
|
||||
|
||||
2004-08-02 Gabriel Dos Reis <gdr@integrable-solutions.net>
|
||||
|
||||
* vec.h (DEF_VEC_P): Add proper cast to uses of vec_o_reserve and
|
||||
|
@ -7624,8 +7624,9 @@ fold (tree expr)
|
||||
fold_convert (type, arg0), mask));
|
||||
}
|
||||
|
||||
/* X % -C is the same as X % C (for all rounding moduli). */
|
||||
if (!TYPE_UNSIGNED (type)
|
||||
/* X % -C is the same as X % C. */
|
||||
if (code == TRUNC_MOD_EXPR
|
||||
&& !TYPE_UNSIGNED (type)
|
||||
&& TREE_CODE (arg1) == INTEGER_CST
|
||||
&& TREE_INT_CST_HIGH (arg1) < 0
|
||||
&& !flag_trapv
|
||||
@ -7634,8 +7635,9 @@ fold (tree expr)
|
||||
return fold (build2 (code, type, fold_convert (type, arg0),
|
||||
fold_convert (type, negate_expr (arg1))));
|
||||
|
||||
/* X % -Y is the same as X % Y (for all rounding moduli). */
|
||||
if (!TYPE_UNSIGNED (type)
|
||||
/* X % -Y is the same as X % Y. */
|
||||
if (code == TRUNC_MOD_EXPR
|
||||
&& !TYPE_UNSIGNED (type)
|
||||
&& TREE_CODE (arg1) == NEGATE_EXPR
|
||||
&& !flag_trapv)
|
||||
return fold (build2 (code, type, fold_convert (type, arg0),
|
||||
|
Loading…
Reference in New Issue
Block a user