================
@@ -1232,6 +1232,25 @@ void
Sema::checkFortifiedBuiltinMemoryFunction(FunctionDecl *FD,
return std::nullopt;
};
+ auto ComputeExplicitObjectSizeArgumentProduct =
+ [&](unsigned LIndex, unsigned RIndex) -> std::optional<llvm::APSInt> {
+ auto L = ComputeExplicitObjectSizeArgument(LIndex);
+ auto R = ComputeExplicitObjectSizeArgument(RIndex);
+ if (!L || !R)
+ return std::nullopt;
+
+ unsigned W =
+ 2 * std::max({L->getBitWidth(), R->getBitWidth(), SizeTypeWidth});
+
+ llvm::APSInt LE = L->extOrTrunc(W);
+ llvm::APSInt RE = R->extOrTrunc(W);
+
+ LE.setIsUnsigned(true);
+ RE.setIsUnsigned(true);
----------------
bozicrHT wrote:
You're right! It preserves signedness
https://github.com/llvm/llvm-project/pull/204337
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits