Author: rsmith Date: Tue Jul 24 14:18:30 2018 New Revision: 337857 URL: http://llvm.org/viewvc/llvm-project?rev=337857&view=rev Log: Don't lifetime-extend or track lifetime problems through the LHS of '->*'.
Fixes a false-positive warning found by selfhost. Modified: cfe/trunk/lib/AST/Expr.cpp cfe/trunk/test/SemaCXX/return-stack-addr.cpp Modified: cfe/trunk/lib/AST/Expr.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Expr.cpp?rev=337857&r1=337856&r2=337857&view=diff ============================================================================== --- cfe/trunk/lib/AST/Expr.cpp (original) +++ cfe/trunk/lib/AST/Expr.cpp Tue Jul 24 14:18:30 2018 @@ -108,7 +108,7 @@ const Expr *Expr::skipRValueSubobjectAdj } } } else if (const BinaryOperator *BO = dyn_cast<BinaryOperator>(E)) { - if (BO->isPtrMemOp()) { + if (BO->getOpcode() == BO_PtrMemD) { assert(BO->getRHS()->isRValue()); E = BO->getLHS(); const MemberPointerType *MPT = Modified: cfe/trunk/test/SemaCXX/return-stack-addr.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/return-stack-addr.cpp?rev=337857&r1=337856&r2=337857&view=diff ============================================================================== --- cfe/trunk/test/SemaCXX/return-stack-addr.cpp (original) +++ cfe/trunk/test/SemaCXX/return-stack-addr.cpp Tue Jul 24 14:18:30 2018 @@ -157,3 +157,9 @@ void ret_from_lambda() { (void) [&]() -> int& { int &a = b; return a; }; (void) [=]() mutable -> int& { int &a = b; return a; }; } + +namespace mem_ptr { + struct X {}; + int X::*f(); + int &r(X *p) { return p->*f(); } +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits