llvm-project/clang/test/SemaCXX/self-comparison.cpp
Eli Friedman 5a722e92af Add self-comparison warnings for fields.
This expands very slightly what -Wtautological-compare considers to be
tautological to include implicit accesses to C++ fields and ObjC ivars.
I don't want to turn this into a full expression-identity check, but
these additions seem pretty well-contained, and maintain the theme
of checking for "x == x".

<rdar://problem/14431127>

llvm-svn: 190118
2013-09-06 03:13:09 +00:00

24 lines
603 B
C++

// RUN: %clang_cc1 -fsyntax-only -verify %s
int foo(int x) {
return x == x; // expected-warning {{self-comparison always evaluates to true}}
}
struct X {
bool operator==(const X &x);
};
struct A {
int x;
X x2;
int a[3];
int b[3];
bool f() { return x == x; } // expected-warning {{self-comparison always evaluates to true}}
bool g() { return x2 == x2; } // no-warning
bool h() { return a == b; } // expected-warning {{array comparison always evaluates to false}}
bool i() {
int c[3];
return a == c; // expected-warning {{array comparison always evaluates to false}}
}
};