[AA] Model operand bundles more precisely
authorNikita Popov <npopov@redhat.com>
Thu, 1 Sep 2022 14:51:00 +0000 (16:51 +0200)
committerNikita Popov <npopov@redhat.com>
Thu, 22 Sep 2022 09:15:20 +0000 (11:15 +0200)
commitab25ea6d357e0446bc53cbc6a7372fc79f24740d
treeba89fb5749099348377421cb8ff1cda5861e33f8
parentcc61c822e05c51e494c50d1e72f963750116ef08
[AA] Model operand bundles more precisely

Based on D130896, we can model operand bundles more precisely. In
addition to the baseline ModRefBehavior, a reading/clobbering operand
bundle may also read/write all locations. For example, a memcpy with
deopt bundle can read any memory, but only write argument memory.

This means that getModRefInfo() for memcpy with a pointer that does
not alias the arguments results in Ref, rather than ModRef, without
the need to implement any special handling.

Differential Revision: https://reviews.llvm.org/D130980
llvm/lib/Analysis/AliasAnalysis.cpp
llvm/lib/Analysis/BasicAliasAnalysis.cpp
llvm/test/Feature/OperandBundles/basic-aa-argmemonly.ll