Files
clang-p2996/clang/test/Analysis/PR46264.cpp
Valeriy Savchenko 9cbfdde2ea [analyzer] Fix crash with pointer to members values
This fix unifies all of the different ways we handled pointer to
members into one.  The crash was caused by the fact that the type
of pointer-to-member values was `void *`, and while this works
for the vast majority of cases it breaks when we actually need
to explain the path for the report.

rdar://problem/64202361

Differential Revision: https://reviews.llvm.org/D85817
2020-08-13 18:03:59 +03:00

36 lines
592 B
C++

// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
// rdar://problem/64202361
struct A {
int a;
struct {
struct {
int b;
union {
int c;
};
};
};
};
int testCrash() {
int *x = 0;
int A::*ap = &A::a;
if (ap) // no crash
return *x; // expected-warning{{Dereference of null pointer (loaded from variable 'x')}}
return 10;
}
int testIndirectCrash() {
int *x = 0;
int A::*cp = &A::c;
if (cp) // no crash
return *x; // expected-warning{{Dereference of null pointer (loaded from variable 'x')}}
return 10;
}