diff options
author | Michael Zolotukhin <mzolotukhin@apple.com> | 2015-03-02 23:24:40 +0000 |
---|---|---|
committer | Michael Zolotukhin <mzolotukhin@apple.com> | 2015-03-02 23:24:40 +0000 |
commit | 21abdf983a5fe060307e544dcee3cff888436304 (patch) | |
tree | 2c311b328a235b67a15ce345796ffda95eca5ef7 /llvm/lib/Analysis/TargetLibraryInfo.cpp | |
parent | dbd7f2740c97cc94460ac583c8cffaf7cdb760f2 (diff) | |
download | llvm-21abdf983a5fe060307e544dcee3cff888436304.zip llvm-21abdf983a5fe060307e544dcee3cff888436304.tar.gz llvm-21abdf983a5fe060307e544dcee3cff888436304.tar.bz2 |
TLI: Factor out sanitizeFunctionName. NFC.
llvm-svn: 231034
Diffstat (limited to 'llvm/lib/Analysis/TargetLibraryInfo.cpp')
-rw-r--r-- | llvm/lib/Analysis/TargetLibraryInfo.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/llvm/lib/Analysis/TargetLibraryInfo.cpp b/llvm/lib/Analysis/TargetLibraryInfo.cpp index e1b028e..5ebd126 100644 --- a/llvm/lib/Analysis/TargetLibraryInfo.cpp +++ b/llvm/lib/Analysis/TargetLibraryInfo.cpp @@ -714,20 +714,28 @@ TargetLibraryInfoImpl &TargetLibraryInfoImpl::operator=(TargetLibraryInfoImpl && return *this; } -bool TargetLibraryInfoImpl::getLibFunc(StringRef funcName, - LibFunc::Func &F) const { - const char **Start = &StandardNames[0]; - const char **End = &StandardNames[LibFunc::NumLibFuncs]; - +static StringRef sanitizeFunctionName(StringRef funcName) { // Filter out empty names and names containing null bytes, those can't be in // our table. if (funcName.empty() || funcName.find('\0') != StringRef::npos) - return false; + return StringRef(); // Check for \01 prefix that is used to mangle __asm declarations and // strip it if present. if (funcName.front() == '\01') funcName = funcName.substr(1); + return funcName; +} + +bool TargetLibraryInfoImpl::getLibFunc(StringRef funcName, + LibFunc::Func &F) const { + const char **Start = &StandardNames[0]; + const char **End = &StandardNames[LibFunc::NumLibFuncs]; + + funcName = sanitizeFunctionName(funcName); + if (funcName.empty()) + return false; + const char **I = std::lower_bound( Start, End, funcName, [](const char *LHS, StringRef RHS) { return std::strncmp(LHS, RHS.data(), RHS.size()) < 0; |