diff options
| author | Eli Friedman <eli.friedman@gmail.com> | 2013-09-06 03:13:09 +0000 |
|---|---|---|
| committer | Eli Friedman <eli.friedman@gmail.com> | 2013-09-06 03:13:09 +0000 |
| commit | 5a722e92afe8f0c73303ff903bc0077b1eb299a8 (patch) | |
| tree | c1b23d8f8e841cbc6446645dc576bfe4a162aa5b /clang/test/SemaCXX/self-comparison.cpp | |
| parent | 01951de4623e6a8529b3219b574ad6f365fe84ae (diff) | |
| download | bcm5719-llvm-5a722e92afe8f0c73303ff903bc0077b1eb299a8.tar.gz bcm5719-llvm-5a722e92afe8f0c73303ff903bc0077b1eb299a8.zip | |
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
Diffstat (limited to 'clang/test/SemaCXX/self-comparison.cpp')
| -rw-r--r-- | clang/test/SemaCXX/self-comparison.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/self-comparison.cpp b/clang/test/SemaCXX/self-comparison.cpp new file mode 100644 index 00000000000..fb15ec84306 --- /dev/null +++ b/clang/test/SemaCXX/self-comparison.cpp @@ -0,0 +1,23 @@ +// 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}} + } +}; |

