diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2012-06-15 23:51:06 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2012-06-15 23:51:06 +0000 |
commit | 13ffdd86b93ff8bf5d26bca55119982c899bb5ce (patch) | |
tree | ec73c7696eaf77d61a646cc1777c13190fb07416 /clang/lib/AST/Expr.cpp | |
parent | 38a6fbf933e707e02ac9fc5a6326fc3b4d27266a (diff) | |
download | bcm5719-llvm-13ffdd86b93ff8bf5d26bca55119982c899bb5ce.tar.gz bcm5719-llvm-13ffdd86b93ff8bf5d26bca55119982c899bb5ce.zip |
Make the ".*" operator work correctly when the base is a prvalue and the field has a non-trivial copy constructor. PR13097.
llvm-svn: 158578
Diffstat (limited to 'clang/lib/AST/Expr.cpp')
-rw-r--r-- | clang/lib/AST/Expr.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp index 5bbf7503f8e..3de4b5771a2 100644 --- a/clang/lib/AST/Expr.cpp +++ b/clang/lib/AST/Expr.cpp @@ -2376,6 +2376,10 @@ bool Expr::isTemporaryObject(ASTContext &C, const CXXRecordDecl *TempTy) const { if (isa<MemberExpr>(E)) return false; + if (const BinaryOperator *BO = dyn_cast<BinaryOperator>(E)) + if (BO->isPtrMemOp()) + return false; + // - opaque values (all) if (isa<OpaqueValueExpr>(E)) return false; |