aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/BasicAliasAnalysis.cpp
diff options
context:
space:
mode:
authorNikita Popov <npopov@redhat.com>2022-10-27 12:00:30 +0200
committerNikita Popov <npopov@redhat.com>2022-10-27 12:01:33 +0200
commit8e5f57d738d919ff7730036cc0628b533ece7ca8 (patch)
tree347b2632ee66a0c2c2bc3763b00c8822de2cd7d0 /llvm/lib/Analysis/BasicAliasAnalysis.cpp
parent56099d242809f80984e4afa37693177484aab13d (diff)
downloadllvm-8e5f57d738d919ff7730036cc0628b533ece7ca8.zip
llvm-8e5f57d738d919ff7730036cc0628b533ece7ca8.tar.gz
llvm-8e5f57d738d919ff7730036cc0628b533ece7ca8.tar.bz2
[BasicAA] Remove redundant libcall handling
The writeonly attribute for memset_pattern16 (and other referenced libcalls) is being added by InferFunctionAttrs nowadays. No need to special-case it here.
Diffstat (limited to 'llvm/lib/Analysis/BasicAliasAnalysis.cpp')
-rw-r--r--llvm/lib/Analysis/BasicAliasAnalysis.cpp29
1 files changed, 1 insertions, 28 deletions
diff --git a/llvm/lib/Analysis/BasicAliasAnalysis.cpp b/llvm/lib/Analysis/BasicAliasAnalysis.cpp
index ed800c3..fe0426a 100644
--- a/llvm/lib/Analysis/BasicAliasAnalysis.cpp
+++ b/llvm/lib/Analysis/BasicAliasAnalysis.cpp
@@ -789,36 +789,9 @@ MemoryEffects BasicAAResult::getMemoryEffects(const Function *F) {
return getMemoryEffectsFromAttrs(F->getAttributes().getFnAttrs());
}
-/// Returns true if this is a writeonly (i.e Mod only) parameter.
-static bool isWriteOnlyParam(const CallBase *Call, unsigned ArgIdx,
- const TargetLibraryInfo &TLI) {
- if (Call->paramHasAttr(ArgIdx, Attribute::WriteOnly))
- return true;
-
- // We can bound the aliasing properties of memset_pattern16 just as we can
- // for memcpy/memset. This is particularly important because the
- // LoopIdiomRecognizer likes to turn loops into calls to memset_pattern16
- // whenever possible.
- // FIXME Consider handling this in InferFunctionAttr.cpp together with other
- // attributes.
- LibFunc F;
- if (Call->getCalledFunction() &&
- TLI.getLibFunc(*Call->getCalledFunction(), F) &&
- F == LibFunc_memset_pattern16 && TLI.has(F))
- if (ArgIdx == 0)
- return true;
-
- // TODO: memset_pattern4, memset_pattern8
- // TODO: _chk variants
- // TODO: strcmp, strcpy
-
- return false;
-}
-
ModRefInfo BasicAAResult::getArgModRefInfo(const CallBase *Call,
unsigned ArgIdx) {
- // Checking for known builtin intrinsics and target library functions.
- if (isWriteOnlyParam(Call, ArgIdx, TLI))
+ if (Call->paramHasAttr(ArgIdx, Attribute::WriteOnly))
return ModRefInfo::Mod;
if (Call->paramHasAttr(ArgIdx, Attribute::ReadOnly))