[clang] Unnamed fields (PR #132427)
Abhinav Kumar via cfe-commits
cfe-commits at lists.llvm.org
Fri Mar 21 10:17:01 PDT 2025
https://github.com/kr-2003 created https://github.com/llvm/llvm-project/pull/132427
Fixes #132001
Edit ```isNonUnionUninit``` (caller of ```isPrimitiveUninit```): Add a check before calling ```isPrimitiveUninit```
```cpp
if (isPrimitiveType(T)) {
if (I->isUnnamedBitField()) {
continue;
}
if (isPrimitiveUninit(V)) {
if (addFieldToUninits(LocalChain.add(RegularField(FR))))
ContainsUninitField = true;
}
continue;
}
```
**Test Results**
```bash
Testing Time: 221.93s
Total Discovered Tests: 991
Unsupported : 16 (1.61%)
Passed : 968 (97.68%)
Expectedly Failed: 7 (0.71%)
[100%] Built target check-clang-analysis
```
>From 72aafcc255bbcfccb3fa5317e260faf97a3dfed5 Mon Sep 17 00:00:00 2001
From: kr-2003 <kumar.kr.abhinav at gmail.com>
Date: Fri, 21 Mar 2025 20:45:11 +0530
Subject: [PATCH 1/2] [clang][analyzer] Removed warnings for unnamed bitfields
---
.../UninitializedObject/UninitializedObjectChecker.cpp | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/clang/lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObjectChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObjectChecker.cpp
index 6e1222fedad3e..bf954c3711309 100644
--- a/clang/lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObjectChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObjectChecker.cpp
@@ -332,6 +332,10 @@ bool FindUninitializedFields::isNonUnionUninit(const TypedValueRegion *R,
}
if (isPrimitiveType(T)) {
+ if (I->isUnnamedBitField()) {
+ IsAnyFieldInitialized = true;
+ continue;
+ }
if (isPrimitiveUninit(V)) {
if (addFieldToUninits(LocalChain.add(RegularField(FR))))
ContainsUninitField = true;
>From ff01085e3e7aaab4a5dd54e69b3f5be19d43001f Mon Sep 17 00:00:00 2001
From: kr-2003 <kumar.kr.abhinav at gmail.com>
Date: Fri, 21 Mar 2025 22:46:33 +0530
Subject: [PATCH 2/2] removed IsAnyFieldInitialized after isUnnamedBitField
---
.../Checkers/UninitializedObject/UninitializedObjectChecker.cpp | 1 -
1 file changed, 1 deletion(-)
diff --git a/clang/lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObjectChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObjectChecker.cpp
index bf954c3711309..bf7759975b3ec 100644
--- a/clang/lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObjectChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObjectChecker.cpp
@@ -333,7 +333,6 @@ bool FindUninitializedFields::isNonUnionUninit(const TypedValueRegion *R,
if (isPrimitiveType(T)) {
if (I->isUnnamedBitField()) {
- IsAnyFieldInitialized = true;
continue;
}
if (isPrimitiveUninit(V)) {
More information about the cfe-commits
mailing list