-
- Downloads
Generalise ((X /[ex] A) +- B) * A -> X +- A * B rule
match.pd had a rule to simplify ((X /[ex] A) +- B) * A -> X +- A * B when A and B are INTEGER_CSTs. This patch extends it to handle the case where the outer multiplication is by a factor of A, not just A itself. It also handles addition and multiplication of poly_ints. (Exact division by a poly_int seems unlikely.) gcc/ * match.pd: Generalise ((X /[ex] A) +- B) * A -> X +- A * B rule to ((X /[ex] C1) +- C2) * (C1 * C3) -> (X * C3) +- (C1 * C2 * C3). gcc/testsuite/ * gcc.dg/tree-ssa/mulexactdiv-5.c: New test. * gcc.dg/tree-ssa/mulexactdiv-6.c: Likewise. * gcc.dg/tree-ssa/mulexactdiv-7.c: Likewise. * gcc.dg/tree-ssa/mulexactdiv-8.c: Likewise. * gcc.target/aarch64/sve/cnt_fold_3.c: Likewise.
Showing
- gcc/match.pd 24 additions, 14 deletionsgcc/match.pd
- gcc/testsuite/gcc.dg/tree-ssa/mulexactdiv-5.c 29 additions, 0 deletionsgcc/testsuite/gcc.dg/tree-ssa/mulexactdiv-5.c
- gcc/testsuite/gcc.dg/tree-ssa/mulexactdiv-6.c 59 additions, 0 deletionsgcc/testsuite/gcc.dg/tree-ssa/mulexactdiv-6.c
- gcc/testsuite/gcc.dg/tree-ssa/mulexactdiv-7.c 22 additions, 0 deletionsgcc/testsuite/gcc.dg/tree-ssa/mulexactdiv-7.c
- gcc/testsuite/gcc.dg/tree-ssa/mulexactdiv-8.c 20 additions, 0 deletionsgcc/testsuite/gcc.dg/tree-ssa/mulexactdiv-8.c
- gcc/testsuite/gcc.target/aarch64/sve/cnt_fold_3.c 40 additions, 0 deletionsgcc/testsuite/gcc.target/aarch64/sve/cnt_fold_3.c
Loading
Please register or sign in to comment