[llvm] [LLVM][Attribute/DataLayout] Assert failed parse / Test for self assignment (NFCI) (PR #169711)
JP Hafer via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 26 10:56:49 PST 2025
https://github.com/jph-13 created https://github.com/llvm/llvm-project/pull/169711
Up-streaming more static analysis findings.
In Attributes.cpp:
Local variable CallerStackProbeSize "could" be read before it is initialized. -> added assertion
In DataLayout.cpp:
DataLayout doesn't test for self assignment. -> added
>From 6c4c34dc1c0a4e1a1daf52d7bebf0dd30b9a6db0 Mon Sep 17 00:00:00 2001
From: JP Hafer <jhafer at mathworks.com>
Date: Wed, 26 Nov 2025 13:47:43 -0500
Subject: [PATCH] [Attribute/DataLayout] Assert for failed integer parse / Test
for self assignment. (NFCI)
---
llvm/lib/IR/Attributes.cpp | 8 ++++++--
llvm/lib/IR/DataLayout.cpp | 3 +++
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/llvm/lib/IR/Attributes.cpp b/llvm/lib/IR/Attributes.cpp
index 4ac2ebd55dcac..ca2488a761141 100644
--- a/llvm/lib/IR/Attributes.cpp
+++ b/llvm/lib/IR/Attributes.cpp
@@ -2605,8 +2605,12 @@ adjustCallerStackProbeSize(Function &Caller, const Function &Callee) {
Attribute CallerAttr = Caller.getFnAttribute("stack-probe-size");
if (CallerAttr.isValid()) {
uint64_t CallerStackProbeSize, CalleeStackProbeSize;
- CallerAttr.getValueAsString().getAsInteger(0, CallerStackProbeSize);
- CalleeAttr.getValueAsString().getAsInteger(0, CalleeStackProbeSize);
+ bool CallerParseError =
+ CallerAttr.getValueAsString().getAsInteger(0, CallerStackProbeSize);
+ bool CalleeParseError =
+ CalleeAttr.getValueAsString().getAsInteger(0, CalleeStackProbeSize);
+ assert((!CallerParseError && !CalleeParseError) &&
+ "Failed to parse stack-probe-size as integer");
if (CallerStackProbeSize > CalleeStackProbeSize) {
Caller.addFnAttr(CalleeAttr);
diff --git a/llvm/lib/IR/DataLayout.cpp b/llvm/lib/IR/DataLayout.cpp
index 49e1f898ca594..3553e788f7793 100644
--- a/llvm/lib/IR/DataLayout.cpp
+++ b/llvm/lib/IR/DataLayout.cpp
@@ -210,6 +210,9 @@ DataLayout::DataLayout(StringRef LayoutString) : DataLayout() {
}
DataLayout &DataLayout::operator=(const DataLayout &Other) {
+ if (this == &Other)
+ return *this;
+
delete static_cast<StructLayoutMap *>(LayoutMap);
LayoutMap = nullptr;
StringRepresentation = Other.StringRepresentation;
More information about the llvm-commits
mailing list