diff --git a/include/llvm/Target/TargetLibraryInfo.h b/include/llvm/Target/TargetLibraryInfo.h index 46f87b93b001..1863a84b6e65 100644 --- a/include/llvm/Target/TargetLibraryInfo.h +++ b/include/llvm/Target/TargetLibraryInfo.h @@ -371,6 +371,10 @@ namespace llvm { isascii, /// int isdigit(int c); isdigit, + /// void *je_mallocx(size_t size, int flags); + je_mallocx, + /// void *je_sdallocx(void *ptr, size_t size, int flags) + je_sdallocx, /// long int labs(long int j); labs, /// int lchown(const char *path, uid_t owner, gid_t group); @@ -688,6 +692,7 @@ namespace llvm { /// ssize_t write(int fildes, const void *buf, size_t nbyte); write, + NumLibFuncs }; } diff --git a/lib/Analysis/MemoryBuiltins.cpp b/lib/Analysis/MemoryBuiltins.cpp index 08b41fee4459..72f127fc959b 100644 --- a/lib/Analysis/MemoryBuiltins.cpp +++ b/lib/Analysis/MemoryBuiltins.cpp @@ -66,7 +66,8 @@ static const AllocFnsTy AllocationFnData[] = { {LibFunc::realloc, ReallocLike, 2, 1, -1}, {LibFunc::reallocf, ReallocLike, 2, 1, -1}, {LibFunc::strdup, StrDupLike, 1, -1, -1}, - {LibFunc::strndup, StrDupLike, 2, 1, -1} + {LibFunc::strndup, StrDupLike, 2, 1, -1}, + {LibFunc::je_mallocx, MallocLike, 2, 0, -1} // TODO: Handle "int posix_memalign(void **, size_t, size_t)" }; @@ -339,6 +340,8 @@ const CallInst *llvm::isFreeCall(const Value *I, const TargetLibraryInfo *TLI) { TLIFn == LibFunc::ZdaPvm || // delete[](void*, ulong) TLIFn == LibFunc::ZdaPvRKSt9nothrow_t) // delete[](void*, nothrow) ExpectedNumParams = 2; + else if (TLIFn == LibFunc::je_sdallocx) + ExpectedNumParams = 3; else return nullptr; diff --git a/lib/Target/TargetLibraryInfo.cpp b/lib/Target/TargetLibraryInfo.cpp index c0abdbd9279b..4df8092e9bd8 100644 --- a/lib/Target/TargetLibraryInfo.cpp +++ b/lib/Target/TargetLibraryInfo.cpp @@ -198,6 +198,8 @@ const char* TargetLibraryInfo::StandardNames[LibFunc::NumLibFuncs] = "iprintf", "isascii", "isdigit", + "je_mallocx", + "je_sdallocx", "labs", "lchown", "ldexp",