+ /* 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

Reply via email to