[PATCH] fold x << (n % C) to x << (n & C-1) if C meets power2
Segher Boessenkool
segher@kernel.crashing.org
Thu Oct 15 13:10:06 GMT 2020
Hi!
On Thu, Oct 15, 2020 at 03:52:01PM +0800, guojiufu wrote:
> I just had a check on below patch for PR66552.
> https://gcc.gnu.org/pipermail/gcc-patches/2020-February/540930.html
> It seems this patch works fine now. This patch fixes PR66552 which
> request to optimizes (x shift (n mod C)) to
> (x shift (n bit_and (C - 1))) when C is a constant and power of two.
> /* Optimize TRUNC_MOD_EXPR by a power of two into a BIT_AND_EXPR,
> i.e. "X % C" into "X & (C - 1)", if X and C are positive.
> Also optimize A % (C << N) where C is a power of 2,
> - to A & ((C << N) - 1). */
> + to A & ((C << N) - 1). And optimize "A shift (B % C)" where C
> + is a power of 2, shift operation included "<<" and ">>" and assume
> + (B % C) will not be negative as shifts negative values would be UB,
> + to "A shift (B & (C - 1))". */
Maybe this can be phrased better? Not that I have any proposed text :-/
The patch looks good to me, fwiw.
Segher
More information about the Gcc-patches
mailing list