On Tue, Mar 20, 2018 at 7:18 PM, Bin Cheng <bin.ch...@arm.com> wrote:
> Hi,
> As noted in PR84969, fuse_memset_builtins breaks dependence between different 
> memsets.
> Specifically, it reorders different builtin memset partitions though it 
> doesn't merge
> them in the end.  This simple patch fixes this wrong code issue by checking 
> if any two
> builtin memsets set the same rhs value or not.  Note we don't need to bother 
> if two
> memsets intersect with each other or not.
>
> Of course, this would miss opportunity merging S1/S3 in below case:
>   memset(p+12, 0, 12);   //<-----S1
>   memset(p+17, 1, 10);
>   memset(p, 0, 12);      //<-----S3
> In my opinion, this should be resolved in a more general way maximizing 
> parallelism
> as well as merging opportunities when sorting partitions into topological 
> order from
> dependence graph, which isn't GCC8 task.
>
> Bootstrap and test on x86_64 and AArch64 ongoing.  Okay if no failures?

OK.

Richard.

> Thanks,
> bin
>
> 2018-03-20  Bin Cheng  <bin.ch...@arm.com>
>
>         PR tree-optimization/84969
>         * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
>         builtin memset partitions if they set differnt rhs values.
>
> gcc/testsuite
> 2018-03-20  Bin Cheng  <bin.ch...@arm.com>
>
>         PR tree-optimization/84969
>         * gcc.dg/tree-ssa/pr84969.c: New test.
>

Reply via email to