Add some missing functions. Make sure to handle calls together in case the

client has another VN implementation that can VN calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12427 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2004-03-16 03:41:35 +00:00
parent 002dbddccd
commit 002be76733
2 changed files with 21 additions and 3 deletions

View File

@ -607,6 +607,17 @@ static const char *DoesntAccessMemoryTable[] = {
"iswctype", "towctrans", "towlower", "towupper",
"btowc", "wctob",
"isinf", "isnan", "finite",
// C99 math functions
"copysign", "copysignf", "copysignd",
"nexttoward", "nexttowardf", "nexttowardd",
"nextafter", "nextafterf", "nextafterd",
// glibc functions:
"__fpclassify", "__fpclassifyf", "__fpclassifyl",
"__signbit", "__signbitf", "__signbitl",
};
static const unsigned DAMTableSize =
@ -636,16 +647,23 @@ bool BasicAliasAnalysis::doesNotAccessMemory(Function *F) {
static const char *OnlyReadsMemoryTable[] = {
"atoi", "atol", "atof", "atoll", "atoq",
"bcmp", "memcmp", "memchr", "wmemcmp", "wmemchr",
"atoi", "atol", "atof", "atoll", "atoq", "a64l",
"bcmp", "memcmp", "memchr", "memrchr", "wmemcmp", "wmemchr",
// Strings
"strcmp", "strcasecmp", "strcoll", "strncmp", "strncasecmp",
"strchr", "strcspn", "strlen", "strpbrk", "strrchr", "strspn", "strstr",
"index", "rindex",
// Wide char strings
"wcschr", "wcscmp", "wcscoll", "wcscspn", "wcslen", "wcsncmp", "wcspbrk",
"wcsrchr", "wcsspn", "wcsstr",
// glibc
"alphasort", "alphasort64", "versionsort", "versionsort64",
// C99
"nan", "nanf", "nand",
};
static const unsigned ORMTableSize =

View File

@ -247,7 +247,7 @@ void LoadVN::getEqualNumberNodes(Value *V,
if (!isa<LoadInst>(V)) {
if (CallInst *CI = dyn_cast<CallInst>(V))
return getCallEqualNumberNodes(CI, RetVals);
getCallEqualNumberNodes(CI, RetVals);
// Not a load instruction? Just chain to the base value numbering
// implementation to satisfy the request...