[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