diff options
author | Nikita Popov <npopov@redhat.com> | 2022-10-27 12:00:30 +0200 |
---|---|---|
committer | Nikita Popov <npopov@redhat.com> | 2022-10-27 12:01:33 +0200 |
commit | 8e5f57d738d919ff7730036cc0628b533ece7ca8 (patch) | |
tree | 347b2632ee66a0c2c2bc3763b00c8822de2cd7d0 /llvm/lib/Analysis/BasicAliasAnalysis.cpp | |
parent | 56099d242809f80984e4afa37693177484aab13d (diff) | |
download | llvm-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.cpp | 29 |
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)) |