]> granicus.if.org Git - clang/commit
Implement -Wself-assign, which warns on code such as:
authorChandler Carruth <chandlerc@gmail.com>
Tue, 4 Jan 2011 06:52:15 +0000 (06:52 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Tue, 4 Jan 2011 06:52:15 +0000 (06:52 +0000)
commit9f7a6eeee441bcbb1b17208cb3abd65a0017525a
treeb5300481faa1ce3f47e23d2887b1db7f6591c85a
parentb2b5cc0cf908d516a107d373db963f692449a8a8
Implement -Wself-assign, which warns on code such as:

  int x = 42;
  x = x;  // Warns here.

The warning avoids macro expansions, templates, user-defined assignment
operators, and volatile types, so false positives are expected to be low.

The common (mis-)use of this code pattern is to silence unused variable
warnings, but a more idiomatic way of doing that is '(void)x;'.
A follow-up to this will add a note and fix-it hint suggesting this
replacement in cases where the StmtExpr consists precisely of the self
assignment.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122804 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Basic/DiagnosticGroups.td
include/clang/Basic/DiagnosticSemaKinds.td
lib/Sema/SemaExpr.cpp
test/SemaCXX/warn-self-assign.cpp [new file with mode: 0644]