[PATCH] D101440: [DSE] Eliminate store after calloc (PR50143)

Dávid Bolvanský via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 28 07:05:35 PDT 2021


xbolva00 added inline comments.


================
Comment at: llvm/lib/Analysis/AliasAnalysis.cpp:241
   if (onlyAccessesInaccessibleMem(MRB))
-    return ModRefInfo::NoModRef;
+    return isAllocLikeFn(Call, &TLI) ? ModRefInfo::Mod : ModRefInfo::NoModRef;
 
----------------
fhahn wrote:
> From this workaround, it seems like how `inaccessiblememonly` is used for `calloc` does not completely match AA's interpretation. Are there other cases in the code base? I'm not sure if special casing `calloc` here is ideal. 
> 
> I think we should probably treat the `AA` change as a separate patch, with an AA only test as well, perhaps `llvm/test/Analysis/BasicAA/libfuncs.ll`?
Not only calloc, all alloc (calloc, malloc, aligned_alloc) fns have inaccessiblememonly. inaccessiblememonly was introduced long time ago but this attribute was basically dead, no libfunc used it until recently.


Sadly, inaccessiblememonly is somehow broken nowdays as the code assumes that such call does not write or read memory, but of course it returns memory.

This AA change can be separated patch (but this DSE needs it as a prerequisite)


Another solution is removal of inaccessiblememonly from alloc fns, as it caused more harm then improvements.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D101440/new/

https://reviews.llvm.org/D101440



More information about the llvm-commits mailing list