DR616, and part of P0135R1: member access (or pointer-to-member access) on a
authorRichard Smith <richard-llvm@metafoo.co.uk>
Sat, 3 Dec 2016 01:14:32 +0000 (01:14 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Sat, 3 Dec 2016 01:14:32 +0000 (01:14 +0000)
commit4baaa5ab52870c3d2e1961aaa7758908ea69579e
treed0b7a59ca83d21a73fbd5a907b01941e9199da31
parent05049bed027cb37ef4afcbc6b280603e767f7971
DR616, and part of P0135R1: member access (or pointer-to-member access) on a
temporary produces an xvalue, not a prvalue. Support this by materializing the
temporary prior to performing the member access.

llvm-svn: 288563
18 files changed:
clang/include/clang/AST/Expr.h
clang/include/clang/Sema/Sema.h
clang/lib/Analysis/ThreadSafety.cpp
clang/lib/Analysis/ThreadSafetyCommon.cpp
clang/lib/Sema/SemaExpr.cpp
clang/lib/Sema/SemaExprCXX.cpp
clang/lib/Sema/SemaExprMember.cpp
clang/lib/Sema/SemaInit.cpp
clang/test/Analysis/temp-obj-dtors-cfg-output.cpp
clang/test/CXX/drs/dr4xx.cpp
clang/test/CXX/drs/dr6xx.cpp
clang/test/CXX/expr/expr.const/p2-0x.cpp
clang/test/CodeGenCXX/compound-literals.cpp
clang/test/SemaCXX/constexpr-value-init.cpp
clang/test/SemaCXX/expression-traits.cpp
clang/test/SemaObjC/assign-rvalue-message.m
clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
clang/www/cxx_dr_status.html