| Issue |
110166
|
| Summary |
[clang][StaticAnalyzer] Missing used uninit warning after incomplete zeroing out
|
| Labels |
clang:static analyzer
|
| Assignees |
|
| Reporter |
antoniofrighetto
|
Consider the following C++ code where the memset doesn't fully zero out `vec`:
```c++
#define THREADS 32
#define BLOCKS 2
int main() {
float *vec = NULL;
vec = (float *)malloc(BLOCKS * THREADS * sizeof(float));
memset(vec, 0, BLOCKS * THREADS);
for (int i = 0; i < THREADS * BLOCKS; ++i)
vec[i] += i;
printf("%f %f .. %f\n", vec[0], vec[1], vec[BLOCKS * THREADS - 1]);
free(vec);
return 0;
}
```
Both clang UninitializedValues and StaticAnalyzer checkers on trunk seemingly miss warning the uninitialized value usage.
Reduced version for UninitializedValues that GCC catches (https://godbolt.org/z/zTn6fE3Yb):
```c++
int main() {
float *vec = NULL;
vec = (float*)malloc(64);
printf("%f", vec[0]);
free(vec);
return 0;
}
```
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs