+ /* Same applies to modulo operations, but fold is inconsistent here
+ and simplifies 0 % x to 0, only preserving literal 0 % 0. */
+ (for op (ceil_mod floor_mod round_mod trunc_mod)
+ /* 0 % X is always zero. */
+ (simplify
+ (trunc_mod integer_zerop@0 @1)
+ /* But not for 0 % 0 so that we can get the proper warnings and errors. */
+ (if (!integer_zerop (@1))
+ @0))
+ /* X % 1 is always zero. */
+ (simplify
+ (trunc_mod @0 integer_onep)
+ { build_zero_cst (type); }))
"op" is unused, you probably meant to replace trunc_mod with it.
--
Marc Glisse