[llvm] Enhance TLI detection of __size_returning_new lib funcs. (PR #102391)
Snehasish Kumar via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 9 09:02:11 PDT 2024
================
@@ -1049,6 +1049,50 @@ static bool matchType(FuncArgTypeID ArgTy, const Type *Ty, unsigned IntBits,
llvm_unreachable("Invalid type");
}
+static bool isValidProtoForSizeReturningNew(const FunctionType &FTy, LibFunc F,
+ const Module &M,
+ int SizeTSizeBits) {
+ switch (F) {
+ case LibFunc_size_returning_new: {
+ if (FTy.getNumParams() != 1 ||
+ !FTy.getParamType(0)->isIntegerTy(SizeTSizeBits)) {
+ return false;
+ }
+ } break;
+ case LibFunc_size_returning_new_hot_cold: {
+ if (FTy.getNumParams() != 2 ||
+ !FTy.getParamType(0)->isIntegerTy(SizeTSizeBits) ||
+ !FTy.getParamType(1)->isIntegerTy(8)) {
+ return false;
+ }
+ } break;
+ case LibFunc_size_returning_new_aligned: {
+ if (FTy.getNumParams() != 2 ||
+ !FTy.getParamType(0)->isIntegerTy(SizeTSizeBits) ||
+ !FTy.getParamType(1)->isIntegerTy(SizeTSizeBits)) {
+ return false;
+ }
+ } break;
+ case LibFunc_size_returning_new_aligned_hot_cold:
+ if (FTy.getNumParams() != 3 ||
+ !FTy.getParamType(0)->isIntegerTy(SizeTSizeBits) ||
+ !FTy.getParamType(1)->isIntegerTy(SizeTSizeBits) ||
+ !FTy.getParamType(2)->isIntegerTy(8)) {
+ return false;
+ }
+ break;
+ default:
+ return false;
+ }
+
+ auto &Context = M.getContext();
+ llvm::Type *I8Ty = Type::getInt8Ty(Context);
+ llvm::PointerType *I8PtrTy = PointerType::get(I8Ty, 0);
----------------
snehasish wrote:
Done.
https://github.com/llvm/llvm-project/pull/102391
More information about the llvm-commits
mailing list