This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix modulo patterns in match.pd
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Richard Biener <rguenther at suse dot de>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Fri, 24 Oct 2014 15:43:40 +0200
- Subject: Re: [PATCH] Fix modulo patterns in match.pd
- Authentication-results: sourceware.org; auth=none
- References: <alpine dot LSU dot 2 dot 11 dot 1410241525520 dot 9891 at zhemvz dot fhfr dot qr>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
On Fri, Oct 24, 2014 at 03:27:19PM +0200, Richard Biener wrote:
> As noted by Marc I forgot to actually utilize the iterator variable.
>
> Bootstrapped on x86_64-unknown-linux-gnu, testing in progress.
>
> Richard.
>
> PS: How do we want to refer to patterns in ChangeLogs?
Perhaps the syntax should be (simplify "name" (...) { ... })
(maybe the name being optional?), where you'd give some name to the
simplification, say "0 % X" or "0 % X => 0" or "0 % X variant 3"
or whatever, then you could easily refer to those strings in ChangeLog,
on gcc-patches, in comments etc.
> 2014-10-24 Richard Biener <rguenther@suse.de>
>
> * match.pd (0 % X): Properly use the iterator iterating over
> all modulo operators.
> (X % 1): Likewise.
>
> Index: gcc/match.pd
> ===================================================================
> --- gcc/match.pd (revision 216648)
> +++ gcc/match.pd (working copy)
> @@ -64,13 +64,13 @@ (define_predicates
> (for op (ceil_mod floor_mod round_mod trunc_mod)
> /* 0 % X is always zero. */
> (simplify
> - (trunc_mod integer_zerop@0 @1)
> + (op 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)
> + (op @0 integer_onep)
> { build_zero_cst (type); }))
>
> /* x | ~0 -> ~0 */
Jakub