diff options
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)) |