summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDeclCXX.cpp
diff options
context:
space:
mode:
authorRichard Trieu <rtrieu@google.com>2014-08-27 22:15:10 +0000
committerRichard Trieu <rtrieu@google.com>2014-08-27 22:15:10 +0000
commitabf6ec45cd6454c1c3c9e29aa3367c219ddc3b7d (patch)
tree7a0fa6e4cc158db19cc2991415c3c3bc4fd6454f /clang/lib/Sema/SemaDeclCXX.cpp
parentdc498e516fb2a32df1c3b7a1dc1c8f773d73f52d (diff)
downloadbcm5719-llvm-abf6ec45cd6454c1c3c9e29aa3367c219ddc3b7d.tar.gz
bcm5719-llvm-abf6ec45cd6454c1c3c9e29aa3367c219ddc3b7d.zip
More -Wuninitialized updates
Fix r216438 to catch more complicated self-initialized in std::move. For instance, "Foo f = std::move(cond ? OtherFoo : (UNUSED_VALUE, f));" Make sure that BinaryConditionalOperator, ConditionalOperator, BinaryOperator with comma operator, and OpaqueValueExpr perform the correct usage forwarding across the three uninitialized value checkers. llvm-svn: 216627
Diffstat (limited to 'clang/lib/Sema/SemaDeclCXX.cpp')
-rw-r--r--clang/lib/Sema/SemaDeclCXX.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index 1332eac840b..081d91e0506 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -2279,11 +2279,15 @@ namespace {
if (BinaryConditionalOperator *BCO =
dyn_cast<BinaryConditionalOperator>(E)) {
- HandleValue(BCO->getCommon());
HandleValue(BCO->getFalseExpr());
return;
}
+ if (OpaqueValueExpr *OVE = dyn_cast<OpaqueValueExpr>(E)) {
+ HandleValue(OVE->getSourceExpr());
+ return;
+ }
+
if (BinaryOperator *BO = dyn_cast<BinaryOperator>(E)) {
switch (BO->getOpcode()) {
default:
@@ -2342,9 +2346,7 @@ namespace {
if (E->getNumArgs() == 1) {
if (FunctionDecl *FD = E->getDirectCallee()) {
if (FD->getIdentifier() && FD->getIdentifier()->isStr("move")) {
- if (MemberExpr *ME = dyn_cast<MemberExpr>(E->getArg(0))) {
- HandleMemberExpr(ME, false /*CheckReferenceOnly*/);
- }
+ HandleValue(E->getArg(0));
}
}
}
OpenPOWER on IntegriCloud