// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
// expected-no-diagnostics
struct Data {
int x;
Data *data;
};
int compare(Data &a, Data &b) {
Data *aData = a.data;
Data *bData = b.data;
// Covers the cases where both pointers are null as well as both pointing to the same buffer.
if (aData == bData)
return 0;
if (aData && !bData)
return 1;
if (!aData && bData)
return -1;
return compare(*aData, *bData); // no-warning
}