[PATCH] D103009: [DSE] Use calloc for memset+malloc
    Dawid Jurczak via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Fri Jun 11 03:48:05 PDT 2021
    
    
  
yurai007 added inline comments.
================
Comment at: llvm/test/Transforms/DeadStoreElimination/noop-stores.ll:340
+  ret i8* %call
+}
+
----------------
yurai007 wrote:
> nikic wrote:
> > As it was the motivating case, I'd also expect a test where the memset is in a different block.
> > 
> > I also don't think that the dominates() condition in your implementation is exercised by tests. Some other conditions aren'T either, for example malloc and memset having different sizes.
> > I also don't think that the dominates() condition in your implementation is exercised by tests. Some other conditions aren'T either, for example malloc and memset having different sizes.
> 
> Sure, I can add much more tests to cover more conditions.
> > As it was the motivating case, I'd also expect a test where the memset is in a different block.
>  Currently with this patch DSE cannot perform such transformation. Consider original pr25892 from https://github.com/llvm/llvm-project/blob/main/llvm/test/Transforms/InstCombine/memset-1.ll.
> IIRC the reason is that malloc block - entry doesn't have related local store to malloced memory so DSE cannot find malloc-memset pair as candidate for elimination. I can provide more details if you want but when I checked it last time I simply concluded that more effort in DSE would be needed to make it work across blocks.
> Currently with this patch DSE cannot perform such transformation.(...)
After adding original PR unit test I noticed actually now DSE can perform transformation across blocks. When I checked it before it couldn't, apparently meantime changes unlocked it. Well, that's good :) 
Repository:
  rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D103009/new/
https://reviews.llvm.org/D103009
    
    
More information about the llvm-commits
mailing list