summaryrefslogtreecommitdiffstats
path: root/clang/test/Analysis/MisusedMovedObject.cpp
diff options
context:
space:
mode:
authorArtem Dergachev <artem.dergachev@gmail.com>2017-10-10 11:55:56 +0000
committerArtem Dergachev <artem.dergachev@gmail.com>2017-10-10 11:55:56 +0000
commit0f22a06b4de75d4d02741b9f39d39df1cd4e8066 (patch)
treed963f1438e0928f58f40ca2f0c8bdc343e5c79fb /clang/test/Analysis/MisusedMovedObject.cpp
parentc06bb16f1c3f08817264e21da2e09d29adc45880 (diff)
downloadbcm5719-llvm-0f22a06b4de75d4d02741b9f39d39df1cd4e8066.tar.gz
bcm5719-llvm-0f22a06b4de75d4d02741b9f39d39df1cd4e8066.zip
[analyzer] MisusedMovedObject: Fix state-resetting a base-class sub-object.
If a method is resetting the state of an object that was moved from, it should be safe to use this object again. However if the method was defined in a parent class, but used in a child class, the reset didn't happen from the checker's perspective. Differential Revision: https://reviews.llvm.org/D31538 llvm-svn: 315301
Diffstat (limited to 'clang/test/Analysis/MisusedMovedObject.cpp')
-rw-r--r--clang/test/Analysis/MisusedMovedObject.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/clang/test/Analysis/MisusedMovedObject.cpp b/clang/test/Analysis/MisusedMovedObject.cpp
index 44e055fd407..57c1ecc912b 100644
--- a/clang/test/Analysis/MisusedMovedObject.cpp
+++ b/clang/test/Analysis/MisusedMovedObject.cpp
@@ -617,3 +617,11 @@ void subRegionMoveTest() {
a.b.foo(); // no-warning
}
}
+
+class C: public A {};
+void resetSuperClass() {
+ C c;
+ C c1 = std::move(c);
+ c.clear();
+ C c2 = c; // no-warning
+}
OpenPOWER on IntegriCloud