[clang] [ssaf][UnsafeBufferUsage] Add JSON serialization for UnsafeBufferUsage (PR #187156)
Balázs Benics via cfe-commits
cfe-commits at lists.llvm.org
Thu Apr 2 07:33:57 PDT 2026
================
@@ -86,20 +90,30 @@ class UnsafeBufferUsageEntitySummary final : public EntitySummary {
const EntityPointerLevelSet UnsafeBuffers;
friend class UnsafeBufferUsageTUSummaryExtractor;
+ friend UnsafeBufferUsageEntitySummary
+ buildUnsafeBufferUsageEntitySummary(EntityPointerLevelSet);
+ friend llvm::iterator_range<EntityPointerLevelSet::const_iterator>
+ getUnsafeBuffers(const UnsafeBufferUsageEntitySummary &);
UnsafeBufferUsageEntitySummary(EntityPointerLevelSet UnsafeBuffers)
: EntitySummary(), UnsafeBuffers(std::move(UnsafeBuffers)) {}
public:
- SummaryName getSummaryName() const override {
- return SummaryName{"UnsafeBufferUsage"};
- };
+ static constexpr llvm::StringLiteral Name = "UnsafeBufferUsage";
+
+ SummaryName getSummaryName() const override { return summaryName(); };
bool operator==(const EntityPointerLevelSet &Other) const {
return UnsafeBuffers == Other;
}
+ bool operator==(const UnsafeBufferUsageEntitySummary &Other) const {
+ return UnsafeBuffers == Other.UnsafeBuffers;
+ }
+
bool empty() const { return UnsafeBuffers.empty(); }
+
+ static SummaryName summaryName() { return SummaryName{Name.data()}; }
----------------
steakhal wrote:
Grabbing the inner null-terminated ptr has the downside that to construct a new std::string, it needs to scan for that terminator again.
By using the explicit `str` conversion function that directly passes the `size()` internally, thus it's more efficient. Not that it matters, but it's also more conventional.
```suggestion
static SummaryName summaryName() { return SummaryName{Name.str()}; }
```
https://github.com/llvm/llvm-project/pull/187156
More information about the cfe-commits
mailing list